반응형
IE표기법 (정보공학 표기법)
식별관계 : 부모테이블의 주키가 자식테이블의 주키 또는 주키군에 속한 관계
비식별 관계 : 부모테이블의 주키가 자식테이블의 일반 속성에 속한 관계

※ 실선관계는 식별 관계, 점선관계는 비식별 관계



<1:n 관계의 종류와 물리적으로 구현한 모양>

1번째 , identifying , mandatory, optional 이경우는 B는 A가 없다면 존재 할 수 없다.
반면 A는 B가 없어도 괜찮은 관계이다. 물리적 DB구성은 B테이블에 A의 PK를 FK로 하며, B테이블의 PK로 들어온다.

2번째 , identifying , mandatory, mandatory 이 경우는 B도 A없이 존재 할 수 없고, A또한 B가 없다면 존재하기 힘든 관계이다.
물리적 DB구성은 B테이블 경우는 1번째 경우와 동일하다. A의 ID가 PK로 들어온다.
그렇지만 1:n의 1의 관계에서 B의 ID를 PK로 물고 있는 경우가 없기 때문에 무결성을 지키기 위해서는
별도의 처리 로직 (TRIGGER 혹은 어플리케이션단계에서의 처리) 이 필요하다.

3번째 , non-identifying , optional, optional 이 경우는 A가 없이도 B는 존재 할 수 있으며, B는 A의 ID를 PK가 아닌 일반 속성으로 가지게 된다.
그리고 B의 입장에서 A또한 있어도 그만 없어도 그만인 optional 속성이므로 A의 ID 컬럼이 null이 들어와도 무방하게 된다.

4번째 , non-identifying , mandatory, optional 이 경우는 3번째와 마찬가지로 A없이 B가 존재할 수 있다.
그렇지만, B의 입장에서 A는 필수 조건이다. 따라서 B의 주키는 일반속성으로 들어와 있긴 하지만 not null 속성을 가져야만 한다.



기본키와 외래키
기본키
- 행을 고유하게 구분해 주는 최소의 정보
- 기본 키가 없는 테이블은 관계에 사용할 수 없고, 정렬과 검색할 때 처리속도가 늦음. 따라서 가능하면 기본 키를 만들어 두는 것이 좋음.
외래키
-  다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미
- 릴레이션 간의 관계를 표현할 때 사용

기본키와 외래키의 속성
- 기본키는 고유한 값을 가져야 함
- 외래키는 기본키와는 달리 그 값이 고유해도 좋고 중복되어도 됨. 다만 인덱스가 되어 있으면 연결하는데 있어 성능의 향상을 가져올 수 있음
- 관련되어 있는 외래키와 기본키의 필드 이름 또는 인덱스 이름이 같을 필요는 없지만 가능하면 동일한 이름이거나 또는 한쪽 이름이 다른 쪽 이름의 일부를 구성하도록 이름을 짓는 것이 편리함.
- 외래키는 기본키와 데이터 형식이 같아야 함.
- 기본 키는 Null 값이 될 수 없으며 항상 고유 인덱스를 가져야 함.
- 외래 키는 Null 값이 될 수 있음.
- 두 개 이상의 필드로 이루어진 외래 키 필드 중 Null인 필드가 있으면 모든 필드가 Null이 됨.


반응형

+ Recent posts