관계형 데이터베이스 설계 순서
각 순서의 산출물 = 괄호
1. 요구사항 분석 (요구사항 명세서)
2. 개념적 설계 (E-R 다이어그램)
3. 논리적 설계 (릴레이션 스키마)
4. 물리적 설계 (물리적 스키마)
5. 구현 (데이터베이스 생성)
사용자가 마주하는 UI 와 데이터베이스는 원인과 결과의 관계.
그렇기 때문에 기획자와 개발자가 데이터 모델링까지는 함께 가는 것이 이상적.
개념적 설계
1) Entity 개체, Property 속성, 키 속성 선별
- 요구사항 명세서에서 명사로 찾기!
- 개체와 속성을 선별하였는데 키 속성이 될 수 있는게 없다면 만들면 됨. (00 아이디)
2) 개체 간 관계 결정
- 요구사항 명세서에서 동사로찾기!
- Cardinality (매핑 카디널리티) : 1:1 / 1:n / n:m
예시
1:1 일대일 관계 - 담임선생님과 반의 관계
1:n 일대다 관계 - 저자와 댓글이 관계 (각 저자는 여러 글을 작성, 각 잿들은 하나의 저자만 존재)
n:m 다대다 관계 (하나의 글을 여러 명이 작성할 수 있다고 가정)
- Optionality (참여 특성) : 필수적 참여 / 선택적 참여
저자와 댓글의 관계 : 저자는 관계에 선택적 참여 (저자가 댓글을 쓸 수도 안 쓸 수도 있음) / 댓글은 관계에 필수적 참여 (댓글은 꼭 저자가 있어야만 존재)
표현 방법은 조금씩 다름
- 필수적 참여 : 줄 두개 or 작대기 하나
- 선택적 참여 : 줄 한개 or 동그라미 표시
3) E-R 다이어그램으로 표현
- 개체는 네모
- 속성은 동그라미 (키 속성은 밑줄)
- 관계는 마름모
논리적 설계
다섯 가지 규칙으로 E-R 다이어그램을 릴레이션 스키마로 변환
1. 모든 개체는 릴레이션으로 변환
- 개체의 속성 = 릴레이션의 속성
- 개체의 키 속성= 릴레이션의 기본키
2. 다대다 n:m 관계는 릴레이션으로 변환
- 다대다 관계 = 릴레이션의 이름
- 관계의 속성 = 릴레이션 속성
- 관계를 맺고 있는 개체 릴레이션의 기본 키 = 외래키
- 외래 키 두개를 조합하여 관계 릴레이션의 기본키로 설정
3. 일대다 1:n 관계는 외래키로 표현
<필수적 참여인 경우>
- 1측 개체 릴레이션의 기본키를 n측 개체 릴레이션의 외래키로 지정
(n측 개체 릴레이션의 기본키가 1측 개체 릴레이션의 외래키가 되는 경우, 해당 외래키가 다중값을 가져 릴레이션의 특성 위반)
<약찬 개체가 있는 경우>
- 필수적 참여인 경우와 똑같지만, n측 개체 릴레이션이 가지고 있던 기본키와 외래키를 조합하여 기본키로 지정해야함.
4. 일대일 1:1 관계는 외래키로 표현
<일반적인 일대일 관계>
- 서로의 기본 키가 외래키가 됨
- 관계의 속성도 각 릴레이션에 포함됨
<선택적 참여가 있는 일대일 관계>
- 필수적 참여하는 개체의 릴레이션에만 외래키를 포함
- 관계의 속성도 필수적 참여 릴레이션에만 포함
<모든 개체가 필수적 참여인 일대일 관계>
- 관계를 릴레이션으로 변환 (관계 이름 = 릴레이션 이름)
- 두 개체 속성을 모두 관계 릴레이션 속성으로 포함
- 두 개체 릴레이션의 키 속성 = 외래키
- 이 외래키 두개 조합하여 기본키 지정
- 두 개체의 속성 이름이 같아서 변경 필요할 경우, 변경
5. 다중 값 속성을 릴레이션으로 변환
(다중값 = 하나의 속성에 여러 값이 들어갈 수 있는 것, E-R 다이어그램에서 더블 동그라미로 표현)
- 관계 데이터 모델의 릴레이션에서는 속성이 다중 값 가질 수 없기 때문에 새로운 릴레이션 만들어야함
- 개체의 기본 키를 외래키로 지정
- 다중값 속성 + 외래키 (개체 기본키) = 새로운 릴레이션의 기본 키
- 릴레이션 이름은 자유롭게 정하기
'데이터베이스' 카테고리의 다른 글
[정리 노트] 데이터베이스 DB 정규화 (0) | 2023.12.04 |
---|---|
Mysql 맥북 설치/실행 방법 - vs code, 터미널 (0) | 2023.11.07 |