Coding Planet
[RDBMS]FOREIGN KEY, 외래키 예시, CASCADE 본문
FOREIGN KEY
1. 외래키(FK)에 대한 이해
- 두 테이블의 데이터 간 연결을 설정하고 강제 적용하여 외래 키 테이블에 저장될 수 있는 데이터를 제어하는데 사용되는 열이다. 외래 키 참조에서는 한 테이블의 기본키 값을 가지고 있는 열을 다른 테이블의 열이 참조할 때 두 테이블 간 연결이 생성된다.
- 자식테이블:emp_tbl. 부모테이블:dept_tbl()
- 부모테이블인 dept_tbl의 deptno를 받아 사용하는 자식테이블 emp_tbl. -> 부서번호가 emp_tbl의 외래키
2. 형식
CONSTRAINT [제약조건명] FOREIGN KEY([컬럼이름])
REFERENCES[참조할 테이블 이름]([참조할 컬럼 이름])
[ON DELETE CASCADE | ON DELETE SET NULL];
3. 외래키의 옵션
1) ON DELETE CASCADE
- 참조되는 부모 테이블에 대한 DELETE를 허용.
- 참조되는 부모 테이블 값이 삭제되면 연쇄적으로 자식 테이블 값 역시 삭제된다는 의미
- 일반적으로 이 옵션이 많이 쓰이는데 이 옵션을 사용하지 않으면 엮여있는 모든 자식 테이블의 값을 먼저 다 지워줘야하기 때문이다.
- DROP TABLE 테이블명 CASCADE CONSTRAINTS: 외래키로 물린 하위 테이블까지 모두 삭제한다.
2) ON DELETE SET NULL
- 참조되는 부모 테이블 행에 대한 DELETE를 허용
- 부모 테이블의 값이 삭제되면 해당 참조하는 자식 테이블의 값들이 NULL로 설정되는 옵션
✨예제: FOREGIN KEY 활용하기
1. 기본키를 갖는 TESTFK3 이름의 테이블을 생성(부모테이블)
2. 외래키를 갖는 TESTFK4 이름의 테이블을 생성(자식테이블) : ON DELETE SET NULL
-외래키로 사용할 컬럼 이름: PK_COLUMN1
3.TESTFK3, TESTFK4 테이블에 데이터 입력
1)TESTFK3
2) TESTFK4
4. 부모테이블에서 데이터 제거하기
1)TESTFK3
2) TESTFK4
5. 자식테이블 삭제하고 ON DELETE CASCADE 조건으로 다시 생성
- 부모 테이블도 마찬가지로 삭제하고 인서트를 다시 시행하여 원래 상태로 세팅
6. ON DELETE CASCADE 조건에서 부모테이블의 MENU1 삭제할 경우
- ON DELETE SET NULL 조건에서는 부모테이블의 데이터가 삭제되더라도 외래키가 NULL로 표시되며 기존 데이터가 유지되었다.
- 반면, ON DELETE CASCADE 조건에서는 부모데이블의 데이터가 삭제된 경우 해당 외래키의 자식테이블 데이터도 연쇄적으로 삭제되었다.
1)TESTFK3
2) TESTFK4
'DB, SQL' 카테고리의 다른 글
[SQLD] 테이블의 컬럼명, 자료형 변경하기 - Oracle, SQLServer (0) | 2023.08.30 |
---|---|
[SQLD] 테이블 생성시 PK 설정하기 - ORACLE (0) | 2023.08.30 |
[DB Modeling] 유스케이스 다이어그램 만들기 (0) | 2023.03.14 |
[DB Modeling] 논리적 모델링 - 정규화 (0) | 2023.03.14 |
[DB Modeling] 개념적 데이터 모델(E-R 다이어그램), 개념적 데이터 모델, 논리적 데이터 모델 (0) | 2023.03.08 |