DBMS에 적합한 논리적 구조 설계를 통해
논리적 스키마(릴레이션 스키마)를 도출
- 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델
- 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장
릴레이션(relation)
- 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장
- 파일 관리 시스템에서 파일에 대응
- 테이블의 형태
속성(attribute)
- 릴레이션의 열
- 파일 관리 시스템에서 필드에 대응
튜플(tuple)
- 릴레이션의 행
- 파일 관리 시스템에서 레코드(record)에 대응
도메인(domain)
- 하나의 속성이 가질 수 있는 모든 값의 집합
- 속성 값을 입력 및 수정할 때 적합성의 판단 기준이 됩니다.
- 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의
null
- 속성 값을 아직 모르거나 해당되는 값이 없음을 표현합니다.
차수(degree)
- 하나의 릴레이션에서 속성의 전체 개수
cardinality
- 하나의 릴레이션에서 튜플의 전체 개수
- ex) degree: 4, cardinality: 4
릴레이션 스키마
- 릴레이션의 논리적 구조
- 릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의
- 릴레이션 내포(relation intension)라고도 함
- 정적인 특징이 있습니다.(=동적으로 변화하지 않습니다)
릴레이션 인스턴스(relation instance)
- 어느 한 시점에서 릴레이션에 존재하는 튜플들의 집합
- 릴레이션의 외연(relation extension)이라고도 합니다.
- 시기와 상황에 따라 동적으로 변화합니다.
튜플의 유일성
- 하나의 릴레이션에는 동일한 튜플이 존재 X
튜플의 무순서
- 하나의 릴레이션에서 튜플 사이의 순서는 무의미합니다.
속성의 무순서
- 하나의 릴레이션에서 속성 사이의 순서는 무의미합니다.
⭐ 속성의 원자성
- 속성 값으로는 원자 값만 사용할 수 있습니다.
- E-R 다이어그램의 다중 값을 분해해서 릴레이션을 생성해야 합니다.
특성
유일성(uniqueness)
- 하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야 합니다.
- 최소성(minimality)
- 꼭 필요한 최소한의 속성들로만 키를 구성합니다.
키의 종류
- 수퍼키(super key)
- 유일성을 만족하는 속성 또는 속성들의 집합
- 각각의 개체들이 유일하게 가지고 있는 값으로 개체들을 식별할 수 있습니다.
- ex) (ID, 이름) 등
후보키(candidate key)
- 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
- ex) ID, 이름, (이름, 주소) 등
- +) (ID, 이름)의 경우 ID와 이름을 분리해도 개체들을 식별할 수 있으므로 최소성을 만족하지 못합니다.
기본키(primary key)
- 후보키 중에서 기본적으로 사용하기 위해 선택한 키
- null을 가질 수 있는 속성이 포함된 후보키는 부적합
- 값이 자주 변경될 수 있는 속성이 포함된 후보키는 부적합
- 최대한 단순한 후보키를 선택
- ex) ID
대체키(alternate key)
- 기본키로 선택되지 못한 후보키
- ex) 이름, (이름, 주소) 등
![]()
외래키(foreign key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 릴레이션들 간의 관계를 표현
- 참조하는 릴레이션: 외래키를 가진 릴레이션
- 참조되는 릴레이션: 외래키가 참조하는 기본키를 가진 릴레이션
- ex) 주문 릴레이션의 주문 고객 (유저 릴레이션의 ID)
역할
- 릴레이션 사이의 관계를 맺어 각 릴레이션의 튜플과 연관성 있는 튜플을 연결할 수 있습니다.
- 하나의 릴레이션에는 외래키가 여러 개 존재할 수 있고
외래키를 기본키로 사용할 수도 있습니다.- 같은 릴레이션의 기본키를 참조하는 외래키도 정의할 수 있습니다.
- 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
- 무결성
- 데이터의 결함이 없는 상태
- 정확하고 유효하게 유지
개체 무결성 제약조건
- 기본키를 구성하는 모든 속성은 null을 가질 수 없습니다.
참조 무결성 제약조건
- 외래키는 참조할 수 없는 값을 가질 수 없습니다.
규칙 1
- 모든 개체는 릴레이션으로 변환
규칙 2
N:M
관계는 릴레이션으로 변환
- 기본키(N측 외래키 + M측 외래키) + 릴레이션의 속성으로 스키마를 구성합니다.
규칙 3
1:N
관계는 외래키로 표현
- 일반적인
1:N
관계는 외래키로 표현합니다.- 1측 개체 릴레이션의 기본키를 N측 개체 릴레이션에 포함시켜 외래키로 지정합니다.
- 관계의 속성은 N측 개체 릴레이션에 포함시킵니다.
Weak Entity
가 참여하는1:N
관계는 외래키를 포함해서 기본키로 지정합니다.
- N측 개체 릴레이션(
Weak Entity
)은 외래키를 포함하여 기본키를 지정합니다.
+)Weak Entity
는Strong Entity
에 따라 존재 여부가 결정되므로 해당 개체의 기본키를 이용해서 식별해야 합니다.
규칙 4
1:1
관계는 외래키로 표현- 일반적인
1:1
관계는 외래키로 서로 주고 받습니다.
- 한계: 불필요한 데이터 중복이 발생
1:1
관계에 필수적으로 참여하는 개체가 존재하면
해당 릴레이션만 외래키를 받습니다.
- 모든 개체가
1:1
관계에 필수적으로 참여하면 릴레이션을 하나로 합칩니다.
- 관계에 참여하는 개체 릴레이션들을 하나의 릴레이션으로 표현
- 관계의 이름을 릴레이션의 이름으로 사용
- 관계에 참여하는 두 개체의 속성들을 관계 릴레이션에 모두 포함
- 두 개체 릴레이션의 키 속성을 조합하여 관계 릴레이션의 기본키로 지정
규칙 5
다중 값 속성
은 원자 값으로 분해해 릴레이션으로 변환
- 다중 값 속성과 함께 그 속성을 가지고 있던 개체 릴레이션의 기본키를 외래키로 가져와 새로운 릴레이션에 포함
- 새로운 릴레이션의 기본키는 다중 값 속성과 외래키를 조합하여 지정
기타 고려 사항
- 모든 관계를 독립적인 릴레이션으로 변환할 수 있습니다
- 속성이 많은 관계는 유형과 무관하게 릴레이션으로의 변환
- 개체가 자신과 관계를 맺는 순환 관계도 기본 규칙을 그대로 적용
관련 강의 - 데이터베이스의 원리와 응용(KOCW) 6, 7강
관련 깃허브 - tech interview for developer_CS_Database