SQL 참조키 [ Foreign - key ] 외래키. 그리고 제약조건

반응형



DB 의 SQL 에는 기본키 [ PRIMARY KEY ] 가 있고
또 참조키 [ FOREIGN KEY ] 라는게 있다

참조키는 말 그대로 참조하는 키를 명시하는 것이다

읽기전에 손가락 한번 클릭~ >_<

고마워요 ~ Chu ~ ♥



좀 더 자세히 알아 보자면,
참조키는 유일할 필요가 없다 => 실제로 유일하지 않은 경우가 많음
참조키의 값으로는 부모 테이블에 존재하는 키의 값만을 넣을 수 있다 => 참조 무결성
참조키를 사용하여 부모 테이블의 유일한 값을 참조한다. ( 예를들어, 부모테이블의 기본키를 참조 )
참조키의 값이 부모테이블의 기본키일 필요는 없지만 유일해야 한다.

정도가 있겠다....
딱히 큰 문제는 없을듯 하다
그냥 참조키 선언 후에 참조하고 싶은 테이블의 기본키를 참조해버리면 끝이니까...


참조키 생성하는 법

CRAETE TABLE 테이블명 (
칼럼1, 타입,
칼럼2, 타입,
칼럼3, 타입
FOREIGN KEY ( 칼럼3 )
);

이렇게 하면 칼럼3이 현재 테이블의 참조키가 된다



헌데, 참조키 생성시엔 제약조건을 명시 하는걸 권고하고 있다...

참조키 생성시의 제약조건 명시법

CRAETE TABLE 테이블명1 (
칼럼1, 타입,
칼럼2, 타입,
칼럼3, 타입,
CONSTRAINT 참조할 테이블명_참조할 키 이름_fk ,
FOREIGN KEY (칼럼3),
REFERENCES 참조할 테이블명 (참조할 칼럼명)
);

여기서 CONSTRAINT 문이 제약조건 인데
참조키가 어느 테이블을 참조하는지, 그리고 키 이름, 제약조건은 참조키라고 명시하고 있다
하지만 이건 선택사항 이므로 넣지 않아도 무방하다.
( fk 는 FOREING KEY 의 약자 )


직접 한번 해보죠 그럼 ㅎㅎㅎ


test2_table 이라는 테이블을 생성하고,
기본키로는 test2_id , 그리고 참조키로는 test2_fk 라는 칼럼을 지정했고,
참조키가 참조하는 값은 REFERENCES 에 명시된 test_table 의 id 값을 참조합니다.


테이블 스키마를 보면 좀 더 이해가 빠르지 싶어 한글로 만들었음;;;

이제 테이블 2개가 연결되어 있습니다.

얼마후에 포스팅 할 조인과 서브쿼리, 뷰 같은 유용한 경우에
많이 사용되므로 테이블을 원자적으로 최소한 쪼갠 후에,
여러 테이블로 관리하면 검색도 편하고 관리도 쉽다는거!!

원자적으로 쪼갠다고 하니, 이해가 어렵겠지만,,,,,
다음엔 이해를 위해 정규형을 알아보죠 ㅎㅎ




반응형

댓글

Designed by JB FACTORY