- study
- Unix_System
- Linux
- Python
- datastructure
- Univ._Study
- c++
- Android
- cloud_computing
- programmers
- pytorch
- tensorflow
- Personal_Study
- app
- SingleProject
- Algorithm
- 2023_1st_Semester
- Kubernetes
- Database_Design
- codingTest
- 티스토리챌린지
- 오블완
- Artificial_Intelligence
- Java
- 자격증
- 리눅스마스터2급
- Operating_System
- Baekjoon
- C
- Image_classification
코딩 기록 저장소
[23-01/데이터베이스 설계] 논리적 모델링 본문
1. 관계 데이터 모델
테이블
용어 | 설명 |
Table (Relation) |
행과 열의 2차원 구조를 가진 데이터 저장 객체 (Object) |
Column (Field, Attribute) |
테이블에서 세로 방향으로 이루어진 개별 속성 |
Row (Record, Tuple) |
테이블에서 가로 방향으로 이루어진 연결된 데이터 |
2. 관계 모델 제약조건
도메인 제약 (Domain Constraints)
- 속성(Attribute)에 대한 제약
- 속성 값은 원자성(Atomicity)을 가지며, 도메인에서 정의된 값이어야 함
- 복합 속성과 다중값 속성은 허용되지 않음 (cf : 주소 = 시군구 + 상세주소)
- NULL 값은 허용됨 (Not NULL이 아닌 경우)
● 도메인
- 속성 하나가 가질 수 있는 모든 값의 집합, 즉 값의 범위
● 원자성
- 더는 분해할 수 없는 하나의 값
키 제약 (Key Constraints)
- 릴레이션(Relation)에 대한 제약
- 릴레이션의 모든 튜플은 서로 식별이 가능해야함
● 수퍼키
- 유일성의 특성을 만족하는 속성 또는 속성들의 집합, 키 값이 같은 튜플은 존재할 수 없음
● 후보키
- 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
● 기본키
- 여러 개의 후보키 중에서 기본적으로 사용할 키
개체 무결성 제약 (Entity Integrity Constraints)
- 기본키(Primary Key)에 대한 제약
- 기본키(PK : Primary Key)는 UNIQUE & NOT NULL이어야 함
- UNIQUE & NOT NULL 제약 조건이라고도 함
※ 기본키 선택시 고려 사항
- 널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합
- 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합
- 단순한 후보키를 기본키로 선택
참조 무결성 제약 (Referential Integrity Constraints)
- 외래키(FK : Foreign Key)에 대한 제약
- 외래키는 참조할 수 없는 값을 가질 수 없음
- 릴레이션 R1이 릴레이션 R2를 참조하는 경우, R1의 FK는 Null이거나, Null이 아닌 경우 R2에 실제로 존재하는 값으로 구성 되어야 함
● 외래키(FK : Foreign Key)
- 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키(= 속성), 즉 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합
- 릴레이션 R1이 릴레이션 R2를 참조하는 경우, R2의 기본키에는 R1에서 외래키로 사용됨
- FK는 자기 자신이 속한 릴레이션을 참조할 수도 있음
- 릴레이션 간의 관계를 표현하는 역할
-----
+ Relation의 특성
- 튜플의 유일성 : 하나의 릴레이션에는 동일한 튜플이 존재할 수 없음.
- 튜플의 무순서 : 하나의 릴레이션에서 튜플 사이의 순서는 무의미함.
- 속성의 무순서 : 하나의 릴레이션에서 속성 사이의 순서는 무의미함.
- 속성의 원자성 : 속성 값으로 원자 값만 사용 가능함.
memo : 릴레이션이란?
- 데이터들을 표(table)의 형태로 표현한 것.
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨.
3. 관계 데이터 모델링
ER - to - Relational Model 변환 규칙
- 강한 개체 타입의 변환
- 약한 개체 타입의 변환
- 1:N 관계의 변환
- 1:1 관계의 변환
- M:N 관계의 변환
- N-ary 관계의 변환
- 다중값 속성의 변환
■ 변환 전의 ER Diagram
1단계 - 강한 개체 타입의 변환
- 각 강한 개체 E에 대응되는 릴레이션 R을 생성함
- E의 단일 속성들을 모두 R의 속성으로 포함시킴
- 복합 속성의 경우 각 하위 컴포넌트만 포함시킴
- 다중값 속성은 추후 고려함
- E의 키 속성 중 하나를 선택하여 R의 기본키(Primary Key)로 정함
- 복합 키의 경우, 이에 속한 속성들의 조합이 R의 기본키가 됨
2단계 - 약한 개체 타입의 변환
- 각 약한 개체 W에 대응되는 릴레이션 R 생성
- W의 단일 속성들을 모두 R의 속성으로 포함시킴
- W의 식별 개체 E에 대해서, E의 기본키를 R의 외래키로 포함시킴
- R의 기본키는 E의 기본키와 W의 부분키(Partial Key)의 조합으로 구성
3단계 - 1:N 관계의 변환
- 각 1:N 관계 RS에 대해, 이 관계에 참여하는 두 개체를 각각 A(N-side)와 B(1-side)라고 하면
- B의 기본키를 A의 외래키로 포함
- RS에 속한 모든 단일 속성을 A에 포함시킴
4단계 - 1:1 관계의 변환
- 각 1:1 관계 RS에 대해, 이 관계에 참여하는 두 개체를 각각 A와 B로 한다면
- A -> B이나 B->A 방향 중 한 방향을 정해서
- 기본키와 RS에 속한 모든 단일 속성을 다른 개체에 포함시킴
5단계 - M:N 관계의 변환
- 각 M:N 관계 RS에 대해, 이 관계에 참여하는 두 개체를 각각 A와 B라고 한다면
- RS에 대응되는 새로운 릴레이션 R을 생성함
- RS에 속한 모든 단일 속성을 R에 포함시킴
- A와 B의 기본키를 R의 외래키로 포함
- R의 기본키는 S에서 온 외래키와 T에서 온 외래키의 조합으로 구성
6단계 - N-ary 관계의 변환
- 각 N-ary 관계 RS에 대해, 새로운 릴레이션 R을 생성함
- N>2인 경우에 해당됨
- RS의 모든 단일 속성을 R의 속성으로 포함시킴
- RS에 참여하는 모든 개체의 기본키를 R의 외래키로 포함시킴
- R의 기본키는 모든 외래키의 조합으로 구성됨
- 단 대응수가 1인 관계로부터 가져온 외래키는 기본키의 조합에서 빠짐
7단계 - 다중값 속성의 변환
- 개체 E에 속한 다중값 속성 MA에 대해 릴레이션 R 생성
- MA의 속성을 R에 포함시킴 (-> 속성 A)
- E의 기본키 K를 R의 외래키로 포함시킴
- R의 기본키는 K와 A의 조합으로 구성됨
■ 변환 후의 Relational Schema
4. 정규화 - 세 번째 일반 양식
■ 정규화 (Normalization)
- 릴레이션을 관련있는 속성들로만 구성하기 위해 릴레이션을 분해(Decomposition)하는 과정
■ 함수적 종속성 (FD - Functional Dependency)
- 어느 시점에서든 릴레이션 내의 모든 튜플에서 하나의 X 값에 대한 Y값이 항상 하나면 "X가 Y를 함수적으로 결정한다" 또는 "Y가 X에 함수족으로 종속되어 있다"
- 함수 종속 관계 : X -> Y, X : 결정자, Y : 종속자
■ 함수 종속 관계
'학교 공부 > 데이터베이스 설계' 카테고리의 다른 글
[23-01/데이터베이스 설계] 쿼리 (0) | 2023.05.10 |
---|---|
[23-01/데이터베이스 설계] 테이블 (0) | 2023.05.03 |
[23-01/데이터베이스 설계] DB 개요 및 개념적 모델링 (1) | 2023.04.27 |