ioerror

SQLD - 데이터 모델링 본문

DataBase

SQLD - 데이터 모델링...

반응형

용어정의

데이터베이스는 데이터의 집합이며, DBMS(데이터베이스 매니지먼트 시스템)는 데이터를 효율적으로 관리하는 시스템입니다.
테이블은 엔터티로 불리기도 하며, 물리적 설계와 논리적 설계 방식에 따라 용어가 달라집니다.
속성은 칼럼 또는 열, 행의 집합은 인스턴스라고 불립니다.
엔터티(Entity) = 테이블 (Table)
속성(Attribute) = 컬럼 (Column)
인스턴스(Instance) = 로우 (Row)

모델링의 정의 및 특징

Webster 사전에 따르면 가설적 또는 일정 양식에 맞춘 표현이다.
모델이란 사물또는 사건에 관한 양상이나 관점을 연관된 사람이나 그룹을 위하여 명확하게 하는 것이다.
데이터 모델링은 현실 세계의 비즈니스 프로세스와 데이터 요구 사항을 추상적이고 구조화된 형태로 표현하는 과정입니다.
모델링은 현실세계를 추상화, 단순화, 명확화하기 위해 일정한 표기법에 의해 표현한 기법이다.

  1. 단순화
    • 현실에 단순화하여 핵심 요소에 집중하고 불필요한 세부 사항을 제거
    • 단순화를 통해 복작한 현실 세계를 이해하고 표현하기 쉬워짐
  2. 추상화
    • 현실계계를 일정한 형식에 맞추어 간략하게 대략적으로 표현하는 과정
    • 다양한 현상을 일정한 양식인 표기법에 따라 표현
  3. 명확화
    • 대상에 대한 애매모호함을 최대한 제거하고 정확하게 현상을 기술하는 과정
    • 명확화를 통해 모델을 이해하는 이들의 의사소통을 원활히 함

데이터 모델링 3가지 관점

  1. 데이터 관점
    • 데이터가 어떻게 저장되고 접근되고 관리되는지를 정의하는 단계
    • 업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지에 대해서 모델링하는 방법(What,Data)
  2. 프로세스관점
    • 시스템이 어떤 작업을 수행하며, 이러한 작업들이 어떻게 조직되고 조정되는지를 정의하는 단계
    • 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야하는지를 모델링하는 방법(How, Process)
  3. 데이터와 프로세스 관점
    • 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링하는 방법

데이터 모델링 유의사항

데이터 모델링 시 데이터 중복 방지, 업무 변화에 유연한 대처, 일관성 유지에 유의해야 한다.

  1. 중복
    • 데이터는 중복을 방지해야 한다, 동일한 데이터가 같은 엔터티 또는 다른 엔터티에 중복되어서는 안된다.
  2. 비유연성
    • 프로세스(업무)의 변화에도 모델이 변경되지 않도록 하는 것이 좋다, 즉 데이터 정의를 프로세스와 분리하는 것이 좋다.
  3. 비일관성
    • 디비내의 정보(데이터)가 단일 엔터티 또는 관련 엔터티간에 일관성이 있어야 하며, 상호 연관관계를 명확히 해야한다.
    • 데이터 품질 관리가 필요하며, 데이터 중복이 없더라도 비일관성은 발생 할 수 있다.

데이터 모델링의 세 가지 요소

엔터티, 속성, 관계

데이터 모델링 3단계

  • 개념적 모델링: 업무 협의를 통해 필요한 데이터를 개념적으로 만드는 단계입니다.
  • 논리적 모델링: 엔터티의 세부 속성, 식별자, 관계 등을 정의하고 정규화를 수행하는 단계입니다.
  • 물리적 모델링: 논리적 설계를 기반으로 실제 데이터베이스를 생성하는 단계로, 성능, 저장 구조, 보안 등을 고려합니다.

스키마 3단계 구조

