외래키 쓰는 이유가 무엇인가요? 0 6 15,023

by 박태준 [2015.09.01 00:55:48]


제약조건으로 외래키를사용하면

부모 해당컬럼값 하위 해당컬럼값을 참조하는 관계를 맺으면

foreign key가 걸려있어야 두 테이블이 join이 가능한것으로 알고있었습니다..

 

그런데 실험해본결과

create table tt1(
idx number
,content varchar2(100)
);

create table tt2(
idx number
,subject varchar2(100)
);

두테이블을 제약조건을 걸지 않아도...

select  s.idx,s.content, d.subject
from tt1 s join tt2 d
on s.idx = d.idx;

두테이블에 같은칼럼값에 같은 데이터이면 join을 하여 단일행이 출력되는데..

그럼 도대체 foreign key를 사용하는 이유가 무엇인가요?

 

by 개발뉴비 [2015.09.01 08:44:11]

자세한거는 잘 모르겠지만 데이터 무결성이 가장 큰 이유로 알고있습니다.


by 박태준 [2015.09.01 09:10:15]

답변 달아주신거 감사합니다.


by 마늘장아찌 [2015.09.01 09:40:40]

join은 key가 아니더라도 걸수있습니다.

외래키의 사용은 emp와 dept sample table의 관계를 보면 쉽게 이해하실수 있겠는데요

어느 사원이 어느 부서 소속임을 나타낼때 기본적으로 부서테이블을 참조한다고 하고

dept table에 등록된코드만을 사용하도록 emp 테이블 dept code에 foreign key를 설정하죠.

앞서 말씀과 같이 데이타 무결성 보장이 그이유입니다.


by 박태준 [2015.09.01 10:07:09]

답변감사합니다. 아직 제가 공부가 부족해 답변해주신 내용도 잘 이해가 안되네요

친절한답변감사드립니다 채택하겠습니다.


by 아발란체 [2015.09.01 10:57:50]

개념적으로는 위에서 말씀주신 것처럼 무결성 원칙 요거 딱 하나인 것 같습니다.

 

개념적으로도 어렵지 않습니다.

이거 무시하시고, 개념 떠나 값들을 막 저장한다고 했을 때 어느 순간 보면,

정해진 값들만 저장해야 할 것 같은데, 어떠한 규칙도 두지 않았다면 정해지지 않은 값들도 저장됩니다.

그러면 프로그램으로 정해지지 않은 값들을 찾아 지우거나 쓰지 않는다면 불필요한 데이타로 됩니다. 관련 유지 비용이 계속 들어갑니다. 이게 무결성 원칙에 위배된다 라고 합니다. 그래서 쓰지 않는 값을 아예 안들어가고 필요한 값만 들어가거 할 때 참조키를 설정하면 무결성이 보장됩니다. 정하지 않은 값은 아예 들어가지 않고 오류납니다.

위 내용은 참조키에 무결성 이해를 위한 한 예로 참조키에 대한 전체 설명은 아닙니다.


by 박태준 [2015.09.02 02:02:25]

답변 정말 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입