728x90
데이터베이스 설계
데이터베이스 설계의 과정
1단계: 요구 사항 분석
2단계: 개념적 설계
3단계: 논리적 설계
4단계: 물리적 설계
5단계: 구현
요구사항 분석
- 목적
- 사용자의 요구사항을 수집하고 분석하여 개발할 DB의 용도 파악
- 결과물
- 요구사항 명세서
- 주요 작업
- DB를 실제 사용할 주요 사용자의 범위 결정
- 요구사항 분석 결과를 요구사항 명세서로 작성한다.
개념적 설계
- 요구사항 명세로부터 개념적 스키마를 만들어 냄( 개념적 모델링 )
- 요구사항 분석 결과를 바탕을 DB에 저장해둘 필요가 있다고 판단되는 데이터 요소를 추출하고 그들 간의 관계를 파악하여 표현함
- 개체 타입, 속성, 관계 타입 식별
- 속성의 도메인 결정
- 키 속성 결정
- 완성된 개념적 스키마는 E-R 다이어그램으로 표현한다.
개체 도출
- 각 명사에 대해 속성인지 개체인지 분류
- 중복 명사, 유사한 의미의 명사는 하나로 통합
- 개체 후보 풀에 있는 명사 재검토
- 검토하여 개체 리스트에 기록
- 여전히 불분명하다면 풀에서 제외한다.
- 도출된 개체에 대해 구축될 시스템에서 데이터를 관리할 필요가 있는지 재검토
- 개체 명명(naming) 규칙
- 다른 이름과 중복되지 않게
- 지나치게 길지 않게
- 의미 없는 수사는 붙이지 않는다.
- 단수명사 사용
속성 설정
- 키 속성 선정
- 개체에 소속된 인스턴스들을 유일하게 식별할 수 있는 속성
- 현재 시점 뿐만 아니라 미래 어떤 시점에서도 중복이 있어서는 안됨
- 선정 기준
- 속성 값이 변하지 않아야 함
- 반드시 값이 있어야 함. Null이면 안됨
- 키 속성이 여러 개일 수 있으나 너무 많은 것은 좋지 않음
관계 설정
- 관계는 개체 간의 의미 있는 연관성으로 요구사항 문장에서 동사로 표현된다.
- 추출한 관계에 대한 매핑 카디널리티와 참여 특성을 결정한다.
- 매핑 카디널리티: 관계를 맺고 있는 두 개체에서, 각 개체 인스턴스가 관계를 맺고 있는 상대 개체의 개체 인스턴스 개수를 의미
- 일대일(1:1), 일대다(1:N), 다대다(N:M) 중 하나로 분류
- 개체가 관계에 필수적으로 참여하는지 선택적으로 참여하는지 참여 특성을 결정한다.
논리적 설계
- 개념적 스키마를 기반으로 논리적 스키마를 설계
- 개발에 사용할 DBMS에 적합한 논리적 스키마 설계
- 개념적 스키마를 관계 데이터 모델의 릴레이션으로 매핑
- 개념적 스키마 → 논리적 스키마; 논리적 모델링(데이터 모델링)
- E-R 다이어그램 → 릴레이션 스키마
- 개체 타입과 관계 타입을 모두 릴레이션으로 매핑

1단계: 강한 개체 타입 변환
- 각 강한 개체 타입 E에 대해 하나의 릴레이션 R을 생성한다.
- 단순 속성: R에 모두 포함한다.
- 복합 속성: 복합 속성을 구성하는 단순 속성들만 R에 포함한다.
- E의 키 속성이 릴레이션 R의 기본키가 된다.
2단계: 약한 개체 타입 변환
- ER 스키마에서 주 개체 타입 E를 갖는 각 약한 개체 타입 W에 대해 릴레이션 R을 생성
- W에 있던 모든 단순 속성: R에 포함된다.
- 주 개체 타입에 해당하는 릴레이션의 기본키: 약한 개체 타입에 해당하는 릴레이션에 외래 키로 포함된다.
- 약한 개체는 강한 개체에 따라 존재 여부가 결정되는 만큼 강한 개체의 기본키를 이용해 식별하는 것이기 떄문
- 약한 개체 타입에 해당하는 릴레이션 R의 기본 키: 주 개체 타입에 해당하는 릴레이션을 참조하는 외래 키의 조합으로 이루어진다.
3단계: 1:1 관계 타입 변환
- 일반적인 일대일 관계에서는 서로의 기본키를 주고 받아 이를 외래키로 지정한다.
- 일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받는다(생성한다)
- 모든 개체가 일대일 관계에 필수적으로 참여하면 릴레이션 하나로 합친다.
4단계: 1:n 관계 타입 변환
- 일반적인 일대다(1:n) 관계는 외래키로 표현한다.
- 1측 개체 릴레이션의 기본키를 가져와 n측 개체 릴레이션에 포함시키고 외래키로 지정한다.
- n측 개체 릴레이션의 기본키를 가져와 1측 개체 릴레이션에 포함시키면 외래키가 다중 값을 가지므로 릴레이션의 특성을 위반한다.
- 약한 개체가 참여하는 일대다 관계는 외래키를 포함해서 기본키로 지정한다.
- 1측 개체 릴레이션의 기본키를 가져와 n측 개체 릴레이션에 포함시키고 외래키로 지정한다
- 위의 관계와 다른 점은 외래키를 포함하여 기본키를 지정해야 한다.
5단계: m:n 관계 타입 변환
- M:N 관계 타입 R에 대해서는 하나의 릴레이션으로 변환한다.
- 참여 개체 타입에 해당하는 릴레이션들의 기본 키를 릴레이션 R에 외래 키로 포함시키고, 이들의 조합이 릴레이션 R의 기본 키가 된다.
6단계: 3진 이상의 관계 타입 변환
- 3진 이상의 각 관계 타입 R에 대하여 릴레이션 R을 생성한다.
- 관계 타입 R에 참여하는 모든 개체 타입에 대응되는 릴레이션들의 기본 키를 릴레이션 R에 외래 키로 포함시킨다.
7단계: 다중 값 속성 변환
- 다중 값 속성은 릴레이션으로 변환한다.
- 관계 데이터 모델의 릴레이션에서는 다중 값을 가지는 속성을 허용하지 않으므로 별도의 릴레이션을 만들어 포함시킨다.
- 다중 값 속성을 가지고 있는 개체에 해당하는 릴레이션의 기본키를 가져와 포함시키고 이를 외래키로 지정한다.
- 기본키는 다중 값 속성과 외래키를 조합하여 지정한다.
- 중복되는 값들이 존재할 수 있다.
728x90
'Programming > SQL(DB)' 카테고리의 다른 글
| [MySQL] 데이터베이스 물리적 설계 (0) | 2025.12.27 |
|---|---|
| [MySQL] 데이터베이스 정규화 (0) | 2025.12.27 |
| [MySQL] 데이터 모델링 (1) | 2025.12.26 |
| [MySQL] 프로그래머스 서울에 위치한 식당 목록 출력하기 (0) | 2025.02.13 |
| [MySQL] 프로그래머스 평균 일일 대여 요금 구하기 (0) | 2025.02.11 |