08. 데이터베이스 설계
E-R 모델과 릴레이션 변환 규칙을 이용해 데이터베이스를 설계하는 과정을 학습한다
8.1. 데이터베이스 설계 단계
데이터베이스는 한 번 구축되면 변경이 어렵기 때문에 설계 과정에서부터 품질 좋은 데이터베이스를 구축해야 한다. 데이터베이스의 설계 방법에는 두 가지가 있다.
첫째는 E-R 모델과 릴레이션 변환 규칙을 이용하는 방식으로 이 장에서 학습한다.
둘째는 정규화를 이용한 방식으로 다음 9장에서 학습한다.
E-R 모델과 릴레이션 변환 규칙을 이용한 설계는 5 단계로 진행된다.
- 요구사항 분석
실제 업무를 처리하는 사용자로부터 필요한 데이터의 종류의 처리 방법을 수집해 요구사항 명세서를 작성한다. - 개념적 설계
요구 사항 분석 단계에서 파악한 요구사항을 E-R모델(개념적 구조)로 구현한다. - 논리적 설계
적합한 DBMS를 이용해서 E-R모델을 바탕으로 릴레이션(테이블, 논리적 구조)를 생성한다. - 물리적 설계
물리적 구조란 데이터베이스를 실제 저장장치에 저장하기 위한 내부구조와 접근 경로 등을 의미한다. 더 구체적으로 말하면, 저장 공간을 효율적으로 활용하면서 처리능력을 향상시킬 수 있는 물리적 구조를 설계해야 한다. - 구현
DBMS에서 SQL로 작성한 명령문을 실행하여 데이터베이스를 실제로 생성한다.
8.2. 요구 사항 분석
사용자들이 데이터베이스에 원하는 요구사항을 분석하고 요구사항 명세서를 작성한다. 이를 통해 데이터베이스의 용도를 명확히 파악하는 단계이다.
이 때, 데이터베이스를 이용할 사용자의 범위를 설정하여. 불필요한 요구사항을 수집하지 않고, 사용자로부터 필요한 데이터를 수집하여 요구사항 명세서로 문서화해야 한다. 예시는 아래와 같다.
8.3. 개념적 설계
요구 사항 분석 결과를 바탕으로 데이터베이스에 저장해둘 필요가 있다고 판단되는 데이터 요소를 추출하고, 데이터 요소 간의 관계를 파악하여 E-R다이어그램(개념적 스키마)으로 표현하는 단계이다.
8.3.1. 개체와 속성 추출
-
개체
일반적으로 개체는 문장에서 명사로 표현된다. 일반적이거나 광범위한 명사는 제외하고, 의미가 같은 명사는 하나의 대표 명사만 선택한다. -
속성
속성 또한 명사로 표현되는데, 속성은 특정 객체에 종속적이라는 특징을 가진다. -
예시
- 한빛 마트는 일반적이고 광범위하므로 객체에서 제외한다.
- 회원은 독립적인 하나의 객체로 여겨지고, 회원아이디, 비밀번호, 이름, 나이, 직업, 등급, 그리고 적립금은 회원 객체의 속성으로 볼 수 있다.
- 회원 아이디는 회원 객체를 식별하는 키로 사용 지정할 수 있다.
- 회원과 상품은 객체로 분류한다.
- 주문번호, 주문수량, 배송지, 주문일자 정보는 주문을 하면 생기는 데이터이지만, 회원이나 상품 객체에 항상 속해있는 속성은 아니다.
8.3.2. 관계 추출
-
관계
관계는 개체 간의 의미 있는 연관성을 말한다. 일번적으로 관계는 명세서에서 동사로 표현된다. 단, 개체 간의 연관성을 의미 있게 표현한 동사만 선택하고, 의미가 비슷한 여러 개의 동사 중 대표 동사 하나만 선택한다. 그리고 각 관계에 대한 매핑 카디널리티(1:1, 1:n, n:m)와 참여특성(필수 참여, 선택 참여)을 결정한다. -
- '입력해야 한다', '부여된다', '식별한다'는 모두 개체와 개체의 관계를 표현하는 동사로 볼 수 없다.
- '주문할 수 있다'는 회원 개체와 상품 개체가 맺는 관계를 설명한다.회원 한 명이 여러 상품을 주문할 수 있고, 하나의 상품을 여러 회원이 주문할 수 있다고 했으므로 이는 m:n 관계이고, 회원이 상품을 반드시 주문해야 하는 것은 아니므로 회원 개체는 주문 관계에 선택적으로 참여한다. 또한 회원이 주문하지 않은 상품 또한 존재할 수 있으므로 상품 개체도 주문관계에 선택적으로 참여한다.
- 주문번호, 주문수량, 배송지, 주문일자는 주문관계의 속성으로 분류할 수 있다.
- '공급할 수 있다'는 상품 개체와 제조업체 개체가 맺는 관계를 설명한다. 하나의 상품은 제조업체 하나가 공급하고, 제조업체 하나는 여러 상품을 공급할 수 있으므로 제조업체 개체와 상품 개체가 맺는 관계는 1:n이다. 상품은 제조업체가 반드시 공급해야하므로 상품 개체는 공급 관계에 필수적으로 참여하고, 상품을 공급하지 않는 제조업체도 존재할 수 있으므로 제조업체 개체는 공급 관계에 선택적으로 참여한다.
- '작성할 수 있다'는 회원 개체와 게시글 개체가 맺는 관계를 설명한다. 회원 한 명이 게시글을 여러 개 작성할 수 있고, 게시글 하나는 한 명의 회원만 작성할 수 있으므로 회원 개체와 게시글 개체가 맺는 관계는 1:n이다. 회원이 게시글을 반드시 작성해야 하는 것은 아니므로 회원 개체는 작성 관계에 선택적으로 참여한다. 게시글은 반드시 회원이 작성해야 하므로 게시글 개체는 작성 관계에 필수적으로 참여한다.
8.3.3. E-R 다이어그램 작성
위에서 추출한 내용을 모두 종합하여 E-R 다이어그램을 그리면 다음과 같다.
8.4. 논리적 설계
개념적 스키마(E-R 다이어그램)를 기반으로 하여 DBMS가 처리할 수 있는 논리적 구조(릴레이션 스키마)를 설계하는 단계이다.
E-R 다이어그램과 릴레이션 스키마는 다음과 같은 점에서 다르다.
E-R 모델에서는 개체와 관계를 구분하지만, 관계데이터모델에서는 개체와 관계를 구분하지 않고 모두 릴레이션으로 표현한다.
E-R 모델에서는 다중 값 속성이나 복합 속성의 표현을 허용하지만, 관계 데이터 모델에서는 다중값 속성과 복합 속성의 표현을 허용하지 않는다.
8.4.1. 릴레이션 스키마 변환 규칙
E-R 다이어그램을 릴레이션 스키마로 변환하는 다섯 가지 규칙을 소개한다. 다섯 가지 규칙을 순서대로 적용한 뒤에도, 9장에서 배울 정규화 과정을 통해 검증하는 작업이 필요하다.
-
규칙1: 모든 개체는 릴레이션으로 변환한다
- 개체의 이름을 릴레이션 이름으로 한다.
- 개체가 가진 속성은 릴레이션 속성으로 변환한다.
- 복합 속성의 경우, 복합 속성을 구성하는 단순 속성들을 풀어 릴레이션 속성을 정의한다.
- 개체가 가지고 있는 키 속성은 릴레이션의 기본키로 변환한다.
-
규칙2: 다대다 n:m 관계는 릴레이션으로 변환한다
- 관계의 이름을 릴레이션 이름으로 한다.
- 관계의 속성을 릴레이션의 속성으로 한다.
- 릴레이션들의 기본키를 관계릴레이션에 외래키로 포함시키고, 이 외래키들의 조합을 관계 릴레이션의 기본키로 지정한다.
- 만일 기본키의 이름이 서로 같을 경우, 구분을 위해 한 기본키의 이름을 변경해서 가져온다.
- 필요하다면 별도의 기본키를 지정할 수도 있다.
-
규칙3: 일대다 1:n 관계는 외래키로 표현한다
-
규칙4: 일대일 1:1 관계는 외래키로 표현한다
-
규칙5: 다중 값 속성은 릴레이션으로 변환한다
8.4.2. 릴레이션 스키마 변환 규칙을 이용한 논리적 설계
앞 절에서 배운 규칙들을 적용하여 한빛 마트 E-R 다이어그램을 논리적으로 설계하면 아래와 같다.
8.5. 물리적 설계와 구현
물리적 설계 단계에서는 하드웨워나 운영체제의 특성을 고려하여 필요한 인덱스 구조, 내부 저장 구조, 접근 경로 등의 물리적이 구조를 설계한다. 그리고 DBMS를 이용해 SQL문을 작성하고 이를 실행시켜 실제 데이터베이스를 생성한다.