논리적 데이터 모델링 강의를 보고 정리합니다.
목차
- 데이터베이스 설계 단계
- 개념적 데이터 모델링 결과
- 논리적 설계
- 릴레이션 스키마 변환 규칙
- 릴레이션 변환 결과
데이터베이스 설계 단계
→ E-R 모델과 릴레이션 변환 규칙을 이용한 설계의 과정
설계 과정 중 오류 발견 시 이전 단계로 되돌아가 설계 내용을 변경할 수 있다.
→ 데이터베이스 설계 과정의 각 단계별 주요 작업과 결과물
개념적 데이터 모델링 결과
→ 요구 사항 명세서를 개념적 스키마로 작성한 결과
논리적 설계
목적
- DBMS에 적합한 논리적 스키마 설계
- 개념적 스키마를 논리적 데이터 모델을 이용해 논리적 구조로 표현
→ 논리적 모델링(데이터 모델링)
일반적으로 관계 데이터 모델을 많이 이용
결과물
- 논리적 스키마 : 릴레이션 스키마
주요 작업
- 개념적 설계 단계의 결과물인 E-R 다이어그램을 릴레이션 스키마로 변환
- 릴레이션 스키마 변환 후 속성의 데이터 타입, 길이, 널값 허용 여부, 기본 값, 제약조건 등을 세부적으로 결정하고 그 결과를 문서화시킴
릴레이션 스키마 변환 규칙
규칙 1
→ 모든 개체는 릴레이션으로 변환한다.
규칙 2
→ 다대다(n:m) 관계는 릴레이션으로 변환한다.
규칙 3
→ 일대다(1:n) 관계는 외래키로 표현한다.
규칙4
→ 일대일(1:1) 관계는 외래키로 표현한다.
규칙 5
→ 다중 값 속성은 릴레이션으로 변환한다.
변환 규칙을 순서대로 적용하되, 해당되지 않는 규칙은 제외한다.
규칙 1 - 모든 개체는 릴레이션으로 변환
E-R 다이어그램의 각 개체를 하나의 릴레이션으로 변환
개체의 이름 → 릴레이션 이름
개체의 속성 → 릴레이션의 속성
개체의 키 속성 → 릴레이션의 기본키
개체의 속성이 복합 속성인 경우, 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환
예시 1
→ 개체를 릴레이션으로 변환하는 규칙을 적용한 예
상품(상품번호, 상품명, 재고량, 단가)
예시 2 - 복합 속성 가지는 개체 변환
→ 복합 속성을 가지는 개체를 릴레이션으로 변환하는 예
규칙 1 적용 결과
개념적 데이터 모델링의 결과물인 E-R 다이어그램에서 상품, 제조업체, 회원, 게시글 개체에 규칙 1을 적용한다.
규칙 2 - 다대다 관계는 릴레이션으로 변환
E-R 다이어그램의 다대다 관계를 하나의 릴레이션으로 변환
관계의 이름 → 릴레이션 이름
관계의 속성 → 릴레이션의 속성
관계에 참여하는 개체를 규칙 1에 따라 릴레이션으로 변환 후 기본키를 관계 릴레이션에 포함시켜 외래키로 지정하고 외래키들을 조합해 관계 릴레이션의 기본키로 지정
예시
'주문'이라는 관계를 별도의 릴레이션으로 변환한다.
고객 개체의 키 속성인 고객번호, 상품 개체의 키 속성인 상품번호를 주문 릴레이션의 외래키로 표현한다. 이 외래키를 조합해 기본키로 사용한다.
또는 별도의 '주문번호'라는 기본키를 만들어 사용할 수도 있다.
규칙 2 적용 결과
개념적 데이터 모델링의 결과물인 E-R 다이어그램에서 상품, 회원 개체가 참여하는 주문 관계에 규칙 2를 적용한다.
규칙 3 - 일대다 관계는 외래키로 표현
E-R 다이어그램의 일대다 관계는 외래키로만 표현
규칙 3.1 일반적인 일대다 관계는 외래키로 표현
규칙 3.2 약한 개체가 참여하는 일대다 관계는 외래키를 포함해 기본키로 지정
규칙 3.1 - 일반적인 일대다 관계는 외래키로 표현
일대다(1:n) 관계에서 1측 개체 릴레이션의 기본키를 n측 개체 릴레이션에 포함시켜 외래키로 지정
관계의 속성들도 n측 개체 릴레이션에 포함
예) 교수 개체와 학생 개체가 지도라는 관계에 참여하는 경우(일대다 관계)
- 교수는 여러명의 학생을 지도한다.
- 한명의 학생은 한명의 교수에게 지도 받는다.
만약 교수(1측 개체) 릴레이션에 지도 학생을 외래키로 포함시키면 지도 학생은 다중 값을 가지게 된다.
→ 릴레이션 속성의 원자성 위배
따라서 n측 개체인 학생 릴레이션에 지도 교수라는 외래키를 포함시킨다.
규칙 3.1 예시
→ 일반적인 개체가 참여하는 일대다 관계를 외래키로 표현
규칙 3.2 - 약한 개체가 참여하는 일대다 관계는 외래키를 포함해 기본키 지정
일대다(1:n) 관계에서 1측 개체 릴레이션의 기본키를 n측 개체 릴레이션에 포함시켜 외래키로 지정
관계의 속성들도 n측 개체 릴레이션에 포함
n측 개체 릴레이션은 외래키를 포함하여 기본키 지정
→ 약한 개체는 오너 개체에 따라 존재 여부가 결정되므로 오너 개체의 기본키를 이용해 식별
규칙 3.2 예시
→ 약한 개체가 참여하는 일대다 관계를 외래키로 표현
- 하나의 비행기에 여러개 좌석이 존재한다.
- 하나의 좌석은 하나의 비행기에 존재한다.
비행기 번호를 좌석 릴레이션의 기본키에 포함시킨다.
규칙 3 적용 결과
개념적 데이터 모델링의 결과물인 E-R 다이어그램에서 공급(상품, 제조업체 개체 참여), 작성(회원, 게시글 개체 참여) 관계에 규칙 3을 적용한다.
규칙 4 - 일대일 관계는 외래키로 표현
E-R 다이어그램의 일대일 관계는 외래키로만 표현
규칙 4.1 일반적인 일대일 관계는 외래키를 서로 주고 받는다.
규칙 4.2 일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받는다.
규칙 4.3 모든 개체가 일대일 관계에 필수적으로 참여하면 릴레이션을 하나로 합친다.
규칙 4.1 - 일반적인 일대일 관계는 외래키를 서로 주고 받는다.
관계에 참여하는 개체 릴레이션들이 서로의 기본키를 주고 받아 외래키로 지정
관계의 속성들도 모든 개체 릴레이션에 포함
불필요한 데이터 중복이 발생할 수 있음
규칙 4.1 예시
→ 일반적인 일대일 관계를 외래키로 표현
규칙 4.2 - 필수적으로 참여하는 개체 릴레이션만 외래키를 받는다.
관계에 필수적으로 참여하는 개체 릴레이션에만 외래키를 포함
관계의 속성들은 관계에 필수적으로 참여하는 개체 릴레이션에 포함
규칙 4.2 예시
→ 일대일 관계에 필수적으로 참여하는 개체의 릴레이션이 외래키를 가지는 예
규칙 4.3 - 모든 개체가 필수적으로 참여하면 릴레이션을 하나로 합친다.
관계에 참여하는 개체 릴레이션들을 하나의 릴레이션으로 합쳐서 표현
관계의 이름을 릴레이션 이름으로 사용하고 관계에 참여하는 두 개체의 속성들을 관계 릴레이션에 모두 포함
두 개체 릴레이션의 키 속성을 조합해 관계 릴레이션의 기본키로 지정
규칙 4.3 예시
→ 일대일 관계에 모든 개체가 필수적으로 참여하면 릴레이션을 통합하는 예
규칙 5 - 다중 값 속성은 릴레이션으로 변환
E-R 다이어그램의 다중 값 속성은 독립적인 릴레이션으로 변환
다중 값 속성과 함께 그 속성을 가지고 있던 개체 릴레이션의 기본키를 외래키로 가져와 새로운 릴레이션에 포함
새로운 릴레이션의 기본키는 다중 값 속성과 외래키를 조합해 지정
예시
→ 다중 값 속성인 부하직원 속성을 그대로 포함하는 사원 릴레이션
사원 릴레이션은 속성에 다중 값을 저장할 수 없는 릴레이션 특성을 위반
→ 릴레이션 특성에 맞게 부하직원 속성을 포함하는 사원 릴레이션
사원 릴레이션은 릴레이션 특성을 위반하지 않지만 사원번호, 사원명, 직위 속성의 값이 불필요하게 중복 저장되는 문제 발생
→ 규칙 5를 적용한 후의 사원 릴레이션과 사원 - 부하직원 릴레이션
규칙 5에 따라 다중 값 속성을 독립적인 릴레이션으로 변환하면 불필요한 중복을 제거하면서도 릴레이션의 특성을 만족시킬 수 있다.
기타 고려 사항
모든 관계를 독립적인 릴레이션으로 변환할 수 있다.
→ 속성이 많은 관계는 유형에 상관없이 릴레이션으로의 변환을 고려할 수 있음
개체가 자기 자신과 관계를 맺는 순환 관계도 기본 규칙을 그대로 적용
- 한명의 사원이 여러명의 부하사원을 관리한다.
- 한명의 사원이 한명의 상사에게 관리된다.
릴레이션 변환 결과
개념적 데이터 모델링의 결과물인 E-R 다이어그램을 릴레이션으로 변환한 결과
'DB' 카테고리의 다른 글
| DB | 개념적 데이터 모델링 (0) | 2023.08.06 |
|---|---|
| DB | 데이터 모델링, 개체-관계 모델(E-R Model) (0) | 2023.02.26 |
| DB | 데이터베이스 시스템 정의와 구성 요소, 3단계 데이터베이스 구조 (2) | 2023.01.02 |
| DB | SQL 기초 연습 (2) (0) | 2022.08.26 |
| DB | SQL 기초 연습 (1) (0) | 2022.08.17 |