본문 바로가기
[ DataBase ]/DB&Query

외래키설명

by 관이119 2012. 9. 13.

질문

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10205&docId=66431686
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10205&docId=66431686

 

기본키란...

 

기본키란.. 유일한키잖아요..

그럼 외래키는 어떤경우에 사용하는지..

간단한 개념과 왜 사용하는지 간단한 예를 알고 싶습니다...

질문자 채택

 

re: 기본키란...

 

기본키 - 유일한값이죠 중복되면 안돼고 null 값이나 값이 안들어가면 안되는거죠

외래키 - 기본키를 참조하는 키입니다 이넘은 중복돼도 됩니다

그런데 왜 쓰냐

관계 설정할때 주는 옵션이 따라 틀린데요

먼저

기본키에 테이블에 있는값이 실수나 기타 사항으로 이유로 지워졌다고 생각해보십시오

하지만 외래키를 맺어져 기본키의 값이 참조된 행이 있다면

기본키에 있는 참조되어있는 행은 삭제가 되지않습니다.

예를 들어

A테이블 기본키에 a, b,c 라는 3개의 행이 있고

B테이블 외래키에 a 라는 1개의 행이 있다고 칩니다

A테이블의 내용을 다 지운다면?

a값은 삭제되지않고 b,c 만 삭제됩니다;;

또다른 옵션중에는.

기본키에 잇는 값이 변경되면 그 기본키에 참조된 값도 변하게 되는 옵션입니다.

예를 들어

A테이블 기본키에 a, b,c 값이 잇는 3개행이있고

B테이블 외래키에 a, b,c 값이 잇는 3개행이있다고 칩시다

A테이블 a의 값을 aaa로 바꾼다면?

B테이블의 a라는 값을 참조하고있기때문에 자동으로 aaa로 바뀝니다

또 기본키가 삭제되면 참조된 외래키의 내용도 삭제되는 옵션도있음돠

데이타가 수만건 수십, 수백만건일때는 따로 처리하지않아도 자동으로 바뀌어주니까

편하고 실수나 기타사항등을 인해 삭제되는 일을 막을수있고요

저두 초보자지만 아는부분대로 말씀드려습니다;

상세히 적자면 끝이 없으므로 최대한 쉽게 간단히만 적겠습니다.

단, 일부 DBMS에 특화된 내용이 아닌 모델링의 일반적인 개념으로 적겠습니다...참고하세요.

우선 기본키는 유일한키 + Not Null입니다. Null값도 올 수 없습니다...참고하세요...^^;

FK(외래키)개념은 한 테이블에서 자체적으로 뭔가를 하는 개념은 아니고,

두 개의 테이블간 관계에서 A가 참조되는 테이블이고, B가 참조하는 테이블이라고 할 때,

B의 FK는 A의 기본키여야 합니다. 이유는 RDB 모델의 특징 중 하나인 "참조무결성"이라는 것 때문입니다.

말 그대로 FK를 통해서 참조할 때 이 데이터는 A에서는 중복이 없고 데이터 미 존재등의 참조 시 결함도 없다는 보장을 하려는 것 입니다.

이 이유로 기본키에 null이 들어가지 못하는 이유입니다.

또한 A쪽의 delete 시 B에 FK가 걸려있으므로 삭제도 안 되는 것이 보장됩니다.

이를 가능하게 하려면 FK생성 시 미리 ON DELETE CASCADE등의 옵션을 주어 미리 정의되어 있어야 가능합니다.

설명이 많이 부족합니다...이해가 되실 지 모르겠군요...;

건승하시길...수고하세요~~

댓글