[오라클] DB 모델링 요령, 트리거생성, 제약조건 종류
본문 바로가기
IT. 컴퓨터

[오라클] DB 모델링 요령, 트리거생성, 제약조건 종류

by 솔기잇 2020. 4. 15.

구글 이미지

 

 

                 ### DB 모델링의 요령 ###

1. 스토리(시나리오) 작성한다.

2. 스토리(시나리오) 맞도록 DB 모델링을 한다.

3. 최종으로 설계된 DB 모델링을 가지고 자바(닷넷)으로 프로그램을 작성한다.

  

<> 영화예매를 온라인으로 가능하게끔 프로그램을 작성하고자 한다.

최씨가 부인과 아이와 함께 5 이하 관람가능한

뽀로로를 종로극장 17:00 2관에서 상영하는 영화예배를 하고자 한다.

성인2, 아동 1매로 하려고 한다.

그런데 예배 5 이상 관람 가능한 영화들이 무엇이 있는지

조회한 관전평을 보고 예매률 랭킹도 예매를 하려고 한다.

결재는 카드로, 휴대폰 결재 한다.

또한 포인트를 쌓으려고 영화사이트 회원으로 가입한다.

아님 비회원으로 예배를 있다.

 

 

## 1 : 1 관계 실습 ##

 

<< BL_MEMBER 테이블을 생성 >>

CREATE TABLE TBL_MEMBER    --부모테이블 하나를 만든다.

(ID              VARCHAR2(10)

,PASSWD       VARCHAR2(10) NOT NULL

,NAME           VARCHAR2(10)

                 CONSTRAINT TBL_MEMBER_NAME_NN NOT NULL

                 --제약조건은 이름값(ID) NOT NULL 값으로

,MPHONE         VARCHAR2(15) --NULL

,CONSTRAINT  TBL_MEMBER_ID_PK PRIMARY KEY(ID) 

--제약조건은 멤버테이블명에 프라이머리키를 걸어둔다.

);

 

 

<<TBL_LOGIN 테이블 생성>>

CREATE TABLE TBL_LOGIN

(ID              VARCHAR2(10)

,PASSWD       VARCHAR2(10)

           CONSTRAINT TBL_LOGIN_PASSWD_NN NOT NULL

,CONSTRAINT  TBL_LOGIN_ID_PK  PRIMARY KEY(ID)

);

 

 

-- *** 제약조건의 종류 *** --

Primary Key 제약조건  -- P

Unique Key 제약조건  -- U

Foreign Key 제약조건  -- R

Check 제약조건       -- C

Not Null 제약조건     -- C

 

 

-- 제약조건을 조회

SELECT *

FROM USER_CONSTRAINTS

WHERE TABLE_NAME = 'TBL_MEMBER';

 

SELECT *

FROM USER_CONS_COLUMNS

WHERE TABLE_NAME = 'TBL_MEMBER';

 

## TBL_MEMBER 테이블에 INSERT 되어진 행의 정보중 ID 컬럼과 PASSWD 컬럼의 값을

읽어다가 자동적으로 TBL_LOGIN 테이블에 INSERT 되도록 아래처럼 만든다.  ##

 

 

   !!! 중요함!! 암기할 !!

           Trigger 내에서 insert 되어진 행의 정보는 :new 들어오고

           Trigger 내에서 delete 되어진 행의 정보는 :old 들어온다.

           그리고 Trigger 내에서 update 먼저 delete 실행되어진후

            insert 되어지는 것이다.

 

구글 이미지

 

--TRIGGER 생성

CREATE OR REPLACE TRIGGER ATRI_TBL_MEMBER_INSERT

--이전 것이 있으면 만들고 아니면 교체해라

AFTER INSERT  --인써트 다음에

ON TBL_MEMBER

FOR EACH ROW  -- 위에 있는 TBL_MEMBER 테이블의 값을 읽어 온다.

BEGIN

         INSERT INTO TBL_LOGIN VALUES

         (:NEW.ID, :NEW.PASSWD);

          -- 뉴에 들어온 아이디 값과 콜론 뉴페스워드 값을 로그온에 넣어라

END;

-- ORA-01031: 권한이 불충분합니다

 

-- SYS에서 아래처럼 TRIGGER 생성할 있는 권한을 부여해준다.

GRANT CREATE TRIGGER TO NEWSCOTT;

 

-- 데이터 넣기

INSERT INTO TBL_MEMBER

VALUES('HONGKD', 'JAVA302', '홍길동', '010-777-8888');

INSERT INTO TBL_MEMBER

VALUES('LEESS', 'SUPER777', '이순신', '011-333-5454');

 

-- ROLLBACK;

 

COMMIT;


close