스키마는 모든 객체에 대한 정보(메타 데이터)를 의미합니다.
스키마는 논리적 독립성과 물리적 독립성을 가집니다.

  • 외부 스키마: 사용자나 응용 프로그램 단계에서 바라보는 데이터 및 객체입니다.
  • 개념 스키마: 논리 모델 단계에서 만들어진 스키마로, 데이터베이스 전체의 논리적 구조를 가집니다.
  • 내부 스키마: 물리 설계 단계에서 만들어진 결과물로, 실제 저장 구조, 테이블, 칼럼, 인덱스 등을 정의합니다.

ERD(엔터티 관계 다이어그램)

논리적인 설계 단계에서 엔터티와 엔터티의 관계를 시각적으로 표현한 다이어그램입니다.
ERD 작성 절차는 엔터티 그리기, 배치, 관계 설정, 속성 서술, 선택/필수 여부 정의로 이루어집니다.

엔터티

독립적으로 식별 가능한 객체나 개념이며, 데이터를 표현하는 최소 단위입니다.
구성 요소는 인스턴스(행)와 속성(컬럼)입니다.
엔터티는 식별자를 가지고 업무에 필요하며, 두 개 이상의 인스턴스와 속성을 가져야 합니다.
엔터티 분류는 유형/무형(유형, 개념, 사건) 및 발생 시점(기본, 중심, 행위)에 따라 나뉩니다.
엔터티 명명 규칙은 현업 용어 사용, 약어 자제, 단수 형태, 유일성, 생성 의미 부여입니다.
ERD 표기법에서 엔터티는 사각형으로 표현됩니다.

속성

물리적인 단계에서는 컬럼이며, 업무적으로 필요한 고유한 성질 값을 표현합니다.
속성값은 더 이상 분리되지 않는 최소 데이터 단위이며, 하나의 속성값은 하나만 존재해야 합니다.
속성은 주식별자에 함수적 종속 관계를 가져야 합니다.
함수적 종속성: 완전 함수적 종속과 부분 함수적 종속으로 나뉩니다.
속성 분류는 특성(기본, 설계, 파생) 및 엔터티 구성 방식(PK, FK, 일반 속성)에 따라 나뉩니다.
분해 여부에 따라 단일 속성, 복합 속성, 다중값 속성으로 구분됩니다.
속성 명명 규칙은 업무 용어 사용, 서술식/약어 자제, 중복되지 않는 명칭입니다.
도메인은 속성값이 갖는 값의 범위를 의미합니다.

관계

엔터티 간의 연관성을 나타내며, 인스턴스들이 가지고 있는 연결 고리입니다.
관계는 존재적 관계와 행위적 관계로 구분됩니다.
관계 구성 요소는 관계 이름, 차수, 필수 여부입니다.
관계 차수: 1대1, 1대N, N대N 관계가 있으며, N대N 관계는 연결 엔터티를 통해 해소해야 합니다.
관계 페어링은 엔터티 내 인스턴스(행) 간의 관계에 초점을 맞춘 것입니다.

식별자

엔터티를 대표하며 여러 인스턴스를 구분할 수 있는 속성입니다. 논리 모델링에서 사용하며 물리 모델링에서는 '키'라고 표현합니다.
주식별자 특징: 유일성, 최소성, 불변성, 존재성(NULL 불허)을 가집니다.
식별자 분류: 대표 여부(주식별자, 보조식별자), 생성 여부(내부 식별자, 외부 식별자), 구성 개수(단일, 복합), 대체 여부(본질, 인조)에 따라 나뉩니다.
주식별자 도출 기준: 업무에서 자주 이용되는 속성, 명칭/내역 피하기, 속성 수 최소화입니다.
강한 개체와 약한 개체: 독립적으로 존재할 수 있는 엔터티를 강한 개체, 종속적인 엔터티를 약한 개체라고 합니다.
식별 관계와 비식별 관계: 식별 관계는 강한 개체의 기본키를 다른 엔터티가 기본키로 가지는 것이고, 비식별 관계는 일반 속성으로 가지는 것입니다. ERD에서 식별 관계는 실선, 비식별 관계는 점선으로 표시됩니다.

