1. Complex Attributes
- attribute 하나로 충분하지 않은 상황이 생길 수 있다.
- 예를들면 아래처럼 name, address등의 속성이 세분화된 composite attributes로 구성되는 경우가 있을 수 있다.
- 아니면 multivalued attributes가 있을 수 있다. 예를들면 전화번호라는 속성은 집전화, 휴대전화 등 여러개의 다중값을 가질 수 있다.
- derived attributes는 도출되는 속성을 말한다. 생일이라는 속성에서 나이를 꺼낼 수 있는데 나이가 도출된 속성이 된다. 다른 예로는 입사년월을 알면 근무기간을 도출할 수 있다. 근무기간을 도출된 속성이라고 한다.
- 이러한 complex attribute를 표현하는 방법은 아래와 같다.
- phone number는 복수개가 들어갈 수 있어서 {}로 표현되어있고
- name은 하위 항목으로 여러 속성이 들여쓰기 되어있다.
- age()는 도출이 가능하기 때문에 ()가 붙여져있다.
- 동일한 다른 표현을 왼쪽처럼 나타낼 수 있다. 점선 이중선 트리 모양을 활용한다.
2. Mapping Cardinality Constraints
- entity 간의 binary relation ship 이 있을 때, 속성, role, degree를 줄 수 있다고 했다. mapping cardinality는 추가할 수 있는 또 하나의 속성이다.
- A가 지도교수 B가 학생이라고 해보자.
- (a)는 학생과 지도교수가 1대1로만 지도관계를 맺고 있는 모습이다.
- (b)는 지도교수가 여러명의 학생과 지도관계를 맺는 모습이다.
- 여기서 (a)는 학생이 여러명의 지도교수의 코칭을 받는 모습이고 (b)는 여러 학생, 여러 지도교수간의 관계가 가능한 구조이다.
- e-r 표기로 다대다의 관계는 아래와 같다.
- e-r표기로 1대1의 관계는 아래와 같다.
- e-r표기로 1대다의 관계는 아래와 같다.
* chen의 표기법의 경우는 "다"를 화살표로 표기하는게 아니라 *를 사용한다.
* 또 다른 표기법에서는 "다"를 나타내는 쪽을 검은색으로 칠한다.
* 표준화된 표기법이 없기 때문에 "다"를 나타내는 쪽에 다, M등을 써도 무관하다.
3. Total, Partial Participation (constraints)
- mapping을 할때 반드시 짝을 맺어야 하는 entity를 total participation이라고 한다. 아래 그림에서 우측 enitiy에 해당한다.
- mapping을 할때 반드시 짝을 맺지 않아도 되는 entity를 partial participation이라고 한다. 아래 그림에서 whkD측 enitiy에 해당한다.
- e-r모델로 표현했는 이중 선이면 total participation이라는 뜻이다.
4. More constraints
- 0..*이라는 뜻은 instructor에서 student로 짝을 지을때 0부터 전부까지 짝을 맺을 수 있다는 뜻이다.
- 1..1은 student에서 instructor로 짝을 맺을때는 최소 1개부터 1개까지니까 즉 1명이랑만 맺을 수 있다는 뜻이다.
5. Primary Key
- entity set에서의 primary key는 위에서 살펴보았다.
- relationship set에서도 pk가 존재할 수 있는데 아래를 살펴보자.
- 두 entity를 나타내는 선들을 좌,우의 pk의 합으로 표현하면 (76766, 98988), (22222,44553)이 된다. 이는 고유하기 떄문에 relation ship set의 pk가 된다.
- 즉 relation ship set의 pk는 두 entitiy의 pk들의 합성으로 이루어진다.
- 그렇다면 relation ship set의 pk는 무슨 의미를 가질까?
- 이렇게 관계마다 pk를 정의하면 나중에 rdb로 변환할때 relationship set을 table로 변환할때 용이하다.
- 아래 advisor table로 변환하기가 쉽다. 당연히 관계들은 다 나중에 record로 변환된다.
- 참고로 합성한 pk들이 관계들의 pk의 역할을 하지만 일 대 다 mapping의 경우는 '일'쪽에 해당하는 entity의 pk만으로도 관계의 pk를 대신할 수도있다.
- weak enitity set에서의 pk를 알아보기전에 weak entitiy set이 뭔지부터 알아보자.
- 아래 대출 상환 예제를 살펴보자.
- payment는 loan이라는 상황에 전제로 생기는 내용이다. 대출이 있어야 상환을 할것 아니겠는가.
- 이런 관계에서 payment entitiy가 weak entitiy에 해당한다. (loan entity가 strong entity에 해당한다)
- weak entitiy는 겹선을 사용해서 그린다.
- weak entitiy를 연결할때도 겹선 다이아몬드를 사용해서 그린다.
- L1, L2 두번의 대출 기록이 있고 각각 2번 3번만에 상황했다고 하자.
- 그런데 weak entity의 record들은 자체 속성으로는 각자 고유 식별성이 없다.
- 어느 대출에 상환을 했는지 알수 없기 때문에 strong entity에 의존하게 된다.
- 따라서 weak entity의 고유 식별성(PK)은 strong entity의 loan_number와 자체 속성의 합으로 이루어진다.
- 구분자(discriminator)는 전체 상황기록을 구분할수는 없지만 L1, L2에 대해서는 구분이 가능한 속성을 말한다. (점선밑줄로 표시)
- strong entity를 identifying entity라고도 부른다.
- strong entity와 weak entity의 relationship을 identifying relationship이라고 부른다.
- 이 예시는 section이 course에 기반하고 있으며 section의 각 속성들은 구분자로 점선 밑줄표시가 되어있다.
- 과목이 있어야 수업이 개설될 수 있다.
- 만약 weak entitiy로 표현 하지 않았다면 section entitiy에는 course_id를 가지고 있어야 하며 이는 redundency(중복)을 야기한다.
- 따라서 중복을 지우고 관계를 맺음으로써 문제를 해결한다.
'ComputerScience > Database' 카테고리의 다른 글
DB - 13. E-R Model 4 (0) | 2021.11.15 |
---|---|
DB - 12. E-R Model, RDB로 변환하기 (0) | 2021.11.15 |
DB - 10. E-R Model (0) | 2021.10.27 |
DB - 9. JDBC (0) | 2021.10.27 |
DB - 8. More SQL statements(3) (0) | 2021.10.13 |