[Database] 4. EER과 객체모델
REF: fundamentals of database systems 7th edition
- EER은 더 복잡한 요구사항을 요구하는 데이터베이스 유형을 위해 탄생했다.
- EER모델링은 ER모델링의 모든 개념을 포함한다.
Subclasses, Superclasses, Inheritance
Subclass(Subtype), Superclasses
-
entity type(3장) : entity의 유형 == entity 집합 == db에 존재하는 같은 유형의 entity의 집합
-
entity type은 수많은
의미있는
subgroup과 subtype들을 가지는데,- database에서 가지는
중요성에따라
명시적으로 표현될 필요가 있다.
- database에서 가지는
- Employee 라는 entity type은 SECRETARY, TECHNICIAN, ENGINEER, MANAGER, 등으로 구성된다.
-
총 3가지의 SUBCLASS로 구분된다.{job type, manager, hired type}
subclass, subtype
- EMPLOYEE의
subgrouping
들
- EMPLOYEE의
superclass, supertype
- EMPLOYEE
⭐️IS-A heirarchies
superclass/subclass relationship
,supertype/subtype relationship
,class/subclass relationship
- subclass와 superclass간의 관계를 의미.
- ⭐️필요성
- 특정한 subclass를 서술하는 속성을 추가하기위해
- 관계에 참여하는 개체를 식별하기위해
- ⭐️주의
- subclass의 entity는 superclass의 entity 이지만,
- superclass의 entity는 subclass의 entity가 아닐 수도 있다.
⭐️Inheritance
- 각 entity들은 각자의 attribute value를 통해 식별된다.
- 따라서, subclass의 entity들은
반드시 superclass entity로써의 attribute를 inherit
한다고 한다.
Specialization, Generalization
⭐️Specialization
정의
- ⭐️
Specialization
- entity type의 subclass를 정의하는 절차
- subclass를 정의하는 entity type은
superclass
가 된다. - ⭐️
superclass의 characteristic을 구분하는 것을 기반으로 한다.
⭐️절차
- ⭐️additional specific(local) attribute
subclass는 특정한 attribute(local)을 가질 수 있다.
- secretary, engineer모두 employee를 상속해 employee의 속성을 공통적으로 가지지만,
secretary는 typing speed
라는 특정 속성을 가진다.
- ⭐️additional specific relationship type
subclass는 특정한 관계에 참여할 수 있다.
HOURLY_EMPLOYEE는 BELONGS_TO
라는 특정한 관계에 참여한다.
subclass를 사용하는이유
⭐️local attribute
entity의 일부만이 가지는 속성
이 있을 수 있으며,
⭐️specific relationship type
entity의 일부만이 참여하는 관계
가 있을 수 있다.
이를 표현하기위해 subclass를 사용한다.
관계
- superclass/subclass 간에는 1:1관계같지만, 다르다.
- 1:1 관계는 relationship의 각 entity가 별도의 entity이지만,
class/subclass에서는 각 entity가 동일한 entity이다.
단지 특정한 역할을 한다는 것을 표현한다.
예시
- ex) subclass{SECRETARY, ENGINEER, TECHNICIAN}는 superclass{EMPLOYEE}을 job type(characteristic)을 기반으로 specialization하는 것이다.
- 각 subclass는 typing speed, tgrade같은
specific attribute
를 가진다.
- 각 subclass는 typing speed, tgrade같은
Generalization
정의
주어진 entity type으로 일반화된 ENTITY TYPE을 정의하는 절차
를 의미- Specialization의 역
- subclass들을 묶어 단일의 superclass로 일반화하는 것을 의미한다.
- 위 그림에서 CAR entity와 TRUCK entity를
VEHICLE superclass
로generalize
한 것을 볼 수 있다.generalized superclass
: VEHICLE을 의미
specialization과 구분
일반적으로 generalization과 specialization은 역의 관계를 나타내고, notation방식도 따로 있지만, 이 둘을 사용하는 상황이 주관적이기에 사용되지 않는다.
Constraint in Specialization, Generalization
Constraint
⭐️Predicate-defined subclasses
- 정의
superclass의 특정 attribute에 조건에 의해 subclass entity를 결정할 수 있는 경우
EMPLOYEE의 job-type속성
을 의미한다.- ⭐️
predicate-defined(condition-defined) subclass
라고 한다.
- ⭐️
defining predicate
- job-type 속성처럼 subclass를 결정하는 attribute
⭐️attribute-defined specialization
- 정의
- ⭐️
모든 subclass가 동일한 superclass attribute에 멤버쉽 조건을 가진 경우
- 이를 ⭐️
attribute-defined specialization
이라고 한다.
- ⭐️
- 예시
- Job_type속성이 같은 모든 entity들은 같은 subclass에 속하게된다.
- Job_type이 Technician인 entity는 모두 TECHNICIAN subclass에 속한다.
- 그리고 이 속성을
defining attribute
,specialized attribute
라고 한다.
- Job_type속성이 같은 모든 entity들은 같은 subclass에 속하게된다.
⭐️user-defined specialization
- ⭐️
subclass와의 멤버쉽 조건을 가지지 않으면
해당 subclass는user-defined
라고 불린다.- 따라서,
user에 의해 각 entity가 individually으로 식별된다.
- 따라서,
- specialization이 1개의 subclass로만 이뤄지면({MANAGER}) ⭐️
circle notation을 사용하지 않는다.
1. ⭐️disjointness constraint
- superclass의 entity는 subclass 중 ⭐️
최대 1개에만
속한다. - ⭐️
single valued-attribute-defined specialization은 disjointness constraint를 의미한다.
- 왜냐하면, 1개 속성에 의해 subclass가 구분되는 것이기 때문이다.
d
라는 symbol로 표현된다.
2. ⭐️overlapping constraint
- superclass의 entity는 subclass 중 ⭐️
1개이상
에 속한다.- 동일한 entuty가 specialization에서 1개 이상의 subclass의 속할 수 있음을 의미한다.
3. ⭐️total specialization
- specialization에서 superclass의 모든 entity가
⭐️최소 1개의 subclass에 속해야함.
- 모든 employee는 HOURLY_EMPLOYEE 혹은 SALARIED_EMPLOYEE 둘 중 하나에 속한다.
- overlapping, disjoint에 상관없음
4. ⭐️partial specialization
- specialization에서 superclass의 entity가
⭐️어느 subclass에도 속하지 않을수도 있음.
- EMPLOYEE는 {SECRETARY, TECHNICIAN, ENGINEER}중 어느것에도 속하지 않을 수 있다.
- EMPLOYEE가 어떤 직군도 아닐수도 있다. MANAGER의 역할만 할수도 있다는 의미이다.
Possible constraints
disjointness constraint와 completeness constraint는 독립적이므로, 4가지의 경우가 발생한다.
- Disjoint, total
- Disjoint, partial
- Overlapping, total
-
Overlapping, partial
- 일반적으로,
generalization
을 통한 superclass는 항상total
이다.- superclass가 subclass들로부터 도출되기때문에, subclass의 모든 entity가 superclass에 속한다.
Insertion, Deletion rules
-
⭐️DB설계시
삽입, 삭제 규칙을 정하게된다. - Superclass에서 entity deletion
- 자동으로 subclass에서 entity 삭제
- Superclass에서 entity insertion
- defining predicate(subclass를 정하는 속성)를 만족하는 entity를
predicate-defined or attribute-defined
subclass에 자동으로 삽입
- defining predicate(subclass를 정하는 속성)를 만족하는 entity를
- total specialization한 superclass에 entity삽입
- 최소 1개의 subclass에 entity삽입
Top-down, Bottom-up
⭐️Top-Down Design
: 연쇄적인 specialization⭐️Bottom-Up Design
: 연쇄적인 generalization⭐️일반적으로 2개 설계 방법을 섞어서 사용한다.
Hierarchies and Lattices
Specialization ⭐️Hierarchy
subclass로 참여하는 모든 subclass가 ⭐️1개만의 class/subclass relationship을 가진다.
- 위 그림에서 ENGINEER, MANAGER, SALARIED_EMPLOYEE는 각각 1개 이상의 class/subclass relationship을 가지므로, 이에 속하지 않는다.
- 각 subclass가 1개의 parent를 가질때만을 의미,
⭐️tree structure, ⭐️strict hierarchy
라고도 부른다.
Specialization Lattice
subclass 중 1개가 ⭐️2개 이상의 class/subclass relationship의 subclass라는 의미
- STUDENT_ASSISTANT subclass는 EMPLOYEE와 STUDENT의 class/subclass relationship에서 subclass이다.
- 위 그림에서
STUDENT_ASSISTANT가 없었다면, hierarchy였지만,
STUDENT_ASSISTANT가 있기에 lattice이다.
INHERITANCE
superclass
PERSON
은 {EMPLOYEE, ALUMNUS, STUDENT}의 부분집합 중 한개에 반드시 속한다.EMPLOYEE
는 반드시 staff, faculty, student assistant 중 하나이다.STUDENT_ASSISTANT
는 {RESEARCH_ASSISTANT, TEACHING_ASSISTANT}중 하나에 속한다.STUDENT
는 {GRADUATE, UNDERGRADUATE} 중 하나에 반드시 속한다.
disjointness
- 모든 사람은 PERSON entity type에 속한다.
- PERSON entity type은 {EMPLOYEE, ALUMNUS, STUDENT}로 specialization된다. 이 specialization은
overlapping이므로, EMPLOYEE인 entity가 동시에 student일수도 있다.
- STUDENT subclass는 {GRADUATE, UNSERGRADUATE}의 superlcass이다.
- EMPLOYEE는 {STUDENT_ASSISTANT, GRADUATE_STUDENT, UNDERGRADUATE_STUDENT}의 superclass이다.
STUDENT_ASSISTANT는 STUDENT의 subclass인 것에 주의하자.
- STUDENT_ASSISTANT는 {RESEARCH_ASSISTANT, TEACHING_ASSISTANT}의 superclass이다.
inheritance
lattice든 hierarchy든, subclass는 direct superclass뿐만아니라 root까지의 모든 predecessor(direct 위) superclass의 attribute를 상속한다.
- 예를들어, GRADUATE_STUDENT는 STUDENT(direct)의 모든 attribute와 PERSON(predecessor)의 attribute를 상속한다.
entity는 계층의 여러 리프노드(더이상 subclass가 없는 class)에 동시에 존재할 수 있다.
- STUDENT에 속하는 entity는 반드시 {UNDERGRADUATE, GRADUATE} 중 하나여야한다.
- 동시에 STUDENT_ASSISTANT 일수도 있는데, STUDENT_ASSISTANT인 entity는 반드시 {RESEARCHING, TEACHING} ASSISTANT 중 하나이므로,
RESEARCH_ASSISTANT의 멤버가 GRADUATE_STUDENT일수도 있다.
shared subclass
- 1개 이상의 superclass를 가진 subclass를 의미.
- STUDENT_ASSISTANT나 ENGINEERING_MANAGER를 의미.
multiple inheritance
이며,1개라도 존재하면 lattice
- multiple inheritance에서 상속하는 superclass가 동시에 같은 class를 상속하면 (다이아몬드 상속) 1번만 상속해야한다.
- 1개의 superclass만 상속하면
single inheritance
이며,single inheritance만 존재하면 hierarchy
top-down vs bottom-up design
successive specialization
- top-down design
- PERSON -> STUDENT, EMPLOYEE, ALUMNI -> …
successive generalization
- bottom-up design
- 보통은 bottom-up과 top-down을 섞어서 사용한다.
UNION types Using Categories
- 종종, 다른 entity type의
⭐️entity의 집합을 표현
하는 것이 필요하기도 하다. -
multiple inheritance와는 다른것이, shared subclass는 superclass의 속성을 모두 가지지만, union type은 entity들의 단순 집합이라고 보는 것이 맞다.
- 이런 subclass를
union type, category
라고 부른다.
- 탈것과 탈것의 주인 관계를 만들기위해 BANK, PERSON, COMPANY 각각을 relationship에 연결하는 것이 아닌,
이 entity set들을 union type으로 만들어서 표현할 수 있다.
- 탈 것 또한, CAR, TRUCK을 relationship에 직접 연결하기보다는,
CAR, TRUCK의 entity set을 union type으로 만들어 표현할 수 있다.
category vs superclass/subclass relationship
- 다른
superclass/subclass relationship은 항상 1개의 superclass를 가지는 반면(subclass의 superclass는 여러개가 있을 수 있지만, superclass/subclass relationship의 superclass는 항상 1개일 수 밖에 없다.)
category는 별도의 entity type의 집합을 표현하는 2개이상의 superclass를 가진다.
-
OWNER와 ENGINEERING_MANAGER를 비교해보자.
⭐️category의 entity는 superclass 중 1개에만 속한다.
- OWNER의 entity는 PERSON, BANK, COMPANY 중 1개에만 속한다.
⭐️shared subclass의 entity는 항상 상속하는 superclass 모두에 속한다.
- ENGINEERING_MANAGER의 entity는 항상 engineer, manager, salaried_employee에 모두 존재해야한다.
⭐️selective attribute
-
category는 superclass중 1개에만 속하므로, 당연히 그 superclass의 attribute만 가지게된다.
-
shared subclass는 모든 superclass의 attribute를 상속한다.
vs specialization(generalization)
- 한가지 흥미로운 점은, specialization(generalization)과의 차이점이다.
specialization된 VEHICLE의 경우, 모든 VEHICLE이 CAR또는 TRUCK임을 의미한다.
-
하지만
UNION type인 REGISTERED_VEHICLE의 경우, CAR나 TRUCK 중 일부만이 union type에 참여한다는 것을 알 수 있다.
- 또한,
disjoint-partial 인 경우, VEHICLE이 모두 CAR나 TRUCK에 속하지 않을수도 있다.
total vs partial
- total category는 모든 superclass의 entity가 category에 속해야함을 의미한다.
- partial category는 superclass entity의 부분집합이 category에 속한다는 것을 의미한다.
만약 category가 total이라면, total specialization(generalization)으로 표현될 수도 있다.
댓글남기기