Database System Concepts - 7th edition
www.db-book.com
< 인터넷에 제공되어있는 Avi Silberschatz 외 2인, Database System Concepts - 7th edition, McGraw-Hill, 2019 에 관한 자료를 참조 >
Index
- Overview of the Design Process
- The Entity-Relationship Model
- Complex Attributes
- Mapping Cardinalities
- Primary Key
- Removing Redundant Attributes in Entitey Sets
- Reducing E-R Diagrams to Relational Schemas
- Extended E-R Features
- Entity-Relationship Design Issues
- Alternative Notataions for Modeling Data
1. Overview of the Design Process
데이터베이스 설계 과정의 개요를 제공하는 법을 알아보자.
개체 - 관계 데이터 모델에 대해 알아보자.
완전히 설계된 개념적 스키마는 데이터베이스를 사용하는 모든 기능에 대한 요구를 충족시켜야 한다.
설계 과정은 다음과 같다.
- 시작 단계
- 사용자 관점에서의 데이터 필요를 완전히 특정화한다.
- 두 번째 단계
- 데이터 모델을 선택한다.
- 필요성들을 데이터베이스의 개념적 스키마 형태로 옮겨 적는다.
- 마지막 단계
- 추상적 데이터 모델에서 데이터베이스 구현을 하는 단계이다.
- 데이터베이스 스키마를 결정하는 논리적 설계를 한다.
- 데이터베이스의 물리적 레이아웃을 결정하는 물리적 설계를 한다.
설계 대안
- 중복성
- 데이터 중복을 피해야 한다.
- 불완전성
- 나쁜 설계는 기업이 요구하는 것들 중 특정 측면을 어렵거나 불가능하게 만들 수 있다.
- 이러한 것들을 피하기 위해서, 우리가 선택해야할 수많은 좋은 설계들이 존재한다.
- 본 책에서는 Entity-Relational Model(개체-관계 모델)을 주로 다룬다.
개체 - 관계모델
- Entity
- 실제 세계 속 어떠한 '것' 혹은 '객체'를 의미한다. 이는 다른 객체들과 구분 가능한 것이어야 한다.
- set of attributes, 속성의 집합으로 표현된다.
- Ex) Student = (ID, dept, name, e-mail)
- Student Entity는 ID, dept, name, e-mail이라는 attributes들의 집합으로 표현된다.
- Relationship
- 여러 개체들간 관계를 의미한다.
- 이 모델은 E-R diagram(다이어그램)으로 도식화할 수 있다.
정규화 이론
어떤 디자인이 나쁜지 아닌지 검증을 할 수 있는 방법이며, 추후에 배운다.
The Entity-Relationship Model
ER 데이터 모델은 다음 세 가지 기본 개념으로 구성된다.
- 개체 집합
- 개체가 하나의 학생을 의미한다면, 개체 집합은 이 학생들을 모아놓은 개념 단위이다.
- 같은 개체 집합에 속하는 개체들은 동일한 특성을 가진다.
- 개체집합은 속성집합으로 나타내진다. 위에 상기한 대로 말이다.
- 속성들의 집합은 주요 키를 형성하는데, 이는 개체집합의 튜플들을 구별할 수 있게 해준다.
E-R 다이어그램에서,
- 직사각형은 개체집합을 표현한다.
- 속성은 개체 직사각형 내부에 표현한다.
- 주요 키는 밑줄로 표현한다.
- 관계 집합
- 수많은 개체들의 관계를 개념적으로 묶어놓은 것을 의미한다.
- instructor 과 student 개체집합에 대해 advisor라는 관계집합이 존재한다(학생을 가르쳐주는 교수).
- ER diagram에서 다이아몬드 그림이 관계집합을 표현한다.
- 관계집합은 속성도 포함할 수 있다.
- 같은 entity set에 대한 관계를 가지는 경우(재귀적 관계) 각 관계들을 구분하기 위해 Role(역할)이라는 개념이 사용된다. 이는 개체와 관계를 잇는 실선 위에 표현한다.
- 관계 집합에 대해 연결된 개체 집합의 수로 관계집합의 차수를 정의한다.
- 두 개의 개체집합이 관계를 맺으면 이 관계집합은 이진 관계(Binary relationship)라고 한다.
- 삼진, 그 이상의 차수를 가질 수도 있으나 대부분의 관계집합은 이진 관계이다.
Complex Attributes
속성은 다음으로 세분화 할 수 있다.
- Simple attributes
- 여러 부분집합으로 나뉘지 않는 속성을 의미한다. 원자성을 가지고 있다.
- composite attributes
- 복합속성이라고 하며, 여러 부분집합으로 나뉠 수 있는 속성이다. 집 주소의 전체를 속성으로 가진다면 도, 시, 군, 구 단위로 속성을 분해할 수 있다.
- 이렇게 분해된 속성 중 원자성을 가지는 속성을 component attribute 라고 한다.
- Single-valued attributes
- 단일 값 속성이라고 하며, 하나의 개체(튜플)는 무조건 하나의 값을 가져야 하는 속성이다.
- Multivalued attributes
- 다중 값 속성이라고 하며, 하나의 개체는 해당 속성에 대해 여러 값을 가질 수도 있다.
- Derived attributes
- 파생 속성이라고 하며 다른 속성들로부터 계산되는 속성이다. age라는 속성은 date_of_birth(태어난 이후부터 현재까지의 일 수)로부터 파생(계산)될 수 있다.
Domain
각 속성이 가질 수 있는 값들의 집합이다.
속성 Semester(계절)의 도메인은 분명 {Spring, Summer, Fall, Winter}이다.
ER diagram에서의 속성 표현
복합 속성은 들여쓰기로 표현한다.
다중 값 속성은 { }로 표현한다.
파생 속성은 ()로 표현한다.
Mapping Cardinalities
대응 카디널리티라고한다.
엔티티 집합이 관계를 가질 때, 각 개체들이 대응되는 수를 의미한다.
이는
- 일 대 일
- 하나의 개체는 하나의 개체와 관계를 맺는다.
- 일 대 다
- 하나의 개체는 여러 개체와 관계를 맺는다.
- 다 대 일
- 바로 위의 역
- 다 대 다
- 다수의 개체는 다수의 개체와 관계를 맺는다.
로 구분된다.
ER diagram 에서의 대응 카디널리티
화살표는 관계에서 해당 개체 집합은 "하나"만 관계를 맺게 하는 것을 의미한다.
그냥 실선은 "다수"의 개체가 맺는 관계를 의미한다.
전체 참여와 부분 참여
개체 집합에 대해 모든 개체가 관계에 참여했을 때 전체참여했다고 한다.
이는 ER diagram에서 이중 선으로 표현한다.
개체 집합에 대해 몇몇의 개체만 관계에 참여하면 이를 부분참여라고 말한다.
Primary Key
주요 키는 개체들, 관계들 각각을 구분지을 수 있게 해준다.
Primary key for Entity Sets
릴레이션 스키마에서 primary key가 하는 역할과 동일한 역할을 한다.
주요 키는 각 개체들을 유일하게 구분지어주는 역할을 하게 되며 속성들의 집합으로 구성된다.
Primary Key for Relationship Sets
관계 집합의 주요 키는 각 개체집합에서의 주요 키의 합집합으로 표현된다.
이진 관계에서 주요 키는 각 case에 따라 다음을 선택해야 한다.
- 다 대 다 관계
- 각 개체집합의 주요 키(혹은 최소한의 슈퍼키; 후보 키)의 합집합
- 일 대 다 관계
- "많은" 쪽의 주요 키
- 다 대 일 관계
- "많은" 쪽의 주요 키
- 일 대 일 관계
- 두 개체 집합의 주요 키중 하나
Weak Entity Sets
다른 개체 집합에 종속적으로만 존재할 수 있는 개체 집합을 의미한다.
일반적으로 약한 개체집합은 식별 관계집합에 전체참여해야 하며, 식별 개체집합 방향으로 다 대 일 관계이다.
식별 관계집합은 약한 개체집합이 맺는 관계집합을 의미한다.
약한 개체집합이 아닌 개체집합은 강한 개체집합이라고 하며, 약한 개체집합이 종속된 개체집합을 식별 개체집합이라고 한다.
이때 식별 관계집합의 주요 키는 약한 관계집합의 구별자와 식별 개체집합의 주요 키의 합집합으로 구성된다.
* ER model 에선 개체 집합과 관계 집합 간으로 연결된 scheme에 대해 중복된 속성을 가지면 안된다. 물론 실제 구현시 이와 미세하게 차이가 있을 수 있다.
Reducing ER diagrams to Relational Schemas
ER diagram을 관계 스키마로 변환하는 과정이다.
다음과 같다.
- 강한 개체집합은 하나의 릴레이션으로 표현한다.
- 약한 개체집합은 자신의 주요 키에 식별 개체집합의 주요 키를 포함한 채 하나의 릴레이션으로 표현한다.
- 복합 속성의 구성 속성들은 독립된 속성들로 표현되어야 한다.
- 복합 속성 name은 구성 속성으로 first_name, middel_initail, last_name을 가지고 있는데 이 세가지 모두 독립된 속성으로 표현되어야 한다.
- 다중값 속성은 무시하면서 구현한다. 다른 릴레이션으로 따로 빼서, 참조 제약을 걸어 표현한다.
- 관계집합도 하나의 릴레이션으로 표현한다. 관계를 맺는 개체집합의 주요 키들의 합집합으로 관계집합의 주요 키를 표현한다.
- 다 대 일 관계집합은 한쪽의 주요 키만 가져오고, 나머지 한쪽의 주요 키를 주요 키가 아닌 일반 속성으로 가져옮으로써 표현할 수 있다.
- 근데 이렇게 표현한 것중 몇개는 그냥 한 쪽 개체집합에 참조 키를 넣으므로써 더 간단하게 표현 가능하다. 중복성을 제거해주기에 더 좋은 데이터베이스 스키마라고 할 수 있다.
- 일 대 일 관계집합에 대해, 주요 키는 양쪽 관계집합의 주요 키 중 하나로 설정하여 표현가능하다.
- 약한 개체집합의 표현에 대해, 약한 개체집합의 정보는 이미 식별 관계집합의 정보로 표현되어 있으므로, 데이터 중복을 피하기 위해 약한 개체집합은 실제 릴레이션 스키마로 표현하지 않아도 된다.
- 다 대 일 관계집합은 한쪽의 주요 키만 가져오고, 나머지 한쪽의 주요 키를 주요 키가 아닌 일반 속성으로 가져옮으로써 표현할 수 있다.
Extended E-R Features
E-R 모델의 특징들을 추가적으로 알아보자.
Specialization
구체화, Top-down 설계 과정이다.
- 개체 집합을 구체화하면서 여러 개체집합을 만들어 나갈 수 있다.
- 이러한 sub-grouping은, 관계의 상속을 만들어낸다. 슈퍼클래스가 맺는 관계는 하위클래스에도 무조건 적용된다.
- person의 하위 클래스로 worker, instructor, student 등이 있겠다.
- person이 food 개체집합과 eat이라는 관계를 맺는다면 하위클래스들도 응당 food 개체집합과 eat의 관계를 맺는다.
- 상위-하위 개체집합은 ISA, is-a 라는 관계를 가진다.
- instructor "is a" person
- Overlapping
- 어떤 개체가 person의 하위 개체라면 worker, instructor, student 중 여러개에 걸쳐도 된다.
- Disjoint
- 어떤 개체가 person의 하위 개체라면 무조건 worker, instructor, student 중 하나여야 만 한다.
- 구체화 관계를 실제로 구현하는데에는 두 가지 방법이 있다.
- 상위 개체집합의 pk를 속성에 포함하여 릴레이션 스키마로 만드는 방법이다.
- Drawback : 정보의 중복 문제는 없지만, 실제 정보를 얻으려면 하위 개체집합의 릴레이션뿐만 아니라 상위 개체집합의 릴레이션까지 탐색해야 하는 문제가 있다.
- 상위 개체집합의 모든 속성을 상속받아 하위 개체집합의 속성에 포함하여 릴레이션 스키마로 만드는 방법이다.
- Drawback : 정보의 탐색 시 한 릴레이션만 보면 된다는 장점이 있으나 , data redundancy, 정보의 중복이 발생한다.
- 따라서 Database의 관점에서는 데이터 중복이 굉장히 큰 문제이기 때문에 전자의 방법이 더 효율적이다.
- 상위 개체집합의 pk를 속성에 포함하여 릴레이션 스키마로 만드는 방법이다.
Generalization
일반화, bottom-up 설계 과정이다.
여러 개의 개체집합을 혼합하여 공통된 특성을 가지는 상위 개체집합을 설계한다.
Specialization과 Generalization은 서로의 역과정이므로, ER diagram에선 동일한 방법으로 표현된다.
Completeness constraint
위에서 살펴본 구체화/일반화에 대한 제약 조건 유형은 "중첩이 있는지 / 아닌지" 였다. 이번에는 완전성 제약 조건을 살펴본다.
이는 상위 개체집합에 있는 개체가 일반화나 구체화에서 반드시 하나 이상의 하위 개체집합에 속해야 하는지의 여부를 결정한다. 조건은 다음 두 가지로 나뉜다.
- 전체 구체화 / 전체 일반화
- 모든 상위 개체는 어떤 하위 개체집합에 속한다.
- 부분 구체화 / 부분 일반화
- 어떤 상위 개체는 어느 하위 개체집합에던 속하지 않을 수 있다.
여기선 부분 구체화 / 일반화가 default이다. 전체 구체화/일반화는 ER diagram에서 " total " 이라는 키워드를 추가한다.
예를 들어, 대학교 데이터베이스에서 대학교가 학생도, 직원도 아닌 개인(person)을 표현할 필요가 없다면, 모든 개인을 학생이나 직원으로 specialization 하는 것은 total specialization이다. 그러나 학생도 직원도 아닌 개인이 표현될 필요가 있다면 이는 부분 구체화에 속한다.
중첩성 제약조건과 완전성 제약 조건은 독립적이라서, 구체화의 패턴은
- partial-overlapping; 부분-중첩 있음
- partial-disjoint; 부분-중첩 없음
- total-overlapping; 부분-중첩 있음
- total-disjoint; 부분-중첩 없음
으로 표현될 수 있다.
삽입 및 삭제 조건도 구체화/일반화에 적용된 제약 조건을 따른다.
Aggregation
통합화라 부른다.
ER model의 한 가지 단점은 관계들 간의 관계를 표현하지 못하는 것인데, aggregation을 통해 해결할 수 있다.
하나의 관계를 상위 개체로 취급하는 추상화 기법이다. 이런 개체 집합은 다른 개체 집합과 동일한 방법으로 취급한다.
Entity-Relationship Design Issues
개체-관계 설계 쟁점
- 다중값 속성
- 다중값 속성임을 알고 말고와 상관없이 이를 추가적인 개체집합으로 구분하지 않고 속성으로 사용하는것 어떤게 더 효율적인지 고민해야 한다.
- 개체 집합 vs 관계 집합
- 단순히 개체 집합간의 연결만을 의미하면 개체집합 - 관계 - 개체집합으로 표현하는게 좋을 수 있다. 그러나 그 관계에 추가적인 속성이 필요하다면 이를 추가적인 개체집합으로 만들어
개체집합 - 관계 - (관계집합에서 파생된) 개체집합 - 관계 - 개체집합 으로 표현하는게 좋을 수도 있다.
- 단순히 개체 집합간의 연결만을 의미하면 개체집합 - 관계 - 개체집합으로 표현하는게 좋을 수 있다. 그러나 그 관계에 추가적인 속성이 필요하다면 이를 추가적인 개체집합으로 만들어
- 이진 vs 비이진 집합
- 사실 대부분의 관계가 이진집합이다. 많은 경우에 비이진 집합을 어떻게 이진 집합으로 바꾸는 것을 고민한다.
Alternative Notations for Modeling Data
대안적 표기법 여러가지.
ER 말고 UML(Unified Modeling Language 통합 모델링 언어)도 존재.
'DataBase' 카테고리의 다른 글
[DataBase] Indexing (0) | 2023.06.05 |
---|---|
[DataBase] Data Storage Structures (0) | 2023.06.05 |
[DataBase] Physical Storage Systems (0) | 2023.06.04 |