Mysql Foreign key

Ena JJJ·2023년 5월 20일
0

외래키(Foreign Key)란?

외래키는 두 테이블을 서로 연결하는 데 사용되는 키이다.
외래키가 포함된 테이블을 자식 테이블이라 하고 외래키 값을 제공하는 테이블을 부모 테이블이라한다.

외래키 사용 시 주의사항

  1. 외래키 값은 NULL이거나 부모 테이블의 기본키 값과 동일해야 한다. (참조 무결성 제약조건)

  2. 부모 테이블의 기본키, 고유키를 외래키로 지정할 수 있다.

  3. 부모 테이블의 기본키, 고유키가 여러개의 컬럼으로 이루어져 있다면 부모가 가진 기본키, 고유키 컬럼을 원하는 개수만큼 묶어서 외래키로 지정할 수 있다.

CREATE TABLE 테이블이름

(

    필드이름 필드타입,

    ...,

    [CONSTRAINT 제약조건이름]

    FOREIGN KEY (필드이름)

    REFERENCES 테이블이름 (필드이름)

)

외래키로 지정할 두 테이블의 필드는 같은 데이터 타입이어야 한다.

외래키 옵션

1. On Delete

Cascade : 부모 데이터 삭제 시 자식 데이터도 삭제
(ORM에서는 보통 Delete쿼리 시 관계가 없더라도 Cascade케이스를 모두 검사해서 대용량 데이터 삭제할 때, 처리가 느리다)

Set null : 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 Null로 업데이트

Set default : 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트

Restrict : 자식 테이블이 참조하고 있을 경우, 데이터 삭제 불가

No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다.

2. On Update

Casacde : 부모 데이터 업데이트 시 자식 데이터도 업데이트

Set null: 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 Null로 업데이트

Set default : 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트

Restrict : 자식 테이블이 참조하고 있을 경우, 업데이트 불가

No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다.

0개의 댓글