본문 바로가기
CS/DB

[DB - 데이터베이스 개론] Chapter 08. 데이터베이스 설계

by 원만사 2022. 2. 3.
반응형

 

목차

     

    01. 데이터베이스 설계 단계

     조직 구성원들의 다양한 요구 사항을 고려하여 제대로 된 데이터베이스를 구축하기 위해서는 사용자들의 요구 사항을 잘 분석하고, 분석한 결과를 바탕으로 데이터베이스의 논리적, 물리적 구조를 제대로 설계해야 한다. 

     데이터베이스 설계는 사용자들의 요구 사항을 고려하여 데이터베이스를 생성하는 과정이다. 품질 좋은 데이터베이스를 평가하는 대표적인 기준은 데이터베이스를 실제로 사용하는 구성원들의 요구 사항을 만족하는지 여부이다. 

     관계 데이터 모델을 기반으로 두고 데이터베이스를 설계하는 방법에는 대표적으로 두 가지가 있는데 여기에서는 그 중 하나인 E-R 모델과 릴레이션 변환 규칙을 이용한 데이터베이스 설계를 알아보자. E-R 모델과 릴레이션 변환 규칙을 이용한 데이터베이스 설계는 다음과 같이 5단계로 이루어진다.

     

    데이터베이스 설계의 과정

    • 1단계 : 요구 사항 분석
      - 조직의 구성원들이 데이터베이스를 사용하는 용도를 파악한다.
      - 요구 사항 분석 단계에서 파악한 사용자의 요구 사항은 이후의 설계 단계에서 중요하게 사용되고, 구축된 데이터베이스의 품질을 결정짓는 중요한 기준이 된다.

    • 2단계 : 개념적 설계
      - 요구 사항 분석 단계에서 파악한 사용자의 요구 사항을 개념적 데이터 모델을 이용해 표현한다. 
      - 개념적 설계 단계에서 요구 사항 분석 단계의 결과물인 요구 사항 명세서를 개념적 데이터 모델로 변환하는 일을 개념적 모델링이라 한다.
      - E-R 다이어그램과 같이 개념적 데이터 모델로 표현한 결과물을 개념적 구조 또는 개념적 스키마라고 한다.

    • 3단계 : 논리적 설계
      - 개발에 사용할 DBMS에 적합한 논리적 데이터 모델을 이용해 개념적 설계 단계에서 생성한 개념적 구조를 기반으로 논리적 구조를 설계한다.
      - 논리적 설계 단계에서 E-R 다이어그램을 릴레이션 스키마로 변환하는 작업을 논리적 모델링 또는 단순히 데이터 모델링이라 한다.
      - 논리적 데이터 모델로 표현된 결과물을 논리적 구조 또는 논리적 스키마라고 한다. 

    • 4단계 : 물리적 설계 
      - 논리적 설계 단계에서 생성된 논리적 구조를 기반으로 물리적 구조를 설계한다. 
      - 물리적 구조는 데이터베이스를 저장 장치에 실제로 저장하기 위한 내부 저장 구조와 접근 경로 등을 의미한다.
      - 데이터베이스를 실제로 구축할 컴퓨터 시스템의 저장 장치와 운영체제의 특성을 고려하여, 효율적인 성능을 지원하면서도 사용할 DBMS로 구현이 가능한 물리적인 구조를 설계하는 것이 물리적 설계 단계에서 수행하는 주요 작업이다.
      - 물리적 설계의 결과물인 물리적 구조를 내부 스키마 또는 물리적 스키마라고 한다. 

    • 5단계 : 구현
      - 이전 설계 단계의 결과물을 기반으로 DBMS에서 SQL로 작성한 명령문을 실행하여 데이터베이스를 실제로 생성한다. 

    데이터베이스 설계 과정의 각 단계별 주요 작업과 결과물

     데이터베이스 설계 과정에서 전체적인 데이터베이스의 개념적인 구조와 논리적 구조를 설계하는 요구 사항 분석, 개념적 설계, 논리적 설계 단계가 핵심 단계에 해당한다.

     

     

    02. 요구 사항 분석

     요구 사항 분석 단계에서는 사용자들이 데이터베이스에 원하는 것이 무엇인지를 분석한다. 즉, 데이터베이스에 대한 사용자들의 요구 사항을 수집하고 분석하여, 개발할 데이터베이스의 용도를 명확히 파악하는 게 이 단계의 목적이다.

     

    데이터베이스 설계 : 요구 사항 분석 단계

     

     요구 사항 분석 단계에서는 먼저 데이터베이스를 사용할 주요 사용자의 범위부터 결정해야 한다. 사용자마다 요구 사항이 매우 다양하므로 개발할 데이터베이스를 실제로 사용할 주요 사용자의 범위를 정해 불필요한 요구 사항을 수집하지 않도록 해야 한다. 

     

     사용자의 범위가 결정되면 해당 사용자가 조직에서 수행하는 업무를 분석해야 한다. 사용자의 업무와 관련해 필요한 데이터가 무엇이고, 그 데이터에 어떤 처리가 필요한지 등에 초점을 맞춰 요구 사항들을 수집하고 분석해야 한다.

     

     

    03. 개념적 설계

     개념적 설계에서는 요구 사항 분석 단계의 결과물을 개념적 데이터 모델을 이용하여 표현한다. 일반적으로 개념적 데이터 모델로 E-R 모델을 많이 이용한다. 개념적 설계 단계의 주요 작업은 요구 사항 분석 결과를 기반으로 현실 세계에서 중요한 데이터 요소인 개체를 추출한 후 개체 간의 관계를 결정하여 이를 E-R 다이어그램으로 표현하는 것이다.

     

    데이터베이스 설계 : 개념적 설계 단계

     

     요구 사항의 분석 결과를 E-R 모델을 이용해 개념적 모델링을 하려면 먼저 E-R 모델의 핵심 요소인 개체를 추출해야 한다. 그다음 각 개체의 주요 속성과 키 속성을 선별하고, 개체 간의 관계를 결정해야 한다.

    개념적 모델링 과정

     

    1. 개체와 속성 추출 

     개념적 설계 단계에서 가장 먼저 수행해야 하는 기본 작업은 요구 사항 분석 단계의 결과물에서 개체를 추출하는 일이다. 개체는 저장할 만한 가치가 있는 중요 데이터를 지닌 사람이나 사물 등이며, 개념적 모델링을 하는 데 가장 중요한 요소다. 

     

     개체를 추출하기 위해서는 제시된 요구 사항의 문장들에서 명사부터 찾아야 한다. 일반적으로 개체는 이 문장에서 명사로 표현된다. 하지만 찾아낸 명사를 모두 개체로 단정하면 안 된다. 명사 중에는 개체가 아닌 속성으로 분류되는 단어도 존재하기 때문이다. 따라서 찾아낸 명사를 개체와 속성으로 정확히 분류하는 작업이 필요하다. 

     

     사용자가 만족하는 데이터베이스를 개발하려면 요구 사항 명세서의 요구 사항 문장에 있는 개체와 속성을 빠짐없이 추출해야 한다.

     

    2. 관계 추출

     개체와 속성을 추출하고 나면 개체 간의 관계를 결정할 수 있다. 관계는 개체 간의 의미 있는 연관성이다. 일반적으로 관계는 요구 사항을 표현한 문장에서 동사로 표현된다. 단, 조직의 업무 처리와 관련하여 개체 간의 연관성을 의미 있게 표현한 동사만 선택하고, 의미가 같은 동사가 여러 개이면 대표 동사 하나만 선택한다. 

     

     관계를 추출한 후에는 추출한 관계에 대한 매핑 카디널리티와 참여 특성을 결정한다. 매핑 카디널리티는 관계를 맺고 있는 두 개체에서, 각 개체 인스턴스가 관계를 맺고 있는 상대 개체의 개체 인스턴스 개수를 의미한다. 먼저 매핑 카디널리티를 기준으로 추출한 관계를 일대일, 일대다, 다대다중 하나로 분류한다. 그리고 개체가 관계에 필수적으로 참여하고 있는지 선택적으로 참여하고 있는지를 의미하는 참여 특성을 결정한다. 관계에 대한 매핑 카디널리티와 참여 특성은 이후 논리적 설계 단계에서 중요하게 활용되는 정보이므로 정확히 판단해야 한다. 

     

     사용자가 만족하는 데이터베이스를 개발하려면 조직에서 업무를 처리하는 흐름을 정확히 파악하여 개체 간의 관계를 제대로 추출하고, 매핑 카디널리티와 참여 특성도 올바르게 결정해야 한다. 

     

    3. E-R 다이어그램 작성

     마지막으로 데이터베이스에 대한 요구 사항 명세서에서 추출한 개체, 속성, 관계를 하나의 E-R 다이어그램으로 표현한다. 이 E-R 다이어그램이 데이터베이스에 대한 요구 사항 명세서를 개념적으로 모델링하여 표현한 것이다. 즉 개념적 설계 단계의 결과물인 개념적 스키마다. 

     

     

    03. 논리적 설계

     논리적 설계 단계에서는 DBMS에 적합한 논리적 데이터 모델을 이용해서, 개념적 설계 단계에서 생성한 개념적 스키마를 기반으로 논리적 스키마를 설계한다. 즉, DBMS에 독립적인 개념적 스키마를 기반으로 하여 개발에 사용할 DBMS가 처리할 수 있는 데이터베이스의 논리적 구조를 설계하는 것이 논리적 설계 단계의 목표다.

     

     일반적으로 관계 데이터 모델을 이용하여 개념적 설계 단계의 결과물인 E-R 다이어그램을 관계 데이터 모델의 릴레이션 스키마, 즉 테이블 스키마로 변환하는 작업을 한다. 

    데이터베이스 설계 : 논리적 설계 단계

     

     E-R 다이어그램을 릴레이션 스키마로 변환할 때 적용할 수 있는 다섯 가지 규칙이 있다. 이 규칙들을 순서대로 적용하면 E-R 다이어그램을 릴레이션 스키마로 변환할 수 있지만, 이상 현상이 발생할 수 있다. 이는 추후에 소개할 정규화 과정을 통해 이상 현상이 발생하지 않도록 검증하는 작업을 수행하는 것이 좋다. 

     

    1. 릴레이션 스키마 변환 규칙

    1.1 규칙 1: 모든 개체는 릴레이션으로 변환한다

     E-R 다이어그램의 각 개체를 하나의 릴레이션으로 변환한다. 개체의 이름을 릴레이션의 이름으로 하고, 개체가 가진 속성도 릴레이션의 속성으로 그대로 변환한다. 단, 개체가 가지고 있는 속성이 복합 속성인 경우에는 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환한다. 개체가 가지고 있는 키 속성은 릴레이션의 기본키로 변환한다. 

     

    1.2 규칙 2 : 다대다(n:m) 관계는 릴레이션으로 변환한다

     E-R 다이어그램에 있는 다대다(n:m) 관계를 하나의 릴레이션으로 변환한다. 관계의 이름을 릴레이션의 이름으로 하고, 관계의 속성도 릴레이션의 속성으로 그대로 변환한다. 단, 관계를 맺고 있는 개체들을 규칙 1에 따라 변환한 후 이 릴레이션들의 기본키를 관계 릴레이션에 포함시키고 외래키로 지정한다. 그리고 이 외래키들을 조합하여 관계 릴레이션의 기본키로 지정한다. 

     

    1.3 규칙 3 : 일대다(1:n) 관계는 외래키로 표현한다

     E-R 다이어그램에 있는 일대다(1:n) 관계는 릴레이션으로 변환하지 않고 외래키로만 표현한다. 단, 약한 개체가 참여하는 관계는 일반 개체가 참여하는 경우와 다르게 처리해야 하므로 규칙 3은 다음과 같이 2개의 세부 규칙으로 나누어 적용한다.

     

    규칙 3-1 : 일반적인 일대다 관계는 외래키로 표현한다

     일반 개체들이 참여하는 일대다 관계는 릴레이션으로 변환하지 않고 외래키로만 표현한다. 일대다 관계에서 1측 개체 릴레이션의 기본키를 가져와 n측 개체 릴레이션에 포함시키고 외래키로 지정한다. 관계의 속성들도 n측 개체 릴레이션에 포함시킨다. 

     

    규칙 3-2 : 약한 개체가 참여하는 일대다 관계는 외래키를 포함해서 기본키로 지정한다. 

     규칙 3-1과 같은 과정을 거친다. 하지만 규칙 3-1과의 다른 점은, 외래키가 포함된 릴레이션에서 이 외래키를 포함하여 기본키를 지정해야 한다는 점이다. 즉, n측 개체 릴레이션이 가지고 있던 키 속성과 외래키 속성을 조합하여 기본키로 지정한다. 약한 개체는 강한 개체에 따라 존재 여부가 결정되는 만큼 강한 개체의 기본키를 이용해 식별하는 것이다. 그러므로 강한 개체인 1측 개체 릴레이션의 기본키를 포함해서 약한 개체의 기본키를 지정한다. 

     

    1.4 규칙 4 : 일대일(1:1) 관계는 외래키로 표현한다

     E-R 다이어그램에 있는 일대일 관계도 릴레이션으로 변환하지 않고 외래키로만 표현한다. 하지만 데이터의 중복을 피하려면 개체가 관계에 참여하는 특성에 따라 약간 다르게 처리해야 하므로 3개의 세부 규칙으로 나누어 적용한다.

     

    규칙 4-1 : 일반적인 일대일 관계는 외래키를 서로 주고받는다

     일반적인 일대일 관계는 릴레이션으로 변환하지 않고 외래키로만 표현한다. 관계를 맺는 개체들을 규칙 1에 따라 변환한 릴레이션들이 서로의 기본키를 주고받아 이를 외래키로 지정한다. 이때, 관계가 가지는 속성들은 관계에 참여하는 개체를 변환한 릴레이션에 모두 포함시킨다. 

     

     하지만 이럴 경우 불필요한 데이터 중복이 발생하게 된다. 관계에 참여하는 특성을 고려하여 일대일 관계를 변환하는 방법을 규칙 4-2와 규칙 4-3을 통해 알아보자.

     

    규칙 4-2 : 일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받는다

     관계에 필수적으로 참여하는 개체에 해당하는 릴레이션이 선택적으로 참여하는 개체에 해당하는 릴레이션의 기본키를 받아 외래키로 지정한다. 이때, 관계가 가지고 있는 속성들도 관계에 필수적으로 참여하는 개체에 해당하는 릴레이션에 함께 포함시킨다.

     

     두 개체가 모두 선택적으로 참여하는 경우에는 외래키를 포함시킬 릴레이션을 자유롭게 선택하면 된다. 그리고 필수적으로 참여하는 개체가 있다면 그 개체에 해당하는 릴레이션에 외래키를 포함시키면 된다. 

     

    규칙 4-3 : 모든 개체가 일대일 관계에 필수적으로 참여하면 릴레이션 하나로 합친다

     두 개체가 모두 관계에 필수적으로 참여한다면 두 개체에 해당하는 두 릴레이션을 하나로 합쳐 표현한다. 관계의 이름을 릴레이션으로 사용하고, 관계에 참여하는 두 개체의 속성들도 관계 릴레이션에 모두 포함시킨다. 그리고 두 개체 릴레이션의 키 속성을 조합하여 관계 릴레이션의 기본키로 지정한다. 

     

    1.5 규칙 5 : 다중 값 속성은 릴레이션으로 변환한다 

     관계 데이터 모델의 릴레이션에서는 다중 값을 가지는 속성을 허용하지 않는다. E-R 다이어그램에 있는 다중 값 속성은 그 속성을 가지고 있는 개체에 해당하는 릴레이션이 아닌 별도의 릴레이션을 만들어 포함시킨다. 새로 만들어진 릴레이션에는 다중 값 속성으로 표현된 속성뿐 아니라 그 속성을 가지고 있는 개체에 해당하는 릴레이션의 기본키를 가져와 포함시키고 이를 외래키로 지정한다. 새로 만들어진 릴레이션의 이름은 자유롭게 정하고, 기본키는 다중 값 속성과 외래키를 조합하여 지정한다. 

     

     

    2. 릴레이션 스키마 변환 규칙을 이용한 논리적 설계

     논리적 설계를 위한 E-R 다이어그램을 릴레이션 스키마로 변환할 때는 변환 규칙을 순서대로 적용하면 된다. 해당되지 않는 규칙은 제외하고 다음으로 넘어간다. 

     

     다섯 가지의 변환 규칙을 순서대로 적용하여 최종적으로 변환된 릴레이션 스키마에 대해 속성의 데이터 타입과 길이&널 값 허용 여부&기본값&제약조건 등을 결정하는 것도 논리적 설계 단계에서 수행하는 작업이다. 

     

     

    03. 물리적 설계와 구현

     논리적 설계 단계에서 릴레이션 스키마의 설계를 완료하면, 물리적 설계 단계에서는 하드웨어나 운영체제의 특성을 고려하여 필요한 인덱스의 구조나 내부 저장 구조 등에 대한 물리적인 구조를 설계한다. 그리고 마지막으로 DBMS를 이용해 SQL 문을 작성하고 이를 실행시켜서 데이터베이스를 실제로 생성하면 데이터베이스 개발이 완료된다.

     

    데이터베이스 설계 : 물리적 설계와 구현

     

    Reference

     

    데이터베이스 개론 - 교보문고

    [요약]①데이터베이스 기초 이론 : 1장에서 데이터베이스를, 2장에서 DBMS를 소개합니다. 3장에서는 이들을 조합한 데이터베이스 시스템을 소개합니다.②데이터 모델과 연산 : 4장에서 데이터 모

    www.kyobobook.co.kr

     

    반응형

    댓글