개발/교육
(데이터베이스)25일차
kakk789
2022. 4. 29. 18:12
PL/SQL 조건식
IF 조건식 THEN
...
ELSE
...
END IF
책 이름이 존재한다면 가격을 'UPDATE'
책 이름이 존재하지 않는다면 'INSERT'
CREATE OR REPLACE PROCEDURE BookInsertOrUpdate(
p_bookid IN number,
p_bookname IN VARCHAR2,
p_publisher IN varchar2,
p_price IN varchar2
)
AS
mycount NUMBER;
BEGIN
SELECT COUNT(*) INTO mycount FROM book WHERE bookname=p_bookname;
IF mycount !=0 THEN
UPDATE BOOK SET price = p_price WHERE bookname =p_bookname;
ELSE
INSERT INTO book VALUES(p_bookid, p_bookname, p_publisher, p_price);
END IF;
END;
/
주문이 발생하면 상품 테이블의 재고 수량이 감소하는 트리거
CREATE TABLE 주문(
주문번호 NUMBER PRIMARY key,
상품번호 NUMBER REFERENCES 상품(상품번호),
고객번호 NUMBER,
주문수량 NUMBER,
주문일 DATE
);
------- 주문이 발생하면 상품 테이블의 재고 수량이 감소하는 트리거 -------
CREATE OR REPLACE TRIGGER iforderedDecrease재고수량
AFTER INSERT ON 주문 FOR EACH ROW
DECLARE
BEGIN
UPDATE 상품 SET 재고수량 = 재고수량 - :NEW.주문수량
WHERE :new.상품번호 = 상품번호;
END;
/
INSERT INTO 주문 VALUES(1, 100, 1, 10, sysdate);
SELECT * FROM 상품;
SELECT * FROM 주문;
BEFORE 가 꼭 와야할 경우?
예시
자식 테이블에 INSERT가 발생하였음
헌데, INSERT 값이 부모 테이블로 반드시 참조되는 컬럼인 경우에는 부모 테이블에 없다면 추가할 수 없다.
해당 경우에는 먼저 실행되어 부모테이블에 레코드를 추가 해야 할 경우 이때에는 before 시점이 와야 한다.
PL/SQL의 대입 연산자
:= (콜론 =)
PL/SQL의 문자열 + 연산자
|| (파이프 파이프)
FUNCTION (사용자 정의함수)
- 사용자가 select 절에 사용할 수 있는 사용자가 필요한 함수를 만들 수 있음
- SUM, MAX, MIN, COUNT 이러한 함수들은 모두 select절에 사용할 수 있음
- select 절에 사용되어야 하니 반드시 반환 값이 필요
CREATE OR REPLACE FUNCTION 함수명 (매개변수명 자료형) RETURN 자료형
IS
변수선언
BEGIN
함수가 해야 할 문장(들)
RETURN 값:
END;
판매금액을 별 이익금 반환 함수
/* 판매금액을 매개변수로 전달받아 이익금을 반환하는 함수
판매금액이 30000원이상이면 10% 그렇지 않으면 5%가 이익금.*/
create or replace function margin(saleprice number)
return number
is
result number;
begin
if saleprice >= 30000 then
result := saleprice * 0.1;
else
result := saleprice * 0.05;
end if;
return result;
end;
/
SELECT orderid, saleprice, margin(saleprice) FROM orders;
데이터모델링
- 데이터베이스를 구축 전 필요한 테이블들을 도출하고 각테이블을 어떠한 속성으로 구성되는지 도출하고 각 테이블을 어떤 속성으로 관꼐가 있는지 설계하는 과정
데이터모델링 결과의 산출물
테이블 명세서
인스턴스 명세서
ERD
과정
요구사항 분석
개념적 설계
- DBMS에 독립적인 개념적 구조 설계
- 사용자의 요구사항을 분석한 결과를 ERD로 표현한다.
결과물 : ERD
논리적 설계
- DBMS에 적합한 논리적 구조 설계
결과물 : 논리적 스키마(릴레키션 스키마)
테이블 릴레이션 속성 열의 이름 도메인 속성이 취할 수 있는 값들의 집합
:
: 릴레이션에서
:
튜플 : 릴레이션에서 한행
개체 (네모)
속성 (동그라미)
관계 (마름모) - 동사로 이루어져있음
물리적 설계
DBMS로 구현 가능한 물리적 설계
결과물 : 물리적 스키마
데이터베이스 구축
정규화 (Nomalization)
데이터의 중복을 최소화하고 데이터의 안정성을 확보하기 위해 테이블을 분리하는 작업
그니까 동일 컬럼이 여러 테이블에 존재하면 안된다는 것임.
무정규화 상태 (한 테이블에 다 때려넣을 때)
추가, 삭제, 수정 시 이상현상이 발생한다
anomaly(이상 현상)
이상현상을 제가ㅓ화는 과정을 정규화라고 한다
종속관꼐를 분석하여 여러개의 릴레이션으로 분해하여 해결한다
반응형