코딩 노트

데이터베이스 외래키 본문

Database

데이터베이스 외래키

newbyeol 2023. 8. 1. 18:56

외래키는 references 키워드를 사용한다.

ERDCloid

-- 몬스터와 속성(1대 다 관계)구현

CREATE TABLE pocketmon(

NO NUMBER PRIMARY KEY,

name varchar2(30) NOT null

);

 

CREATE TABLE pocketmon_type(

TYPE varchar2(9) NOT NULL,

NO REFERENCES pocketmon(no) --외래키(FK, Foreign Key)

);

 

INSERT INTO pocketmon(NO, name) VALUES(1, '이상해씨');

INSERT INTO pocketmon_type(TYPE, no) VALUES('풀',1);

INSERT INTO pocketmon_type(TYPE, no) VALUES('독',1);

COMMIT;

 

SELECT * FROM pocketmon WHERE NO = 1;

SELECT * FROM pocketmon_type WHERE NO = 1;

ERDCloud

CREATE TABLE quiz(

quiz_no NUMBER PRIMARY key,

quiz_content varchar(300) NOT null

);

CREATE TABLE choice(

choice_no NUMBER PRIMARY key,

choice_content varchar2(300) NOT null,

choice_correct char(1) NOT NULL,

CHECK(UPPER(choice_correct) IN ('Y', 'N')),

-- 외래키 설정시 부여 가능한 옵션

-- 아무것도 안붙이면 하위요소를 지워야 상위요소가 삭제됨

-- on delete cascade를 붙이면 상위요소를 지우면 하위요소가 자동삭제

-- on delete set null을 붙이면 상위요소를 지우면 외래키가 null로 바뀜

-- 결제와 관련된 것은 외래키를 쓰면 안 된다.

quiz_no REFERENCES quiz(quiz_no) ON DELETE CASCADE --문제를 지우면 보기가 같이 날라감

);

INSERT INTO quiz(quiz_no, quiz_content) VALUES(1,'한국의 수도는?');

INSERT INTO choice(choice_no, choice_content, choice_correct, quiz_no) VALUES(

1,'서울','Y',1);

INSERT INTO choice(choice_no, choice_content, choice_correct, quiz_no) VALUES(

2,'평양','N',1);

INSERT INTO choice(choice_no, choice_content, choice_correct, quiz_no) VALUES(

3,'홍콩','N',1);

INSERT INTO choice(choice_no, choice_content, choice_correct, quiz_no) VALUES(

4,'도쿄','N',1);

COMMIT;

SELECT * FROM quiz WHERE quiz_no = 1;

SELECT * FROM choice WHERE quiz_no = 1;

 

제 1 정규화 도메인의 원자성을 지켜라

제 2 정규화 부분 함수 종속을 제거하라(복합키)

제 3 정규화 이행함수 종속 제거(기본키를 제외한 식별자가 있으면 안 됨)

'Database' 카테고리의 다른 글

데이터베이스 - 수정  (0) 2023.07.25
데이터베이스 조회 최종 형태2(product)  (0) 2023.07.24
데이터베이스 조회 최종 형태1(member)  (0) 2023.07.24
데이터베이스6 - 모듈화  (0) 2023.07.24
데이터베이스5 - JDBC  (0) 2023.07.21