DBA가 되고 싶은 비공자/SQLD 자격증

[ SQLD ] DDL(Data Definition Language) 부모테이블 참조 FOREIGN KEY(외래키) 설정

차세대 IT 리더 비공자 2024. 6. 19. 00:40

 
안녕하세요 차세대 IT리더가 되고픈 비공자입니다.
오늘은 부모테이블의 PRIMARY KEY를 자식테이블에서
참조를 해서 가져오는 방식에 대해서 공부를 해보도록
하겠습니다.
 
 
[ 오늘의 목차 ]
1. 부모 대상 테이블 생성하기
2. 자식 대상 테이블 생성과 FK설정
3. FK를 설정 했을 경우, 데이터 INSERT방법
 
 
 

[ 부모 대상 테이블 생성하기 ]

지난 번 시간에 부모 테이블을 생성했었죠?
부모의 대상 테이블은 TC_CUST_INFO_BAS
고객정보기본 테이블을 부모테이블로 지정합니다.
복습 : PK생성
CONSTRAINT PK제약조건명
PRIMARY KEY(PK컬럼명);
 
 

부모 테이블을 생성만 했고, 아직 데이터를 저장하지 않아
빈 테이블로 남아 있습니다.
 
 
 

[ 자식 대상 테이블 생성과 FK설정 방법 ]

 

[ 자식 대상 테이블 생성과 FK 적용 ]

 

 

 

자식 테이블인 고객상세정보 테이블은 부모테이블
TC_CUST_INFO_BAS 부모테이블의 PK컬럼 즉,
CUST_NOCUST_ID참조해서 생성을 합니다.
 
FK 생성 부분
CONSTRAINTS FK제약조건명 FOREIGN KEY(컬럼명)
REFERENCES 부모테이블(PK컬럼명)
 
 

자식 테이블 COMMENT 지정 ]

자식테이블을 생성했으니 논리명을 적용하기 위해서
코멘트를 달아줍니다.
 
 
 

자식 대상 테이블 생성과 FK설정 복습 ]

 
자식 대상 테이블 코멘트 설정 ]

 
 

[ FK를 설정했을 경우, 데이터 INSERT방법 ]

테이블에 레코드를 저장할 시 에러가 발생한다.
이유 : 부모의 PK컬럼에 FK(외래키) 데이터가
           존재하지 않다는 뜻입니다.
 
해결방법 :
부모 테이블에 먼저 데이터를 저장해 준다.
자식테이블에 해당하는 FK의 속성값을 
자식테이블에서 저장을 해주면 됩니다.
 
 
[ 부모테이블 데이터 저장 ]

 
[ 부모테이블 출력 결과 ]

 
 
[ 자식테이블 데이터 저장 ]

 
[ 자식테이블 출력 결과 ]

이렇게 자식테이블이 부모테이블의
PK컬럼을 참조를 하고 있을 때는 
자식 테이블의 FK컬럼의 값이 부모테이블이
가지고 있는지 확인을 후, 저장을 해야지만
INSERT문이 정상적으로 수행이 되는 것을
확인할 수 있습니다.

 

 

 

 

오늘은 부모 테이블의 컬럼(속성)을 참조하여

데이터를 저장하는 FK에 대해서 공부를 했습니다.

FK : Foreign keyDDL은 아래와 같이

(Data Definition Language) 데이터 정의어

입니다. 많은 도움이 되셨으면 좋겠습니다.

감사합니다