업데이트:

태그: ,

카테고리:

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에서 가지는 중요성에따라 명시적으로 표현될 필요가 있다.


스크린샷 2022-10-03 오후 10 00 42

  • Employee 라는 entity type은 SECRETARY, TECHNICIAN, ENGINEER, MANAGER, 등으로 구성된다.
  • 총 3가지의 SUBCLASS로 구분된다.{job type, manager, hired type}

  • subclass, subtype
    • EMPLOYEE의 subgrouping
  • superclass, supertype
    • EMPLOYEE


⭐️IS-A heirarchies

  • superclass/subclass relationship, supertype/subtype relationship, class/subclass relationship
    • subclass와 superclass간의 관계를 의미.


  • ⭐️필요성
    1. 특정한 subclass를 서술하는 속성을 추가하기위해
    2. 관계에 참여하는 개체를 식별하기위해


  • ⭐️주의
    • 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을 구분하는 것을 기반으로 한다.


⭐️절차

  1. ⭐️additional specific(local) attribute
    • subclass는 특정한 attribute(local)을 가질 수 있다.
    • secretary, engineer모두 employee를 상속해 employee의 속성을 공통적으로 가지지만,
    • secretary는 typing speed라는 특정 속성을 가진다.
    • 스크린샷 2022-10-03 오후 10 57 50


  1. ⭐️additional specific relationship type
    • subclass는 특정한 관계에 참여할 수 있다.
    • HOURLY_EMPLOYEE는 BELONGS_TO라는 특정한 관계에 참여한다.
    • 스크린샷 2022-10-03 오후 10 56 19


subclass를 사용하는이유

  1. ⭐️local attribute
    • entity의 일부만이 가지는 속성이 있을 수 있으며,
  2. ⭐️specific relationship type entity의 일부만이 참여하는 관계가 있을 수 있다.

이를 표현하기위해 subclass를 사용한다.


관계

스크린샷 2022-10-03 오후 11 00 56

  • superclass/subclass 간에는 1:1관계같지만, 다르다.
    • 1:1 관계는 relationship의 각 entity가 별도의 entity이지만,
    • class/subclass에서는 각 entity가 동일한 entity이다.
      • 단지 특정한 역할을 한다는 것을 표현한다.


예시

  • ex) subclass{SECRETARY, ENGINEER, TECHNICIAN}는 superclass{EMPLOYEE}을 job type(characteristic)을 기반으로 specialization하는 것이다. 스크린샷 2022-10-03 오후 10 38 22
    • 각 subclass는 typing speed, tgrade같은 specific attribute를 가진다.


스크린샷 2022-10-03 오후 10 54 50

Generalization

정의

  • 주어진 entity type으로 일반화된 ENTITY TYPE을 정의하는 절차를 의미
  • Specialization의 역
  • subclass들을 묶어 단일의 superclass로 일반화하는 것을 의미한다.

스크린샷 2022-10-04 오전 2 36 41

  • 위 그림에서 CAR entity와 TRUCK entity를 VEHICLE superclassgeneralize한 것을 볼 수 있다.
    • generalized superclass : VEHICLE을 의미


specialization과 구분

일반적으로 generalization과 specialization은 역의 관계를 나타내고, notation방식도 따로 있지만, 이 둘을 사용하는 상황이 주관적이기에 사용되지 않는다.



Constraint in Specialization, Generalization

Constraint

스크린샷 2022-10-04 오전 3 02 11

⭐️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라고 한다.


⭐️user-defined specialization

  • 스크린샷 2022-10-04 오전 3 05 03

  • ⭐️subclass와의 멤버쉽 조건을 가지지 않으면 해당 subclass는 user-defined라고 불린다.
    • 따라서, user에 의해 각 entity가 individually으로 식별된다.
  • specialization이 1개의 subclass로만 이뤄지면({MANAGER}) ⭐️circle notation을 사용하지 않는다.


1. ⭐️disjointness constraint

스크린샷 2022-10-04 오전 4 04 56

  • superclass의 entity는 subclass 중 ⭐️최대 1개에만 속한다.
  • ⭐️single valued-attribute-defined specialization은 disjointness constraint를 의미한다.
    • 왜냐하면, 1개 속성에 의해 subclass가 구분되는 것이기 때문이다.
  • d라는 symbol로 표현된다.


2. ⭐️overlapping constraint

스크린샷 2022-10-04 오전 4 05 26

  • superclass의 entity는 subclass 중 ⭐️1개이상에 속한다.
    • 동일한 entuty가 specialization에서 1개 이상의 subclass의 속할 수 있음을 의미한다.


3. ⭐️total specialization

스크린샷 2022-10-04 오전 4 17 05

  • specialization에서 superclass의 모든 entity가 ⭐️최소 1개의 subclass에 속해야함.
  • 모든 employee는 HOURLY_EMPLOYEE 혹은 SALARIED_EMPLOYEE 둘 중 하나에 속한다.
  • overlapping, disjoint에 상관없음


4. ⭐️partial specialization

스크린샷 2022-10-04 오전 4 15 40

  • 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에 자동으로 삽입
  • total specialization한 superclass에 entity삽입
    • 최소 1개의 subclass에 entity삽입


Top-down, Bottom-up

  • ⭐️Top-Down Design : 연쇄적인 specialization
  • ⭐️Bottom-Up Design : 연쇄적인 generalization
  • ⭐️일반적으로 2개 설계 방법을 섞어서 사용한다.



Hierarchies and Lattices

스크린샷 2022-10-05 오전 2 27 18

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이다.

스크린샷 2022-10-05 오전 2 38 36

  • 위 그림에서 STUDENT_ASSISTANT가 없었다면, hierarchy였지만,
    • STUDENT_ASSISTANT가 있기에 lattice이다.




INHERITANCE

스크린샷 2022-10-05 오전 2 38 36

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라고 부른다.

스크린샷 2022-10-05 오전 4 58 12

  • 탈것과 탈것의 주인 관계를 만들기위해 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를 비교해보자.

  • 스크린샷 2022-10-05 오전 5 07 27
  • 스크린샷 2022-10-05 오전 5 07 09

  • ⭐️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)과의 차이점이다.

스크린샷 2022-10-05 오전 5 38 33 스크린샷 2022-10-05 오전 5 38 19

  • 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)으로 표현될 수도 있다.

댓글남기기