Informal Design Guidelines for Relation Schemas
Designing a relation database -> 주어진 애플리케이션을 위한 좋은 테이블 스키마의 집합을 정의하는 것. 각 테이블에 추가될 attribute를 결정하는 것
Rough criteria for a good table schema
1. Semantics of Attributes -> 각 tuple은 real-world에 존재하는 오직 하나의 entity instance, relationship instance에 부합해야함
2. Redundant Information in Tuples -> update anomaly가 일어나지 않도록
3. NULL Vaules in Tuples -> 새로운 relation을 만들어서 NULL값이 가능한 생기지 않도록
4. Spurious Tuples -> JOIN attribute가 (FK, PK) pair가 되도록
Formal Criteria -> Normalization
Semantics of Attributes in Relations
- 각 tuple은 real-world에 존재하는 오직 하나의 entity instance, relationship instance에 부합해야하므로, 하나의 relation에 속하는 모든 attribute는 real-world에서 상호 관련된 의미를 가져야한다.
-> 다수의 entity/relationship type에 속하는 attribute를 single relation에 합치지 말아야한다.
Redundent Information
중복되는 정보들이 많으면 불필요하게 저장공간을 많이 차지하기 때문에 좋지않을 뿐더러 tuple을 update할 때 예상대로 되지 않는 Update Anomalies가 발생할 수 있다.
- 위 EMP_DEPT 테이블로 설명하는 Update Anomalies
1. Insertion Anomalies : Employee가 없는 Department 만들기 불가능
2. Deletion Anomalies : Employee가 한 명 남은 Department에서 Employee 지우기 불가능
3. Modification Anomalies 한 tuple에서 Dmgr_ssn을 변경 하면 다른 tuple에 있는 것도 바꿔야하는 오버헤드
-> update anomaly가 일어나지 않도록 해야한다.
NULL Values in Tuples
Problems with NULL values
1. 저장공간 낭비
2. 의미상 모호함
3. aggregation function 사용 불가
-> 새로운 relation을 만들어서 NULL값이 가능한 생기지 않도록 할 수 있다.
Spurious Tuple
NATURAL JOIN은 의미없는 spurious(가짜) tuple을 만들어낼 수 있다.
이 두 테이블을 NATURAL JOIN 하면
이런 식으로 다수의 spurious tuple이 생성된다. 이는 join attribute가 FK, PK 조합이 아니기 때문에 발생하는 것이다.
-> JOIN attribute가 (FK, PK) pair가 되도록 해야한다.
Functional Dependencies
relation schemas를 분석하기 위한 formal한 tool이다. key와 함께 normal form을 정의하기 위해 사용된다.
X와 Y를 각각 relation schema R에 속하는 attribute의 집합이라고 하자.
X->Y이면 X의 value들이 Y의 value들을 functionally determine한다고 한다.
또는 Y가 X에 functionally dependent하다고 한다.
이는 t_1이라는 tuple과 t_2라는 tuple이 있을 때, t_1[X] = t_2[X]라면, t_1[Y] = t_2[Y]라는 뜻이다.
만약 X가 R의 candidate key라면 X의 값에 따라 Y의 조합이 달라질 수 밖에 없기 때문에 R의 어떤 attribute 부분집합 Y가 결정 되더라도 X->Y는 항상성립된다.
그러나 X->Y라면 Y->X는 아니다. (역은 성립하지 않는다.)
FD는 table schema R의 고유 특성이므로 table instance가 주어졌을 때 추론하는 것이 아닌, 데이터베이스를 설계하면서 정의된다.
Inference Rules for FDs
F: table schema R에서 명시되는 FD의 집합
F+: F로부터 추론될 수 있는 모든 Dependency의 집합으로, F를 당연히 포함한다. 이를 F의 closure라고도 부른다.
- Armstrong's inference rules
- Other inference rules
- Example
X: FD(X->Y)에서의 X
X+: X에 의해 Functionally determined 되는 모든 attribute들의 집합
- X+를 찾는 알고리즘
- Example
'Computer Science > Database Systems' 카테고리의 다른 글
[Database Systems] Relational Database Design Algorithms (0) | 2025.02.09 |
---|---|
[Database Systems] Normalization (0) | 2025.02.07 |
[Database Systems] SQL (3) (0) | 2025.02.04 |
[Database Systems] SQL (2) (0) | 2025.02.01 |
[Database Systems] SQL (1) (0) | 2025.01.30 |