MS-SQL > Data Integrity - FOREIGN KEY
등록일 : 2017-07-03 14:32
조회수 : 92,581
포린키 Constraints는 데이타 모델링의 포린 키를 구현할것으로 Referential Integrity를
구현하기 위한 하나의 방법입니다. 이것은 일반적으로 업무 규칙에서 주종관계가 있는 두
테이블간에 사용되며 종속되는 테이블의 키 컬럼이 주가 되는 테이블의 프라이머리 키 또는
유니크 Constraints 컬럼을 참조함을 의미하게 됩니다.
아래사항은 포린키를 사용할때 고려할 사항입니다.
■ 포린키는 하나 이상의 컬럼에 대해서 선언할수 있다. (데이터 타입이 호환되야함).
■ 키 컬럼의 데이타는 합해서 900byte를 넘을 수 없다.
■ 포린키 컬럼은 배부적으로 인덱스를 만들지 않는다.
■ 포린키를 설정하기 전에 먼저 참조되는 테이블이 생성되어 있어야 한다.
■ 포린키로부터 참조되는 테이블은 제거할수 없으므로 테이블을 제거할때는 먼저 포린키
관계를 제거하거나 포린키를 가진 테이블을 제거해야 한다.
■ with nocheck,nocheck옵션으 사용하여 기존의 데이터나 새로 저장되는 데이터에 대해서
포린키 Constraints가 적용되지 않게 할수도 있다. |
다음 예제는 출판사를 의미하는 pubs 테이블과 출판사에 펴낸 책을 의미하는 book1,book2 테이블을
모델링하여 표현한 것입니다.
book1 과 book2 테이블은 포린키를 가지고 있으며 이 키 컬럼은 모두 pubs 테이블의 프라이머리
키를 참조 하고 있습니다.
CREATE TABLE pubs
(
pub_id int NOT NULL PRIMARY KEY,
name varchar(10) NULL
)
CREATE TABLE book1
(
book_id int NOT NULL PRIMARY KEY,
pub_id int NOT NULL REFERENCES pubs(pub_id), <-- 컬럼 단위 포린키 선언
name varchar(10) NULL
)
CREATE TABLE book2
(
book_id int NOT NULL PRIMARY KEY,
pub_id int NOT NULL,
name varchar(10) NULL
CONSTRAINT fk_pub_id
FOREIGN KEY(pub_id)
REFERENCES pubs(pub_id) <-- 테이블 단위 포린키 선언
)
쿼리분석기에서 실행해 보세요...
위의 그림은 엔터프라이즈 관리자에서 pubs,book1,book2테이블에 대한 다이어그램입니다.
마우스 오른쪽키를 누른후 관계를 확인해 보시기 바랍니다.
새로운 관계를 맺을 수도 있으며, 관계를 삭제할수도 있습니다.
그럼, 오늘은 여기가지만 살펴보기루 하구여, 좀더 자세한 사항을 알고 싶으시면 전문서적을 참조하
시기 바랍니다.