sql

FOREIGN Key란?

superminy 2016. 8. 2. 17:03
728x90
  1.  SQL Constraints 중 하나이다.


    NOT NULL

     '필수 입력 사항'을 의미

     UNIQUE

     중복성 배제 즉, '유일한 값'으로 존재해야 함을 의미

     PRIMARY KEY(기본키)

     NOT NULL + UNIQUE로, '테이블에서 대표되는 컬럼'을 의미

     FOREIGN KEY(외래키)

     '참조하는 테이블에서 존재하는 값만 사용 가능'을 의미

     CHECK

     '주어진 조건에 해당하는 값만 입력 가능'을 의미



  2. 테이블의 외래키(FORGEGIN KEY)는 다른 테이블의 PRIMAKRY KEY 를 가리켜야 하는 제약을 뜻한다.
  3. 특이 사항
    1. FOREIGN KEY 제약은 테이블간 링크가 무너지는 액션을 방지하려고 사용한다.
    2. FOREIGN KEY 제약은 FOREIGN KEY column에 잘못된 값이 삽입되는 것을 방지한다.
    • t_student 테이블은 t_school의 primary key를 가짐으로써 테이블에 대한 외래 키 연결이 생성됩니다.
    • 참조키는 연결되는 테이블의 기본키와 이름이 다를 수 있다.


  4.  SQL:2003 5종류의 참조 조작
    • 관계 데이터베이스 관리 시스템(RDBMS) 혹은 SQL 데이터베이스 관리 시스템은 참조 정합성 제약을 강제 적용하기 위해 DBMS는 참조되는 테이블의 행을 삭제(또는 갱신)하는 경우에도, 데이터 정합성을 유지해야 한다. 그 때, 참조하는 테이블에 행이 남아 있는 경우, 참조 정합성을 고려해야 한다. 데이터베이스 언어표준 SQL:2003에는 그러한 경우에 발생시키는 5종류의 참조 조작이 규정되어 있다.

      CASCADE참조되는 테이블의 행이 삭제되었을 경우에는 참조하는 테이블과 대응되는 모든 행들이 삭제된다. 참조되는 테이블의 행이 갱신되었을 경우에는 참조하는 테이블의 외래 키 값은 같은 값으로 갱신된다.
      RESTRICT참조하는 테이블의 행이 남아 있는 경우에는 참조되는 테이블의 행을 갱신하거나 삭제할 수 없다. 이 경우에는 데이터 변경이 이루어지지 않는다.
      NO ACTION참조되는 테이블에 대해 UPDATE 또는 DELETE가 실행된다. DBMS에서 SQL 문장의 실행 종료시에 참조 정합성을 만족하는지를 검사한다. RESTRICT와 차이점은, 트리거 또는 SQL 문장의 시멘틱스 자체가 외래 키의 제약을 채울 것이라는 데에 있다. 이 때는 SQL 문장 실행이 성공한다. 외래 키의 제약이 만족되지 않은 경우에는 SQL 문장 실행이 실패한다.
      SET NULL참조되는 테이블에 대해 행이 갱신 또는 삭제되었을 경우, 참조하는 테이블의 행에 대한 외래 키 값은 NULL로 설정된다. 이 옵션은 참조하는 테이블의 외래 키에 NULL을 설정할 수 있는 경우에만 가능하다. NULL의 시멘틱스에 의해, 참조하는 테이블에 대해 NULL이 있는 행은, 참조되는 테이블의 행을 필요로 하지 않는다.
      SET DEFAULTSET NULL과 비슷하지만, 참조되는 테이블의 행이 갱신 또는 삭제되었을 경우, 참조하는 테이블의 외래 키 값은 속성의 기본값(default)으로 설정된다.


728x90
반응형