Data/Sql

[SQLD] 데이터 모델링의 이해 - ERD, 엔티티, 속성, 관계, 식별자

재은초 2024. 5. 23. 14:21
반응형

모델링(Modeling)이란?

  • 데이터베이스의 모델링은 ‘현실 세계를 단순화하여 표현하는 기법’이다.

모델링이 갖춰야 할 조건

  • 현실 세계를 반영해야 한다.
  • 단순화하여 표현해야 한다.
  • 관리하고자 하는 데이터를 모델로 설계한다.

모델링의 특징

  • 추상화(Abstraction) : 현실 세계를 일정한 형식으로 표현한 것, 아이디어나 개념을 간략하게 표현하는 과정
  • 단순화(Simplification) : 복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현하는 과정
  • 명확화(Clarity) : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술하는 과정

모델링의 세 가지 관점

  • 데이터 관점 : 어떤 데이터들이 업무와 얽혀있는지, 그리고 그 데이터 간에는 어떤 관계가 있는지에 대해서 모델링 하는 방법
  • 프로세스 관점 : 이 업무가 실제로 처리하고 있는 일은 무엇인지 또는 앞으로 처리해야 하는 일은 무엇인지를 모델링 하는 방법
  • 데이터와 프로세스의 상관 관점 : 프로세스가 흐름에 따라 데이터가 어떤 영향을 받는 지를 모델링 하는 방법

모델링의 세 가지 단계

  • 개념적(Conceptual) 데이터 모델링 : 전사(전체)적 데이터 모델링 수행 시 행해지며 추상화 레벨이 가장 높은 모델링으로 업무 중심적이고 포괄적인 수준의 모델링이 진행
  • 논리적(Logical) 데이터 모델링 : 재사용성이 가장 높은 모델링으로 데이터베이스 모델에 대한 Key, 속성, 관계 등을 모두 표현하는 단계
  • 물리적(Physical) 데이터 모델링 : 실제 데이터베이스로 구현할 수 있도록 성능이나 가용성 등의 물리적인 성격을 고려하여 모델을 표현하는 단계

데이터의 독립성

  • 3단계 스키마 구조
    • 외부 스키마(External Schema) : Multiple User’s View 단계, 각 사용자가 보는 데이터베이스의 스키마를 정의
    • 개념 스키마(Conceptual Schema) : Community View of DB 단계, 모든 사용자가 보는 데이터베이스의 스키마를 통합하여 전체 데이터베이스를 나타내는 것으로 데이터베이스에 저장되는 데이터들을 표현하고 데이터들 간의 관계를 나타냄
    • 내부 스키마(Internal Schema) : Physical Representation 단계, 실질적인 데이터의 저장 구조나 컬럼 정의, 인덱스 등이 포함 됨
  • 3단계 스키마 구조가 보장하는 독립성
    • 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향을 받지 않는다.
    • 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향을 받지 않는다.

ERD(Entity Relationship Diagram)란?

  • 시스템에 어떤 엔터티들이 존재하며 그들 간에 어떤 관계가 있는 지를 나타내는 다이어그램
  • IE/Crow’s Foot(까마귀발 표기법)
    • 엔터티 : □ (사각형)
    • 0개 : ○ (타원)
    • 1개 :|(해시 마크)
    • 2개 이상 : ∈(까마귀 발)
    • 식별자 관계 : — (실선)
    • 비식별자 관계 : --- (점선)
  • ERD 작성 순서
    • 엔터티를 도출하고 그린다.
    • 엔터티를 적절하게 배치한다.
    • 엔터티 간의 관계를 설정한다.
    • 관계명을 기입한다.
    • 관계의 참여도를 기입한다.
    • 관계의 필수/선택 여부를 기입한다.

 

엔터티(Entity)란?

  • 데이터베이스에서 엔터티는 식별이 가능한 객체라는 의미를 가진다.

엔터티의 특징

  • 업무에서 쓰이는 정보여야 함
  • 유니크함을 보장할 수 있는 식별자가 있어야 함
  • 2개 이상의 인스턴스를 가지고 있어야 함
  • 반드시 속성을 가지고 있어야 함
  • 다른 엔터티와 1개 이상의 관계를 가지고 있어야 함

엔터티 분류

  • 유형 vs 무형
    • 유형 엔터티 : 물리적인 형태 존재 (ex. 상품, 회원)
    • 개념 엔터티 : 물리적인 형태 없음 (ex. 부서, 학과)
    • 사건 엔터티 : 행위를 함으로써 발생 (ex. 주문)
  • 발생시점
    • 기본 엔터티 : 업무에 원래 존재하는 정보, 독립적으로 생성되며 자식 엔터티를 가질 수 있음 (ex. 상품, 회원)
    • 중심 엔터티 : 기본 엔터티로부터 파생되고 행위 엔터티를 생성 (ex. 주문)
    • 행위 엔터티 : 2개 이상의 엔터티로부터 파생 (ex. 주문)

