본문 바로가기
DBMS(SQL)

데이터베이스 설계 과정(9일차)

by JoinInNoetic 2023. 10. 9.

◆ 설계 순서

    1. 요구사항 수집 및 분석

    2. 개념적 설계

    3. 논리적 설계

    4. 물리적 설계

    5. 구현

 

◆ 데이터베이스 설계 중요성

    - 가장 중요한 것은 분석

    - 내가 구현할 시스템이 무엇인지 정확하게 파악하고 이에 따른 데이터베이스 설계가 이루어져야 함

    - 만일, 데이터베이스 설계가 제대로 되어 있지 않은 상태에서 시스템이 구현된다면

    - 사소한 문제로 인해 데이터베이스를 수정할 때 어렵게 해결해야 하는 문제점 발생

 

◆ 요구사항 수집 및 분석

    ● 목적

        - 사용자의 요구 사항을 수집하고 분석하여 개발할 데이터베이스의 용도를 파악

        - 업무에 필요한 데이터가 무엇인지, 그 데이터에 어떤 처리가 필요한지 등을 고려

 

    ● 주요 작업

        - 데이터베이스를 실제로 사용할 주요 사용자의 범위를 결정

        - 사용자가 조직에서 수행하는 업무를 분석

        - 면담, 설문 조사, 업무 관련 문서 분석 등의 방법을 이용해 요구 사항 수집

        - 수집된 요구 사항에 대한 분석 결과를 요구 사항 명세서로 작성

 

    ● 결과물

        - 요구 사항 명세서

 

    ● 기능적 요구사항

        - 시스템이 무엇을 하는지, 어떤 기능을 하는지 등 기능의 수행과 관련된 요구사항

        - 시스템의 입력과 출력으로 무엇이 포함되어야 하는지에 대한 사항

        - 시스템이 어떤 데이터를 저장하거나 연산을 수행해야 하는지에 대한 사항

        - 시스템이 반드시 수행해야 하는 기능

        - 사용자가 시스템을 통해 제공 받기를 원하는 기능

 

    ● 비기능적 요구사항

        - 품질이나 제약사항과 관련된 요구사항

        - 시스템 장비 구성 요구사항

        - 성능 요구사항

        - 인터페이스 요구사항

        - 데이터를 구축하기 위해 필요한 요구사항

        - 테스트, 보안을 위한 요구사항

        - 품질 요구 사항 : 가용성, 정합성, 상호 호환성, 대응성, 이식성, 확장성, 보안성 등...

        - 프로젝트 관리 요구사항

        - 프로젝트 자원 요구사항

 

    ● 요구사항 분석을 마치면

        - 요구사항 명세서 작성

        - 요구사항 내에 존재하는 개체와 속성 추출

 

◆ 개념적 설계

    ● 목적

        - DBMS에 독립적인 개념적 스키마 설계

        - 요구사항 분석 결과물을 개념적 데이터 모델을 이용해 개념적 구조로 표현

        - 일반적으로 E-R 모델을 이용

   

    ● 주요 작업

        - 요구 사항 분석 결과를 기반으로 중요한 개체를 추출하고 개체 간의 관계를 결정하여 E-R 다이어그램으로 표현

 

    ● 작업 과정

        1) 개체 추출, 각 개체의 주요 속성과 키 속성 선별

        2) 개체 간의 관계 설정

        3) E-R 다이어그램으로 표현

 

    ● 결과물

        - E-R 다이어그램

 

    ● 개체

        - 저장할 만한 가치가 있는 주요 데이터를 가진 사람이나 사물 등..

        - 개체 추출 방법

            - 요구 사항 문장에서 업무와 관련이 깊은 의미 있는 명사를 찾기

            - 업무와 관련이 적은 일반적으로 광범위한 의미의 명사는 제외

            - 의미가 같은 명사가 여러 개일 경우는 대표 명사 하나만 선택

            - 찾아낸 명사를 개체와 속성으로 분류

        ex) 병원 DB 개발에 필요한 개체

            - 병원 운영에 필요한 사람 : 의사, 환자, 간호사 등..

            - 병원 운영에 필요한 사물 : 병실, 수술실, 의료 장비 등..

        

    ● 개체 추출

        - 개체 : 회원

        - 회원 개체의 속성 :

         회원 아이디, 비밀번호,

         이름, 나이, 직업, 등급, 적립금

        - 회원 개체의 키 속성 :

         회원 아이디

 

    ● 개체의 E-R 다이어그램    

 

    ● 관계

        - 개체 간의 의미 있는 연관성

        - 관계 추출 방법

            - 요구 사항 문장에서 개체 간의 연관성을 의미 있게 표현한 동사를 찾아야 함

            - 의미가 같은 동사가 여러 개일 경우는 대표 동사 하나만 선택

            - 찾아낸 관계에 대해 매핑 카디널리티와 참여 특성을 결정

            - 매핑 카디널리티 : 일대일(1:1), 일대다(1:N), 다대다(N:M)

            - 참여 특성 : 필수적 참여, 선택적 참여 

 

    ● 관계 추출

        - '입력해야 한다' 는

        개체와 관계를

        표현하는 동사로 볼 수

        없으므로 제외

        - '부여된다'는

         개체와 개체의 관계를

        표현하는 동사로 볼 수

        없으므로 제외

        - '식별한다'는

         개체와 개체의 관계를

        표현하는 동사로 볼 수

        없으므로 제외

 

        - 관계 : 주문

        - '회원' 개체와 '상품' 개체가

        맺는 다대다(M:N) 관계

        - '회원' 개체는 관계에 선택적으로 참여

        - '상품' 개체는 관계에 선택적으로 참여

        - '주문' 관계의 속성 : 주문 번호, 주문 수량,

         배송지, 주문일자

 

        - 관계 : 공급

        - '상품' 개체와 '제조업체' 개체가 맺는 일대다(1:N) 관계

        - '상품' 개체는 관계에 필수적으로 참여

        - '제조업체' 개체는 관계에 선택적으로 참여

        - '공급' 관계의 속성 : 공급일자, 공급량

 

        - 관계 : 작성

        - '회원' 개체와 '게시글' 개체가 맺는 일대다(1:N) 관계

        - '회원' 개체는 관계에 선택적으로 참여 

        - '게시글' 개체는 관계에 필수적으로 참여

 

    ● 주문 속성의 ERD

    ● 공급 관계의 ERD

    ● 작성 관계의 ERD

    ● 전체 ERD

 

