데이터베이스 모델링 (2)

avatar
2025.01.14
·
10 min read

04. 데이터 모델링 유형

데이터 모델링 단계

  1. 요구사항 분석

  2. 개념 모델링: 핵심 엔티티 도출 및 관계 정의 (개념 ER모델)

  3. 논리 모델링: 업무 요건을 명확하게 표현, 설계 (상세 ER모델)

  4. 물리 모델링: 구현할 DBMS 특징에 맞게 표현

  5. 데이터베이스: 물리적 모델을 DB에 구현

  • 점점 추상화/단순화에서 구체화/세분화로 발전

1. 개념적 데이터 모델링

  • 비지니스 이해관계자와 분석가가 생성

  • 간단한 다이어 그램 표현

  • 데이터 프로젝트의 목적, 범위 및 설계에 대한 의견일치가 중요

  • 데이터에 대한 청사진 제공

  • 핵심 데이터 집합 도출, 관계 설정, 핵심속성 정의, 식별자 정의

  • 예시 - 자동차 대리점

    • 대리점에 대한 정보

    • 대리점이 보유한 자동차 정보

    • 대리점서 자동차를 구매한 고객 정보

    • 향후 사용될 비즈니스 요구사항 또한 포함해야한다. - 모든 판매에는 최소 1명의 판매원과 1명 이상의 고객이 연결되어야한다. 등

2. 논리적 데이터 모델링

  • 개념 데이터 클래스를 기술적 데이터 구조에 매핑

  • 개념적 데이터 모델에서 식별된 데이터 개념과 복잡한 데이터 관계에 대한 자세한 내용 제공

    • 데이터 유형, 엔터티 간의 관계, 키 속성 지정

  • 데이터 아키텍트와 분석가 협업을 통해 생성

  • 업무를 모델링 표기법으로 형상화

  • 직관적이며, 특정 DB 모델 기반 논리적 스키마로 변환하는 과정

  • 예시 - 자동차 대리점

    • 대리점 엔티티: 대리점의 이름, 위치 정보는 텍스트 형식 필요 / 전화번호는 숫자 데이터 형식

    • 고객 엔티티: 이메일 주소 필드는 255자 이하

    • 판매 엔티티: 텍스트, YYYY-MM-DD 날짜, 10진수 금액 필드

3. 개념적 / 논리적 데이터 모델링 용어

개념적 모델링

논리적 DB 설계

Entity

Table

Attribute

Column

UID

Primary Key

Relationship

Foreign Key

Mandatory

Not null

Optional

Null

4. 물리적 데이터 모델링

  • 논리적 데이터 모델을 특정 DBMS 기술에 매핑하고 소프트웨어의 용어를 사용

    • DBMS에 표현된 데이터 필드 유형

    • DBMS에 표현된 데이터 관계

    • 성능 조정과 같은 추가 세부 정보

    • 최종 설계 구현 전에 물리적 모델 생성

  • 트랜잭션 고려, 비정규화 배제 고려

  • 예시 - 자동차 대리점

    • 대리점 엔티티: VARCHAR(50), INT

    • 판매 엔티티: DATETIME, FLOAT

ERD

  • 시스템의 엔티티들이 무엇이 있고 어떤 관계가 있는지 나타내는 다이어그램

  • 관계형 DB에서 주로 널리 사용

  • 엔티티와 속성들을 테이블과 컬럼들로 변환

논리적 ERD

2820

물리적 ERD

2821

05. 데이터 모델링 정규화

정규화

  • 다양한 유형의 검사를 통해 데이터 모델을 좀 더 구조화하고 개선시키는 절차에 관련된 이론

  • 기본 원칙은 하나의 테이블에는 중복된 데이터가 없도록 하는 것

  • 데이터를 수학적인 방법에 의해 구조화시켜 체계적으로 관리

정규화 종류

  1. 1차 정규화: 도메인이 원자값, 복수의 속성값을 갖는 속성을 분리

  2. 2차 정규화: 부분 종속 속성의 분리, 주식별자에 종속적이지 않은 속성의 분리

  3. 3차 정규화: 이전 종속 속성의 분리, 속성에 종속적인 속성의 분리

  4. BCNF 정규화: 다수의 주식별자 분리

  5. 4차 정규화: 다가 종속 속성 분리

  6. 5차 정규화: 결합 종속일 경우 2개 이상의 N개로 분리

함수의 종속성

  • 데이터들이 어떤 기준값에 의해 종속되는 현상

  • 기준값을 결정자, 종속되는 값을 종속자라 한다.

1차 정규화

  • 모든 속성은 반드시 하나의 원자값만 보유

  • 복수의 속성값을 가진 속성을 분리

  • 하나의 컬럼에 여러개의 데이터값이 중복되어 있으면 안된다.

예시

  • 취미에 다중값(축구, 게임, 독서)가 있는 경우

  • 취미1, 취미2, 취미3이 있는 경우

  • 취미 속성을 새로운 테이블로 분리해 학생과 취미 테이블 간에 1:N 관계를 생성

2823

2차 정규화

  • 주식별자를 구성하는 일부 속성에 종속적인 속성을 분리

  • 각 속성들은 자신이 속한 테이블의 주식별자에 의해 완전 함수적 종속 관계가 이루어진다.

  • 복합식별자일 경우만 해당

예시

  • 점수 속성은 기본키(강의번호+학번)에 종속적이지만 이름은 종속적이지 않다.

  • 학번만으로 이름이 검색 가능하다.

  • 이 때 새로운 학생 추가시 점수에 Null 값을 입력해야하고(입력 이상), 강의번호 삭제시 학생까지 삭제된다.(삭제 이상)

  • 학생테이블을 만들어 점수가 학생 테이블을 참조하게 한다.

2824

3차 정규화

  • 속성에서 종속적인 속성을 분리

  • 이행적 함수 종속 제거, 기본키가 아닌 모든 속성간에서는 서로 종속될 수 없다.

예시

  • 학생 테이블의 경우 기본키는 학번이며, 학과 속성의 경우 학과번호에 종속

  • 기본키가 아닌 속성들 간에는 서로 종속관계가 될 수 없다.

  • 학과 테이블을 따로 만들어 학생 테이블과 학과 테이블을 참조하도록 구성

2825

BCNF 정규화

  • 복잡한 식별자 관계에 발생하는 문제를 해결

  • 테이블에 존재하는 식별자가 여러 개 존재하면 식별자가 중복되어 나타나는 현상을 제거

  • 기본키가 아닌 속성이 기본키의 속성을 결정지을 수 없다.

예시

  • 이 경우 교수 이름만으로도 강의(기본키 속성)을 결정 가능하다.

2826
  • 교수는 하나의 강의를 담당하는 조건이 있으므로 테이블 분리

2827

4차 정규화

  • 다치 종속이 없어야한다.

  • 동시에 발생하는 여러 엔티티 타입간의 관계에서 기인하는 경우가 많다.

예시

  • 학생번호 하나에 과목과 여러 개의 취미가 종속

  • 강의, 취미가 관계가 없어도 같은 테이블에 학생이라는 컬럼에 다치 종속되어 중복이 발생

2828

5차 정규화

  • 중복을 제거하기 위해 분해할 수 있는 만큼 전부 분해

  • 조인 종속이 없어야한다.

  • 조인 연산을 했을 때 데이터 손실이 없어야한다.







- 컬렉션 아티클