엔터티 이름을 정할 때 주의할 점

  • 업무에서 실제로 쓰이는 용어 사용
  • 한글은 약어를 사용하지 않고, 영문은 대문자로 표기
  • 단수 명사를 표현하고 띄어쓰기는 하지 않음
  • 다른 엔터티와 의미상으로 중복될 수 없음
  • 해당 엔터티가 갖고 있는 데이터가 무엇인지 명확하게 표현

 

속성(Attribute)이란?

  • 사물이나 개념의 특징을 설명해줄 수 있는 항목을 말하며, 의미상 더 이상 쪼개지지 않는 레벨이어야 하고 프로세스에 필요한 항목이어야 한다.

속성값이란?

  • 속성은 속성값을 가지며 속성값은 엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터다. 하나의 속성은 한 개의 속성값만 가진다. 속성에 속성값이 여러 개일 경우 별도의 엔터티로 분리하는 것이 바람직하다.

엔터티, 인스턴스, 속성, 속성값의 관계

  • 한 개의 엔터티는 두 개 이상의 인스턴스를 갖는다.
  • 한 개의 인스턴스는 두 개 이상의 속성을 갖는다.
  • 한 개의 속성은 하나의 속성값을 갖는다.

속성의 분류

  • 특성에 따른 분류
    • 기본속성 : 업무 프로세스 분석을 통해 바로 정의가 가능한 속성
    • 설계속성 : 업무에 존재하지는 않지만 설계하다 보니 필요하다고 판단되어 도출 해낸 속성 (ex. 학번)
    • 파생속성 : 다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성 (ex. 상품 재고)
  • 구성방식에 따른 분류
    • PK(Primary Key) : 엔터티의 인스턴스들을 식별할 수 있는 속성, 각 인스턴스에 유니크함을 부여
    • FK(Foreign Key) : 다른 엔터티의 속성에서 가져온 속성, 다른 엔터티와 관계를 맺게 해주는 매개체 역할
    • 일반속성 : PK, FK를 제외한 나머지 속성

도메인(Domain)이란?

  • 속성이 가질 수 있는 속성값의 범위

 

관계(Relationship)란?

  • 엔터티와 엔터티와의 관계를 의미한다.

관계의 종류

  • 존재 관계 : 존재 자체로 연관성이 있는 관계
  • 행위 관계 : 특정한 행위를 함으로써 연관성이 생기는 관계

표기법

  • 관계명(Membership) : 관계의 이름. 모든 관계는 두 개의 관계명을 가지는데, 각 엔터티의 관점에서 관계명을 하나씩 가지기 때문이다. 관계명은 반드시 명확한 문장으로 표현해야 하며 현재형이어야 한다.
  • 관계차수(Cardinality) : 관계에 참여하는 수를 의미하며, 일반적으로 1:1, 1:M, M:N 형식으로 구분한다.
  • 관계선택사양(Optionality) : 이 관계가 필수인지 선택사항인지의 여부를 나타낸다.

 

식별자(Identifiers)란?

  • 속성 중에 각각의 인스턴스를 구분 가능하게 만들어주는 대표격인 속성

주식별자란?

  • 기본키, PK에 해당하는 속성, 하나의 속성이 주식별자가 될 수도 있고, 여러 개의 속성이 주식별자가 될 수도 있다.
    • 유일성 : 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 한다.
    • 최소성 : 유일성을 보장하는 최소 개수의 속성이어야 한다.
    • 불변성 : 속성값이 되도록 변하지 않아야 한다.
    • 존재성 : 속성값이 NULL일 수 없다.

식별자 분류

  • 대표성 여부
    • 주식별자 : 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자로 다른 엔터티와 참조 관계로 연결
    • 보조식별자 : 인스턴스를 식별할 수는 있지만 대표 식별자가 아님, 다른 엔터티와 참조 관계로 연결되지 않음
  • 스스로 생성 되었는지 여부
    • 내부식별자 : 엔터티 내부에서 스스로 생성된 식별자
    • 외부식별자 : 다른 엔터티에서 온 식별자, 다른 엔터티와의 연결고리 역할
  • 단일 속성의 여부
    • 단일식별자 : 하나의 속성으로 구성된 식별자
    • 복합식별자 : 두 개 이상의 속성으로 구성된 식별자
  • 대체 여부
    • 원조식별자 : 업무 프로세스에 존재하는 식별자, 가공되지 않은 원래의 식별자(본질식별자)
    • 대리식별자 : 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자(인조식별자)

식별자 관계 vs 비식별자 관계

  • 식별자 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계, 부모 엔터티가 있어야 생성 가능하며 단일식별자인지 복합식별자인지에 따라 1:1이거나 1:M이거나 결정
  • 비식별자 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계, 부모 엔터티가 없는 자식 엔터티 생성이 가능하고, 자식 엔터티가 존재하는 상태에서 부모 엔터티가 삭제될 수도 있음

 

Reference

  • 2024 SD에듀 유선배 SQL개발자(SQLD) 과외노트
반응형