### 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;
'IT. 컴퓨터' 카테고리의 다른 글
[오라클] 부모 컬럼 지우면 자식 컬럼 지워짐 (0) | 2020.04.17 |
---|---|
[오라클] triggger로 패스워드 바꾸기 (0) | 2020.04.17 |
[오라클] 정규화 작업 (0) | 2020.04.15 |
[오라클] 데이터의 값을 변경하기 (0) | 2020.04.15 |
[오라클] 테이블스페이스 생성 (0) | 2020.04.13 |