◆ 논리적 설계

    ● 목적

        - DBMS에 적합한 논리적 스키마 설계

        - 개념적 스키마를 논리적 데이터 모델을 이용해 논리적 구조로 표현

        - 일반적으로 관계 데이터 모델을 많이 이용

 

    ● 주요 작업

        - ERD(개념적 설계의 결과물)를 릴레이션 스키마로 변환

        - 변환 후 속성의 데이터 타입, 길이 , 널 값 허용 여부, 기본 값(디폴트), 제약 조건 등을

         세부적으로 결정하고 결과를 문서화

 

    ● 결과물 

        - 논리적 스키마 : 릴레이션 스키마

 

    ● ERD를 릴레이션 스키마로 변환하는 규칙

        규칙 1) 모든 개체는 릴레이션으로 변환

                    ▶ ERD의 각 개체를 하나의 릴레이션으로 변환

                        - 개체의 이름 → 릴레이션 이름

                        - 개체의 속성 → 릴레이션의 속성

                        - 개체의 키 속성 → 릴레이션의 기본 키

                        - 개체의 속성이 복합 속성인 경우에는 복합 속성을 구성하고 있는 단순 속성만

                          릴레이션의 속성으로 변환

        규칙 2) 다대다(N:M) 관계는 릴레이션으로 변환

                    ▶ ERD 다대다 관계를 하나의 릴레이션으로 변환

                         - 관계의 이름 → 릴레이션 이름

                         - 관계의 속성 → 릴레이션의 속성

                         - 관계에 참여하는 개체를 규칙1에 따라 릴레이션으로 변환한 후 이 릴레이션의 기본키를

                          관계 릴레이션에 포함시켜 외래키를 지정하고, 외래키들을 조합하여 관계 릴레이션의 기본키로 설정

        규칙 3) 일대다(1:N) 관계는 릴레이션으로 변환

                    ▶ ERD의 일대다 관계는 외래키로만 표현

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

                              - 일대다 관계에서 1측 개체 릴레이션의 기본키를 N측 개체 릴레이션에 포함시켜 외래키로 지정

                              - 관계의 속성들도 N측 개체 릴레이션에 포함시킴

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

                              - 일대다 관계에서 1측 개체 릴레이션의 기본키를 N측 개체 릴레이션에 포함시켜 외래키로 지정

                              - 관계의 속성들도 N측 개체 릴레이션에 포함시킴

                         * 약한 개체는 강한 개체에 따라 존재 여부가 결정되므로 강한 개체의 기본키를 이용해 식별

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

                    ▶ ERD의 일대일 관계는 외래키로만 표현 

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

                              - 관계에 참여하는 개체 릴레이션들이 서로의 기본키를 주고 받아 외래키로 지정

                              - 관계의 속성들도 모든 개체 릴레이션에 포함시킴

                              - 불필요한 데이터 중복이 발생할 수 있음

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

                              - 관계에 필수적으로 참여하는 개체 릴레이션만 외래키를 포함시킴

                              - 관계의 속성들은 관계에 필수적으로 참여하는 개체 릴레이션에 포함시킴

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

                              - 관계에 참여하는 관계 릴레이션들을 하나의 릴레이션으로 합쳐서 표현

                              - 관계의 이름을 릴레이션 이름으로 사용하고, 관계에 참여하는 두 개체의 속성들을

                               관계 릴레이션에 모두 포함시킴

                              - 두 개체 릴레이션의 키 속성을 조합하여 관계 릴레이션의 기본키로 지정

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

                    ▶ ERD의 다중 값 속성은 독립적인 릴레이션으로 변환

                         - 다중 값 속성과 함께 그 속성을 가지고 있던 개체 릴레이션의 기본키를 외래키로 가져와

                          새로운 릴레이션에 포함시킴

                         - 새로운 릴레이션의 기본 키는 다중 값 속성과 외래키를 조합하여 지정

        * 변환 규칙을 순서대로 적용하되, 해당되지 않는 규칙은 제외

    ● 예시

    * 개념적 설계 결과물

        → 규칙 1 적용

        → 규칙 2 적용

        → 규칙 3 적용

        → 일대일 관계 X => 규칙4 적용 X

        → 다중 값 속성 X => 규칙5 적용 X

    ● 테이블 명세서 : 릴레이션 스키마에 대한 설계 정보를 기술한 문서

        - 릴레이션 스키마 변환 후 속서으이 데이터 타입과 길이, 널 값 허용 여부 등을 세부적으로 결정하고 문서화

◆ 물리적 설계

    - 하드웨어나 운영체제의 특성을 고려하여 필요한 인덱스 구조나 내부 저장 구조 등에 대한 물리적인 구조를 설계

=> 구현