본문 바로가기
SQL

SQL FOREIGN KEY 제약 조건

by 진격의 파파 2013. 9. 16.
반응형

 

 

안녕하세요!! 

이번 포스팅에서는  SQL FOREIGN KEY 제약 조건에 대해서 알아보겠습니다.

 

흔히들 FOREIGN KEY 를 우리나라 말로 외래키라고 사용합니다.

외래키 제약조건은 한 마디로 말해서 두 테이블간의 관계를 선언하여 데이터간의 무결성을 보장해주는 역할을 합니다. 즉 외래키 관계를 설정하면 하나의 테이블이 다른 테이블에 의존하는 형태입니다.

외래키 테이블에 데이터가 입력될 경우 기준 테이블의 내용을 참조해서 데이터가 입력되기 때문에 만약 기준 테이블에 데이터가 존재하지 않을 경우 값이 반영되지 않게 됩니다.

그리고 외래키 설정시 주의해야 할점은 기준 테이블의 열에 반드시  primary key, unique  제약조건이 설정되어 있어야 한다는 점입니다.

 

설명은 여기까지 마치고 테이블을 예로들어서 알아보겠습니다.

 

우선 아래 member 기준테이블을 하나 만들겠습니다.

 m_id

 name

 address

 age

 1

 park

 seoul

 33

 2

 song

 inchun

 24

 3

 kim

 cheongju

 42

 

그리고 order 주문 테이블을 하나 만들겠습니다.

 o_id

 order_no

 m_id

 1

 23456

 3

 2

 53672

 2

 3

 25676

 3

 4

 46255

 1

 

 

 

처럼 테이블이 있다고 가정할 경우

두 테이블간의 공통점이 있습니다. m_id 라는 칼럼을 가지고 있는 것이죠. member 테이블의 m_id 는 primary key 입니다. 그리고 아래 order 테이블의 m_id 는 foreign key 입니다. 이처럼 구성을 하여 order 테이블의 m_id 에 member 테이블의 m_id 값중 다른 값이 들어가는것을 방지할 수 있게 됩니다.

 

CREATE TABLE Order
(
o_Id int NOT NULL PRIMARY KEY,
order_no int NOT NULL,
m_Id int FOREIGN KEY REFERENCES member(m_Id)
)

// 처럼 테이블을 구성할 수 있습니다.

 

예전 asp 시절에는 외래키를 이용하여 테이블 구성을 많이 했었는데 php 로 넘어오면서 작은 프로젝트만 하다보니 외래키를 이용하는 경우가 드물더군요. 혹시라도 설명이 부족했던 부분이 있었다면 이해바랍니다. ^^;

궁금한점 있으시면 댓글 또는 쪽지 보내주시면 최선을 다해서 답변 달아드리겠습니다.

 

자 ~ 그럼 남은 하루 일정 잘 마무리 하시고 즐거운 프로그래밍 되시기 바라며 일교차가 심하니 감기 조심하세요!

 

 

반응형

'SQL' 카테고리의 다른 글

SQL DROP 구문  (0) 2013.09.23
SQL CHECK 제약조건  (2) 2013.09.17
SQL PRIMARY KEY 제약조건  (2) 2013.09.12
SQL UNIQUE 구문  (0) 2013.09.11
SQL NOT NULL, DEFAULT 구문  (0) 2013.09.10