데이터베이스 논리 데이터 모델의 변환
1. 개요
- 논리 데이터 모델: 데이터베이스 설계의 초기 단계로, 데이터 간의 관계 및 속성을 정의.
- 물리 데이터 모델: 논리 모델을 기반으로 실제 테이블로 변환하여 데이터 저장 구조를 설계.
- 목적: 엔티티, 속성, 관계 등을 실제 테이블, 컬럼, 키로 변환하여 구현 가능하도록 준비.
2. 엔티티를 테이블로 변환
- 엔티티: 데이터베이스에서 관리해야 할 대상(예: 학생, 교수 등).
- 테이블로 변환: 논리 모델에서 정의된 엔티티와 속성을 테이블과 컬럼으로 변환.
- 절차:
- 엔티티 → 테이블: 학생, 교수 등 엔티티를 각각의 테이블로 변환.
- 속성 → 컬럼: 엔티티의 속성(학번, 이름 등)을 테이블의 컬럼으로 변환.
- 주 식별자 → 기본 키: 각 테이블의 주요 식별자를 Primary Key로 지정.
- 외부 식별자 → 외래 키: 테이블 간 관계를 Foreign Key로 설정.
3. 슈퍼 타입과 서브 타입 변환
- 슈퍼 타입: 상위 개념의 엔티티(예: 동물).
- 서브 타입: 하위 개념의 엔티티(예: 호랑이, 사자).
- 변환 방법:
- 슈퍼 타입 기준 변환:
- 모든 서브 타입의 속성을 하나의 테이블(슈퍼 타입)로 통합.
- 예: 방문 접수와 인터넷 접수를 접수 테이블에 통합.
- 서브 타입 기준 변환:
- 서브 타입별로 별도의 테이블을 생성.
- 슈퍼 타입의 속성은 각 서브 타입 테이블에 포함.
- 예: 방문 접수와 인터넷 접수를 각각 방문 접수 테이블과 인터넷 접수 테이블로 분리.
- 개별 타입 기준 변환:
- 슈퍼 타입과 모든 서브 타입을 각각 별도 테이블로 생성.
- 슈퍼 타입과 서브 타입 간의 관계는 1:1로 설정.
- 예: 접수, 방문 접수, 인터넷 접수를 각각 별도 테이블로 유지.
4. 속성을 컬럼으로 변환
- 속성 → 컬럼 변환:
- 논리 데이터 모델에서 정의된 속성을 테이블 컬럼으로 변환.
- 주의:
- 컬럼 명칭은 속성 명칭과 동일할 필요는 없지만, 표준화된 이름을 사용하는 것이 좋음.
- 예:
학번
→ StudentID
.
5. 키 변환
- Primary Key:
- 논리 모델의 주요 식별자를 물리 모델의 기본 키로 변환.
- Foreign Key:
- 엔티티 간의 관계를 물리 모델에서 외래 키로 변환.
- 관계의 종속성을 보장.
- Unique Key:
- 대체 식별자(Secondary UID)를 물리 모델에서 고유 키(Unique Key)로 변환.
- 입력 값이 유일해야 함.
6. 변환 예시
6.1 엔티티: 학생
속성 | 컬럼 (예시) |
---|
학번 | StudentID |
이름 | Name |
주민등록번호 | SSN |
전화번호 | PhoneNumber |
주소 | Address |
성별 | Gender |
6.2 관계
- 학생 테이블과 수강 과목 테이블 간의 관계:
- 학생 테이블 (Student):
StudentID
(Primary Key).
- 수강 과목 테이블 (CourseEnrollment):
CourseID
(Primary Key).
StudentID
(Foreign Key) → 학생 테이블의 참조.
7. 논리-물리 변환 요약
논리 모델 구성 요소 | 물리 모델 구성 요소 |
---|
엔티티 (Entity) | 테이블 (Table) |
속성 (Attribute) | 컬럼 (Column) |
주 식별자 (Primary UID) | 기본 키 (Primary Key) |
외부 식별자 (Foreign UID) | 외래 키 (Foreign Key) |
관계 (Relationship) | 외래 키 참조 관계 |
8. 유의사항
- 표준화된 명칭 사용:
- 키 설계:
- 데이터 무결성을 보장하기 위한 적절한 키 설계 필요.
- 테이블 설계 전략:
- 데이터의 사용 빈도, 관계, 크기를 고려하여 적합한 변환 방식(슈퍼 타입/서브 타입 등) 선택.
9. 마무리
- 논리 데이터 모델의 변환은 데이터베이스 설계의 핵심 과정.
- 설계 단계에서 올바른 변환을 수행하면 데이터 무결성과 성능이 향상됩니다.
- 각 변환 방식의 특성과 장단점을 명확히 이해하고, 적절한 설계를 수행해야 합니다.