1. E-R Diagrams
기본 골격
E-R model을 Diagram으로 표현하는 방법을 배울 것인데, 가장 기본이 되는 구조는 다음과 같다.
그림에서 instructor 개체 집합과 student 개체 집합이 각각 세 가지 속성을 가지고 있고, 둘 사이에 advisor라는 관계 집합을 가지고 있다고 보면 된다. 속성 중 primary key를 갖는 속성엔 밑줄이 그어져 있는 것도 확인할 수 있다.
속성 표현 (상세)
위의 instructor 개체 집합은 앞에서 배웠던 Composite, Multivalued와 같은 다양한 형태의 속성을 포함하고 있다. name의 경우 Composite Attribute로 first_name, middle_initial, las_name으로 분할할 수 있다. 또한 address 속성은 더 깊은 계층적 구조를 가진다. phone number의 경우 중괄호로 묶여있는데, 이는 multy-valued attribute로 해석하면 된다. 즉 여러 값을 가질 수 있는 것이다.
관계 집합의 속성
앞에서 관계 집합또한 개체 집합과 마찬가지로 속성을 가질 수 있다고 했는데, 관계집합이 가지는 속성은 다음과 같이 점선과 사각형을 이용해 표시해준다.
역할(Role)
일반적으로 관계 집합에 참여하는 개체 집합은 구별이 가능하기 때문에 관계의 개체 집합을 반드시 구별할 필요는 없다. 하지만 하나의 개체 집합이 하나의 관계 집합에 두 번 이상 다른 역할로 참여하면 그 역할을 구별하기 위해 레이블 등을 사용해서 명시하는 것이 좋다. 말로만 하면 이해가 잘 안되는데 아래 그림을 보자.
prereq 관계 집합은 어떤 과목에 대한 선수과목의 정보를 함께 나타내고 있다. 따라서 course라는 개체 집합이 이 관계에 두 번 참여하게 되는데, 한 번은 과목명으로, 한 번은 선수과목명으로 참여한다. 따라서 이럴 경우 course_id의 역할로 한 번, prereq_id의 역할로 한 번 참여한다고 레이블을 명시해주는 것이다.
Cardinality Constraints
앞에서 binary relationship은 네 가지 relationship 중 하나여야 한다고 했다. (one to one, many to many, many to one, one to many)
우리는 다이어그램에서 이를 표현해줄 수 있는데, one은 화살표로, many는 직선으로 표현한다.
그림을 보면 instructor와 student 개체 집합이 참여하는 advisor 관계 집합은 one to one 관계라고 할 수 있다.
반면 이 그림에서는 advisor 관계 집합은 one to many 관계라고 할 수 있으며, 한 명의 교수가 여러 명의 학생을 지도할 수 있다는 뜻이다.
Alternative Notation for Cardinality Limits
Cardinality Constraints를 만드는 또 다른 방법이 있는데, 바로 Cardinality Limits을 설정하는 것이다.
그림에서와 같이 0..* 또는 1..1 과 같은 Notation을 사용할 수 있으며, .. 을 기준으로 왼쪽 값이 최솟값, 오른쪽 값이 최댓값이 된다. 또한 * 표시는 무한대를 의미한다. 즉 0..* 의 경우 many와 같은 뜻으로 사용되며, 1..1은 one과 같은 뜻으로 사용된다.
Participation of an Entity Set in a Relationship set
participation constraints는 참여에 대한 제약조건으로, 전체 참여(total participation)와 부분 참여(partial participation)로 나뉜다. 전자는 개체 집합에 있는 모든 개체들이 관계 집합에 있는 적어도 하나의 관계에 참여하는 것이고, 후자는 개체 중 관계 집합에 참여하지 않는 개체가 존재하는 것이다.
그림과 같이 전체 참여는 두 개의 선으로 표현을 해주고, 부분 참여는 앞서 본 것처럼 한 개의 선으로 표현한다.
E-R Diagram with a Ternary Relationship(삼항 관계)
삼항관계 또한 다이어그램으로 표현할 수 있는데, 위와 같은 다이어그램에서 proj_guide 관계 집합의 의미는 교수가 어떤 프로젝트를 하는 학생의 지도교수가 된다는 것이다. 이 때 주의할 점은 one을 나타내는 화살표 표시는 딱 한 번만 나올 수 있다는 것이다. (두 개 이상이 나오면 의미가 모호해지기 때문, 그럼 어떻게 처리?)
2. Weak Entity Sets
weak entity set(약한 개체 집합)이란 primary key를 가지고 있지 않는 개체 집합이다. 이런 weak entity set은 primary key를 형성할 수 있는 충분한 속성을 가지고 있지 않다. 또한 weak entity set과 반대로 primary key를 가지고 있는 개체 집합을 strong entity set(강한 개체 집합)이라고 부른다.
weak entity set은 다른 개체 집합에 의존하게 되는데 이 때 연관되는 개체 집합을 identifying entity set(식별 개체 집합)이라고 한다. 또한 이 둘이 참여하는 관계를 identifying relationship(식별자 관계)라고 한다. 이 식별자 관계는 weak entity set이 하나로 정해지는 one to many 관계이면서, 전체 참여 관계를 통해 맺어져야 한다.
weak entity set의 discriminator 또는 partial key라고 부르는 구별자는 weak entity set의 모든 개체를 구별하는 속성의 집합이다. (? 그게 없는걸 weak entity set라고한거아닌가?)
weak entity set의 primary key는 종속관계에 있는 strong entity set, 즉 identifying entity set의 primary key와 weak entity set의 discriminator를 합쳐서 만들어진다.
마지막으로 이러한 identifying relationship은 두 개의 선으로 표시된 다이아몬드로 표현할 수 있으며, discriminator는 점선을 사용한 밑줄을 이용해 표현한다.
'Database' 카테고리의 다른 글
MySQL과 모바일 웹으로 만나는 데이터베이스의 정석 (1) (0) | 2021.01.07 |
---|---|
[E-R model, Entity, Relationship, Attribute] SQL 중급 (edwith 데이터베이스 강의 - 부산대학교 김연정 교수님) (0) | 2021.01.04 |
[JDBC Programming] SQL 중급 (edwith 데이터베이스 강의 - 부산대학교 김연정 교수님) (0) | 2021.01.03 |
[응용프로그램 인터페이스 JDBC, ODBC] SQL 중급 (edwith 데이터베이스 강의 - 부산대학교 김연정 교수님) (0) | 2021.01.03 |
[Built-in Data Types in SQL] SQL 중급 (edwith 데이터베이스 강의 - 부산대학교 김연정 교수님) (0) | 2021.01.02 |