Hyun's Wonderwall

[데이터베이스] Chapter 6. Database Design Using the E-R Model 본문

Subjects/데이터베이스

[데이터베이스] Chapter 6. Database Design Using the E-R Model

Hyun_! 2024. 6. 12. 13:28

Entity Sets 개체 집합

* An entity is an object that exists and is distinguishable from other objects.

* An entity set is a set of entities of the same type that share the same properties.

* entity는 a set of attributes로 나타나진다.

ex. instructor = (ID, name, salary)

* 속성들의 부분집합은 primary key를 만든다 -> set의 각 구성원들을 unique하게 식별한다.

(테이블이 Entity set이고 튜플이 entity이다)

 

ER Diagram에서 Entity set 표현하기

- Rectangles = entity sets. 엔티티 셋 이름을 적고 엔티티 사각형 안에 속성들을 나열한다.

- 밑줄은 primary key를 의미한다.

 

Relationship Sets

* A relationship is an association among several entities

* A relationship set 은 2개 이상의 엔티티들이 관계로 묶여있는 것이다.

* relation ship에 추가적인 정보를 붙일 수 있다.

advisor 관계 셋에 date라는 속성을 추가하고 싶다 -> 아래처럼 붙인다.

 

advisor: relationship sets를 의미한다.

 

Reduction to Relation Schemas 관계 스키마 축소

* entity sets와 relation ships는 "relation schemas"로 표현될 수 있다.

* ER diagram에 순응하는 데이터베이스는 스키마들의 집합으로 표현될 수 있다.

* 각 entity set과 relationship set들의 이름이 할당된 고유 스키마가 있다. 각 스키마에는 고유한 이름을 가진 여러개의 열들(속성들)이 있다.

 

Representing Entity Sets

* 강한 엔티티(Strong Entity): PK를 갖는 엔티티. 강한 엔티티 집합은 같은 속성들을 갖는 스키마로 축소된다.

  (이 attributes가 그대로 table 매핑한 결과가 된다)

Strong Entity Set -> Relational Schema

(name -> rel.name, attribute, rel.attribute)

 

Representing Relationship Sets

* mant-to-many relationship set은 두 참여 엔티티 집합의 PK 속성과 관계 집합의 설명적 속성을 가진 스키마로 표현된다. ( 양 entity set의 primary key를 가져와서 만들고, 설명 속성 추가 가능)

* Many to Many는 별도 테이블 생성이 필수이다.

Redundancy of Schemas 스키마의 중복

* 다가 total인(다 연결되는) 다대일 관계와 일대다 관계 잡합은 "many" 쪽에 extra attribute를 추가하여 나타낼 수 있다.

ex. inst_dept, stud_dept 테이블은 만들 필요 없다. 대신 instructor와 student에 dept_name 추가.

- 모든 instructor가 department와의 relation에 참여한다.

* 다 쪽이 부분적으로 참여하는 경우, extra attribute를 만든다면 null을 채워야 하는 상황 발생하기도 한다.

여기서는 교수가 1, 학생이 many이면서 지도교수가 없는 학생이 존재할 수가 있다.

 

Normaization(1NF, 2NF, 3NF)

두 테이블 모든 속성 join시 내용 중복, update 할때 문제가 생김 -> Normaization으로 테이블 쪼개는 것 중요


 

Normalization of Database (데이터베이스의 정규화)

 

- Normalization의 목적 2개: (1) 중복 데이터 제거, (2) 데이터의 논리적 저장에 대한 데이터 의존성을 보장

- 안하면 문제점: updation anomaly, insertion anomaly, deletion anomaly

Normalization Rule

1. First Normal Form, 2. Secon Normal Form, 3. Third Normal Form, 4. BCNF

 

First Normal Form (1NF)

- 한 튜플의 속성값에 두개의 값이 들어가면 안 된다.

 

Second Normal Form (2NF)

- key가 있으면 'key 전체'에 key가 아닌 컬럼들이 의존해야 한다. composite key 여러개 중 일부에 의존하면 안 된다.

- ex. 예시에서 student 테이블에 {student, age, subject}가 있는데 student table의 age 컬럼은 student 컬럼에만 의존하고 subject 컬럼에 의존하지 않는다. 따라서 subject table을 새로 만들어서 분리하였다.

 

Third Normal Form (3NF)

- non-prime인 어떤 속성에 의해 다른 non-prime 속성이 결정되면 안 된다.

- ex. student_detail 테이블에 주소가 "Street, City, State, Zip" 이렇게 있는데 주소가 우편번호에 의해 결정된다.

    key값이 아닌 것들 사이의 의존관계를 끊어 key값에만 의존하게 해야 한다.

-> student_detail 에는 "Zip" 만 두고 Address Table에 "Zip Street city state" 해서 Zip을 prime으로 설정했다.

 

* key 값에만 의존하도록 하는 것이 중요

 

(정규화 이해에 코딩애플 유튜브 동영상이 도움이 됐다)

https://www.youtube.com/watch?v=Y1FbowQRcmI