개인 공부/데이터베이스 설계
논리적 모델링
Koalitsiya
2023. 4. 19. 14:42
논리적 모델링(Logical Modeling)
- 개념적 설계 단계에서 추출된 객체와 속성들의 관계를 설계하는 단계
- 개념적 모델링 단계에서 ERD를 설계했다면, 이 단계에선 목표에 맞는 스키마를 설계하게 된다.
- 관계형 데이터베이스라면 테이블, 즉 릴레이션을 설계하는 단계이다.
논리적 모델링의 종류
- 계층형 데이터 모델
- 객체 지향형 데이터 모델
- 관계 데이터 모델
- 네트워크 데이터 모델
관계형 데이터 모델링(Relational Data Modeling)
Relation
- Table(Relation): 행과 열의 2차원 구조를 가진 데이터 저장 객체(Object)
- Column(Field, Attribute): 테이블에서 세로 방향으로 이루어진 개별 속성
- Row(Record, Tuple): 테이블에서 가로 방향으로 이루어진 연결된 데이터
Relation의 특성
- 튜플의 유일성: 하나의 릴레이션에는 동일한 튜플이 존재할 수 없다.
- 튜플의 무순서: 하나의 릴레이션에서 튜플 사이의 순서는 무의미하다.
- 속성의 무순서: 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.
- 속성의 원자성: 속성 값으로 원자 값만 사용할 수 있다.
제약(Constraints)
- 도메인 제약(Domain Constraints)
- 속성(Attribute)에 대한 제약
- 속성 값은 원자성(Atomicity)를 가지며, 도메인에서 정의된 값이어야 한다.
- Composite Attribute와 Multivalued Attribute는 허용되지 않는다.
- Not Null이 아닐 경우 Null 값은 허용된다.
- 도메인: 속성 하나가 가질 수 있는 모든 값의 집합, 즉 값의 범위
- 원자성: 더이상 분해할 수 없는 하나의 값
- Null 값: 특정 속성에 값이 없음을 나타내며, 튜플의 속성 값을 모르거나 적합한 값이 없는 경우에 사용
- 키 제약(Key Constraints)
- 릴레이션(Relation)에 대한 제약
- 릴레이션의 모든 튜플(Tuples)은 서로 식별이 가능해야한다.
- 슈퍼키(Super Key): 유일성을 만족하는 속성 또는 속성들의 집합, 키 값이 같은 튜플은 존재할 수 없다.
- 후보키(Candidate Key): 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
- 최소성: 필수적인 최소한의 속성들로만 키를 구성하는 특성
- 기본키(Primary Key): 여러 개의 후보키 중에서 기본적으로 사용할 키
- 개체 무결성 제약(Entity Integrity Constraints)
- 기본키(Primary Key)에 대한 제약
- 기본키는 Unique & Not Null 이어야 한다.
- 기본키 선택 시 고려 사항
- Null 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
- 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
- 자릿수가 적은 정수나 단순한 문자열인 속성으로 구성된 후보키를 기본키로 선택한다.
- 참조 무결성 제약(Referential Integrity Constraints)
- 외래키(FK: Foreign Key)에 대한 제약
- 외래키
- 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키(= 속성), 즉 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합
- 릴레이션 1이 릴레이션 2를 참조하는 경우, 릴레이션 2의 기본키는 릴레이션 1의 외래키로 사용된다.
- 외래키는 자기 자신이 속한 릴레이션을 참조할 수도 있다.
- 릴레이션 간의 관계를 표현하는 역할을 한다.
ER - to Relational Model 변환 단계
- step 1 : Mapping of Strong Entity Types
- 각 강성 개체에 대응되는 릴레이션을 생성
- 강성 개체의 단일 속성을 모두 릴레이션의 속성으로 포함
- 복합키의 경우 각 하위 컴포넌트만 포함
- 다중 속성은 추후 고려
- 강성 개체의 키 속성 중 하나를 선택하여 릴레이션의 기본키로 설정
- 복합키의 경우, 이에 속한 속성들의 조합이 릴레이션의 기본키가 된다.
- 각 강성 개체에 대응되는 릴레이션을 생성
- step 2 : Mapping of Weak Entity Types
- 각 약성 개체에 대응되는 릴레이션을 생성하고, 약성개체의 단일 속성을 모두 릴레이션의 필드로 포함
- 약성 개체의 식별 개체에 대해, 식별 개체의 기본키를 릴레이션의 외래키로 포함
- 릴레이션의 기본키는 식별 개체의 기본키와 약성 개체의 부분키의 조합으로 구성
- step 3 : Mapping of Binary 1:N Relationship Types
- 1:N Relationship RS에 대해 이 관계에 참여하는 두 개체를 각각 1-side와 N-side라 할 때
- 1-side의 기본키를 N-side의 외래키로 포함
- RS에 속한 모든 단일 속성을 N-side의 릴레이션에 포함
- 1:N Relationship RS에 대해 이 관계에 참여하는 두 개체를 각각 1-side와 N-side라 할 때
- step 4 : Mapping of Binary 1:1 Relationship Types
- 1:1 Relationship RS에 대해 이 관계에 참여하는 두 개체를 각각 S, T라 할 때
- 대안 1) T → S
- T의 기본키를 S의 외래키로 포함
- RS에 속한 모든 단일 속성을 S에 포함
- 대안 2) S → T
- S의 기본키를 T의 외래키로 포함
- RS에 속한 모든 단일 속성을 T에 포함
- 대안 1) T → S
- 1:1 Relationship RS에 대해 이 관계에 참여하는 두 개체를 각각 S, T라 할 때
- step 5 : Mapping of Binary M:N Relationship Types
- M:N Relationship RS에 대해 이 관계에 참여하는 두 개체를 각각 S, T라 할 때
- RS에 대응되는 새로운 릴레이션 생성
- RS에 속한 모든 단일 속성을 릴레이션에 포함
- S와 T의 기본키를 R의 외래키로 포함
- R의 기본키는 S에서 온 외래키와 T에서 온 외래키의 조합으로 구성
- step 6 : Mapping of N-ary Relationship Types
- N-ary Ralationship RS에 대해, 새로운 릴레이션을 생성 (N > 2일 시)
- RS의 모든 단일 속성을 릴레이션의 속성으로 포함
- RS에 참여하는 모든 Entity의 기본키를 R의 외래키로 포함
- R의 기본키는 모든 외래키의 조합으로 구성하나
- 단, 대응수가 1인 관계로부터 가져온 외래키는 기본키의 조합에서 제외
- step 7 : Mapping of Multivalued Attributes
- Entity에 속한 다중 값 속성 MA에 대해 릴레이션 생성
- MA의 속성을 릴레이션에 포함(→ attribute A)
- Entity의 기본키를 릴레이션의 외래키로 포함
- 릴레이션의 기본키는 E의 기본키와 A의 조합으로 구성