일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- UNICON2023
- 도커
- EC2
- 프리티어
- 스프링
- UNICON
- 게임개발동아리
- 인프라
- 배포
- CICD
- 체크인미팅
- 오블완
- 생활코딩
- UNIDEV
- 라피신
- 위키북스
- Developer
- 개발공부
- 백엔드개발자
- 백엔드
- AWS
- 42서울
- 인디게임
- 온라인테스트
- 스프링부트
- 프로그래밍
- 티스토리챌린지
- 자바개발자
- 전국대학생게임개발동아리연합회
- RDS
- Today
- Total
Hyun's Wonderwall
[데이터베이스] Chapter 6. Database Design Using the E-R Model 본문
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을 채워야 하는 상황 발생하기도 한다.
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
'Subjects > 데이터베이스' 카테고리의 다른 글
[SQLD] 2024 개정 7시간 컷 합격 후기 (제55회) (0) | 2024.11.17 |
---|---|
[데이터베이스] Chapter 5: Advanced SQL (0) | 2024.06.11 |
[데이터베이스] 4. Intermediate SQL (0) | 2024.06.11 |
[데이터베이스] 3. Introduction to SQL (2) (0) | 2024.06.11 |
[데이터베이스] Chap 3. Introduction to SQL (0) | 2024.04.16 |