키의 종류 (물리 모델링 관점)

기본 키 (Primary Key, PK): 엔터티를 대표하는 유일한 키입니다.
후보 키 (Candidate Key): 기본 키가 될 수 있는 모든 키를 의미하며, 유일성과 최소성을 만족합니다.
대체 키 (Alternate Key): 후보 키 중 기본 키가 아닌 키입니다.
슈퍼 키 (Super Key): 유일성을 만족하지만 최소성을 만족하지 않는 키입니다.
외래 키 (Foreign Key, FK): 다른 테이블의 기본 키를 참조하는 키입니다.

정규화

테이블을 분해하는 과정으로, 데이터의 일관성, 중복 최소화, 유연성 확보를 목적으로 합니다.
논리 데이터 모델링 시 시행되며, 이상 현상(삽입, 갱신, 삭제 이상)을 줄이기 위한 기법입니다.
제1정규화: 속성값이 반드시 하나만 존재하도록 하는 원자성 원칙을 지킵니다.
제2정규화: 제1정규화를 거친 테이블에 대해 완전 함수 종속이 되도록 테이블을 분해합니다. 즉, 부분 함수 종속을 제거합니다.
제3정규화: 제2정규화를 거친 테이블에 대해 이행적 종속을 없애도록 테이블을 분리합니다.
실질적으로는 3정규화까지만 수행하는 경우가 많습니다.

반정규화 (역정규화)

정규화를 통해 분리된 데이터를 다시 결합하는 과정으로, 조인으로 인한 성능 저하 등 특정 상황에서 고려됩니다.

관계(재정리)

엔터티의 연관성을 나타내며, 부모-자식 엔터티 간 식별자 상속을 통해 조인 키가 형성됩니다.
조인은 분리된 데이터를 결합하여 동시에 출력할 때 필요합니다.
셀프 조인: 자기 자신과 조인하는 것으로, 계층형 데이터 모델에서 사용됩니다.

트랜잭션

하나의 연속적인 업무 단위를 의미하며, 트랜잭션 내의 작업은 필수적인 관계를 가집니다.
트랜잭션 내 모든 작업은 동시 커밋되거나 동시에 롤백되어야 합니다.
ERD에서 필수적 관계와 선택적 관계 표기법(IE 표기법: 원, 바커 표기법: 실선/점선)을 설명합니다.

NULL

값이 정해지지 않았음을 의미하며, 0이나 빈 문자열과 다릅니다.
NULL을 포함한 산술 연산 결과는 항상 NULL입니다. NULL 치환 함수(NVL 등)를 사용하여 해결할 수 있습니다.
그룹 함수(SUM, AVG, MIN, MAX, COUNT) 연산 시 NULL은 무시하고 연산합니다.
ERD 표기법에서 IE 표기법은 NULL 허용 여부를 알 수 없으나, 바커 표기법은 동그라미로 NULL 허용을 표시합니다.

본질 식별자와 인조 식별자 (심화)

본질 식별자: 업무에서 본질적으로 존재하는 식별자입니다.
인조 식별자: 업무에는 필요 없지만 관리 목적 등으로 인위적으로 만들어진 식별자입니다.
인조 식별자는 데이터 중복 발생 가능성, 불필요한 인덱스 생성 및 그로 인한 저장 공간 낭비 및 DML 성능 저하와 같은 단점이 존재할 수 있으므로 주의해야 합니다.

SQLD 관련 도서

2025 시대에듀 유선배 SQL개발자(SQLD) 과외노트, 정미나  2025 SQLD 모든 것:SQLD 14일 합격, 아이리포, 조용학 SQL자격검정 실전문제, 한국데이터산업진흥원

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

반응형
Comments