코딩공작소
Logical Design by ER Relation Mapping 본문
Conceptual schema design을 ER model로 변환하기 위해서는 7 단계의 알고리즘이 필요.
#Target relational DM
관계들의 집합으로서의 데이터들을 표현
값의 Table(Relation)
- Row(Tuple) : 관련된 데이터 값들의 집합, 현실세계의 앤티티 또는 관계와 상응하는 사실, 튜플들은 원자 값 혹은 널값만을 갖는다.
- Flat Relational model : Composite ,multivalued 속성이 허락되지 않는 가장 일반적인 형태
- Multivalued attribute : 반드시 분리된 관계들에 의해 대표되어야 한다.
- Composite attribute : 오직 기초 관계모델에 안에 간단한 구성요소 속성들로 대표되어야 한다.
ER to relation mapping의 7 단계
<Step 1 : 일반적인 앤티티 타입의 mapping >
만약 composite이면 그것의 단일 구성요소들을 Relation R에 넣음
entity relation 이라고 부른다.
Locations은 멀티벨류 어트리뷰트이기 때문에, 6단계에서 처리해준다.
<Step 2 : weak entity 타입의 mapping>
오너의 주키를 외래키로써 사용한다!!
오너키의 주키를 외래키로 사용할 때, 주키의 일부분이 되도록 해야한다!
<Step3 : Binary 1:1 관계 타입의 Mapping>
외래 키 접근법 (가장 많이 이용된다 )
병합 관계 접근법( 1:1이면서 둘다 전체암여 일때는 합쳐주는 것을 고려해볼수 있다. 너무 커지면 효율성이 떨어진다.)
상호 참조 또는 관계 관계 접근법(새로운 테이블을 만드는것. 질의가 비효율적이므로 거의 사용하지 않는다.)
전체참여 쪽으로 주키를 외래키로써 넘겨준다. 전체참여가 없는 경우는 어느방향이는 주키를 외래키로 넘겨준다.
1:1 일때 관계에 붙어있는 속성은 어떤 앤티티에 넘겨주든지 상관이 없지만, 효율성을 고려해서 이동해줘야한다.
<Step 4 : binary 1:N 관계 타입 Mapping >
1:N 관계에 있을 때, 1쪽 방향의 주키를 N쪽 방향의 일반속성으로 포함시킨다.
<Step 5 : binary M:N 관계 타입의 Mapping >
새로운 관계S 를 만들어서 관계에 참여하고 있는 앤티티들의 주키를 일반속성으로 포함한다.
<Step 6 : multivalued attributes의 Mapping >
새로운 관계를 만들고 주키는 앤티티와 속성의 조합으로 만든다. 멀티 어트리뷰트가 composite이라면 각 구성요소들을 포함한다.
<Step 7 : n-ary 관계타입의 Mapping >
새로운 관계를 만들어서, 연관된 앤티티들의 주키를 모두 포함하고 자신의 속성도 포함한다.
<Step 8 : Options for mapping specialization or generalization >
여러개의 관계 : 슈퍼클래스와 서브클래스 ( 가장 많이 이용 , 토탈,파셜,disjoint,overlap 모두 사용가능 )
여러개의 관계 : 서브클래스만 사용( 서브클래스로 모두 토탈 , disjoint 인 경우 )
한개의 관계 : 한개의 타입을 추가함 ( 서브클래스들은 disjoint, 속성으로 구분해줌)
한개의 관계 : 여러개의 타입을 추가함( 서브클래스가 overlap일때 주로사용)
A)
테이블이 많아 진다. 정보들이 따로 이용될 때 많이 사용한다.
B)
부모의 속성들을 그대로 자식으로 내려준다. (Specialization)
C)
(Generalization)
자식의 속성들을 부모의 속성으로 올려준다.(속성이 많을수록 비효율적)
정보들을 한번에 access하는 경우 많을 경우 사용한다. 테이블의 수가 적다.
Null값이 생길 가능성이 많아진다.
D)