제약조건으로 외래키를사용하면
부모 해당컬럼값 하위 해당컬럼값을 참조하는 관계를 맺으면
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를 사용하는 이유가 무엇인가요?
개념적으로는 위에서 말씀주신 것처럼 무결성 원칙 요거 딱 하나인 것 같습니다.
개념적으로도 어렵지 않습니다.
이거 무시하시고, 개념 떠나 값들을 막 저장한다고 했을 때 어느 순간 보면,
정해진 값들만 저장해야 할 것 같은데, 어떠한 규칙도 두지 않았다면 정해지지 않은 값들도 저장됩니다.
그러면 프로그램으로 정해지지 않은 값들을 찾아 지우거나 쓰지 않는다면 불필요한 데이타로 됩니다. 관련 유지 비용이 계속 들어갑니다. 이게 무결성 원칙에 위배된다 라고 합니다. 그래서 쓰지 않는 값을 아예 안들어가고 필요한 값만 들어가거 할 때 참조키를 설정하면 무결성이 보장됩니다. 정하지 않은 값은 아예 들어가지 않고 오류납니다.
위 내용은 참조키에 무결성 이해를 위한 한 예로 참조키에 대한 전체 설명은 아닙니다.