관계형 데이터베이스의 특징은 데이터를 중복과 저장 공간의 효율성을 위해서 여러 개의 테이블에 분산하여 저장합니다. 또한 분산되어 있는 테이블의 데이터 간에 관계를 지정하여 복합적인 처리를 할 수 있도록 합니다.
외래 키는 테이블 간의 관계를 지정하는 링크 연결고리와 같습니다. 외래 키는 FOREIGN KEY라고 부르며, 관계형 데이터베이스에서 설계하는 데이터 모델링과도 중요한 밀접한 관계를 가지고 있습니다.
09.8.1 외래 키 설정
외래키(FOREIGN KEY) 는 링크 연결 고리로 다른 테이블의 PRIMARY KEY 의 값을 참조합니다.
| 예제 쿼리 |
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
FOREIGN KEY 제약 조건의 이름 지정을 허용하고, 여러 열에 FOREIGN KEY 제약 조건을 정의하려면 다음 SQL 구문을 사용합니다.
| 예제 쿼리 |
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
09.8.2 외래 키 수정
외래 키는 ALTER TABLE 명령을 통하여 추가하거나 삭제할 수 있습니다.
| 예제 쿼리 |
ALTER TABLE Orders ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
또는 CONSTRAINT 키워드를 통하여 다수의 컬럼 필드를 변경할 수 있습니다.
| 예제 쿼리 |
ALTER TABLE Orders ADD CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
09.8.3 외래 키 삭제
설정한 외래 키는 ALTER TABLE 명령을 통하여 삭제 가능합니다.
| 예제 쿼리 |
ALTER TABLE Orders DROP FOREIGN KEY FK_PersonOrder;
참조액션
참조액션이란 외래키의 제약조건으로 쿼리를 실행할 수 없을때, 오류를 출력하는 대신에 다른 동작을 수행하도록 하는 것입니다. 참조 액션을 통하여 위반된 제약조건을 해결하는 동작을 수행할 수 있습니다.