ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQLD] 데이터 모델링 파트 간단 정리
    SQLD 2023. 3. 5. 15:34

    모델링 : 데이터베이스의 모델링은 '현실 세계를 단순화하여 표기하는 기법'

     

    모델링의 특징

    1. 추상화 : 현실 세계를 일정한 형식으로 표현하는 것. 아이디어나 개념을 간략하게 표현하는 과정

    2. 단순화 : 복잡한 현실세계를 정해진 표기법으로 단순하고 쉽게 표현한다는 의미

    3. 명확화 : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다는 의미

     

    모델링의 세 가지 관점

    1. 데이터관점

    2. 프로세스 관점

    3. 데이터와 프로세스의 상관 관점

     

    모델링의 세 가지 단계

    1. 개념적 데이터 모델링

    2. 논리적 데이터 모델링

    3. 물리적 데이터 모델링

     

    3단계 스키마 구조

    1. 외부 스키마 : 사용자의 관점

    2. 개념 스키마 : 통합된 관점

    3. 내부 스키마 : 물리적인 관점

     

    3단계 스키마 구조가 보장하는 독립성

    1. 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향받지 않는다.

    2. 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향받지 않는다. 

     

    ERD(Entity Relationship Diagram) : 시스템에 어떤 엔터티들이 존재하며 그들 간에 어떤 관계가 있는지를 나타내는 다이어그램.

    까마귀발 표기법(IE/Crow's Foot) 을 가장 많이 사용함

     

    ERD 작성 순서

    1. 엔터티를 도출하고 그림

    2. 엔터티를 적절하게 배치

    3. 엔터티 간의 관계를 설정

    4. 관계명을 기입

    5. 관계의 참여도를 기입

    6. 관계의 필수/선택 여부 기입

     

    엔터티(Entity) : 업무에서 쓰이는 데이터를 용도별로 분류한 그룹. table 이라고 볼 수 있다.

     

    엔터티의 특징

    1. 업무에서 쓰이는 정보여야 함

    2. 유니크함을 보장할 수 있는 식별자가 있어야  함

    3. 2개 이상의 인스턴스를 가지고 있어야 함

    4. 반드시 속성을 가지고 있어야 함

    5. 다른 엔터티와 1개 이상의 관계를 가지고 있어야  함

     

    엔터티 분류

    1. 유형, 무형 : 유형 엔터티, 개념 엔터티, 사건 엔터티

    2. 발생 시점 : 기본 엔터티, 중심 엔터티, 행위 엔터티

     

    속성(Attribute) : 사물이나 개념의 특징을 설명해줄 수 있는 항목들

    속성은 더 이상 쪼개지지 않는 레벨이어야 하고 프로세스에 필요한 항목이어야 함

     

    속성 분류

    특성에 따른 분류 : 기본 속성, 설계 속성, 파생 속성

    구성방식에 따른 분류 : pk(primary key)속성, fk(foreign key) 속성, 일반속성

     

    도메인(domain) : 속성이 가질 수 있는 속성값의 범위

    ex) 우편번호는 다섯 자리의 숫자 범위를 갖는다.

     

    관계 : 엔터티와 엔터티와의 관계를 의미

    존재 관계, 행위 관계가 있음

     

    관계 표기법

    관계명 : 관계의 이름

    관계 차수 : 관계에 참여하는 수

    관계선택사양 : 필수인지 선택인지의 여부

     

    식별자 : 속성 중에 각각의 인스턴스를 구분 가능학게 만들어주는 대표 격인 속성

     

    주식별자

    유일성 : 각 인스턴스에 유니크함을 부여해서 식별 가능

    최소성 : 최소 개수로 존재

    불변성 : 속성값 변하면 안됨

    존재성 : NULL 불가

     

    식별자 분류

    1. 대표성 여부 : 주식별자, 보조식별자

    2. 스스로 생성되었는지 여부 : 내부식별자, 외부식별자

    3. 단일 속성의 여부 : 단일식별자, 복합식별자

    4. 대체 여부 : 원조식별자, 대리식별자

     

    식별자 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계

    비식별자 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계

     

    정규화 : 데이터 정합성을 위해 엔터티를 작은 단위로 분리하는 과정

    모든 엔터티를 무작정 분리하면 안되기 때문에 정규화를 하기 위한 일정한 룰이 존재

     

    제1정규형 : 모든 속성은 하나의 값만 가져야한다.

    제2정규형 : 엔터티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 한다. 주식별자가 단일식별자가 아닌 복합식별자인 경우 일반속성이 주식별자의 일부에만 종속될 수 있는데 이럴경우 별도의 엔터티로 분리한다.

    제3정규형 : 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.

     

    반정규화(역정규화) : 데이터의 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정

    조회 성능은 향상될 수 있으나 입력, 수정, 삭제 성능은 저하될 수 있으며 데이터 정합성 이슈가 발생할 수 있다.

    반정규화 과정은 정규화가 끝난 후 거치게 됨

     

    테이블 반정규화

    1. 테이블 병합

     - 1:1 관계 테이블 병합

     - 1:M 관계 테이블 병합

     - 슈퍼 서브 타입 테이블 병합

    2. 테이블 분할

     - 테이블 수직 분할(속성 분할)

     - 테이블 수평 분할(인스턴스 분할, 파티셔닝)

    3. 테이블 추가

     - 중복 테이블 추가

     - 통계 테이블 추가

     - 이력 테이블 추가

     - 부분 테이블 추가

     

    컬럼 반정규화

    1. 중복 컬럼 추가

    2. 파생 컬럼 추가

    3. 이력 테이블 컬럼 추가

     

    관계 반정규화(중복관계 추가)

     

    트랜잭션(transaction) : 데이터를 조작하기 위한 하나의 논리적인 작업 단위

     

    NULL : NULL 은 존재하지 않음(값이 없음)을 의미

     

    데이터 모델링 순서

    1. 데이터 모델에 맞게 정규화 수행

    2. 데이터베이스의 용량 및 트랜잭션 유형을 파악(성능 저하를 일으키는 부분이 없는지 검토)

    3. 데이터베이스 성능을 고려하여 반정규화를 수행

    4. PK/FK 등을 조정하여 인덱스를 반영함으로써 성능을 향상시킴

    5. 데이터 모델의 성능을 검증

     

     

     

     

    출처 : 유선배 SQL 개발자 SQLD 과외 노트

    https://www.youtube.com/@SQL/playlists

    'SQLD' 카테고리의 다른 글

    [SQLD] SQL 기본 및 활용  (0) 2023.03.19

    댓글

Designed by Tistory.