새소식

Computer Science/Database

데이터 모델링의 이해

  • -

 

본 게시물은 ‘정미나, ⌜2022 유선배 SQL개발자(SQLD)⌟, 시대고시기획, 2022’ 을 인용하였습니다.

 

1. 데이터 모델의 이해

1-1. 모델링이란?

  • 데이터베이스의 모델링 : 현실 세계를 단순화하여 표현하는 기법
  • 모델 : 현실 세계에서 일어날 수 있는 다양한 현상에 대해 일정 표기법에 의해 표현해 놓은 모형
    • 모델링 : 모델을 만들어가는 일
  • 모델링은 현실 세계에서 필요한 데이터를 저장하는 데이터베이스를 구축하기 위한 분석/설계의 과정

1-2. 모델링 특징

  1. 추상화(Abstraction) : 현실 세계를 일정한 형식으로 표현하는 것. 즉, 아이디어/개념을 간략하게 표현하는 과정
  2. 단순화(Simplification) : 복잡한 현실 세계를 정해진 표기법으로 단순/쉽게 표현
  3. 명확화(Clarity) : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술
  • 데이터베이스의 모델링 : '현실 세계'를 '추상화, 단순화, 명확화' 하기 위해 일정한 표기법에 의해 표현하는 기법
  • 데이터 모델링 시 지양해야 할 점
    • 중복(Duplication) : 같은 데이터가 여러 엔터티에 중복 저장 현상 지양
    • 비유연성(Inflexibility) : 애플리케이션과 데이터 간 연계성이 높으면 애플리케이션 변경 시마다 데이터 모델도 변경되어야 함. 데이터 모델과 프로세스를 분리해 유연성을 높이는 것이 바람직함
    • 비일관성(Inconsistency) : 데이터 중복 없는 경우에도 발생O. 개발자가 다른 데이터와 연관성 고려 않고 일부 데이터만 변경할 수 있기 때문

1-3. 모델링의 3가지 관점

  1. 데이터 관점(What, Data) : 어떤 데이터들이 업무와 얽혀있는지, 그 데이터 간의 어떤 관계가 있는지 대해 모델링
  2. 프로세스 관점(How, Process) : 이 업무가 실제로 처리하고 있는 일이 무엇인지 또는 앞으로 처리해야 하는 일은 무엇인지 모델링
  3. 데이터와 프로세스의 상관 관점(Data VS. Process, Interaction) : 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지 모델링

1-4. 모델링의 3단계

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

1-5. 데이터의 독립성

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

1-6. ERD(Entity Relationship Diagram)

시스템에 어떤 엔터티들이 존재하고 그들 간의 어떤 관계가 있는지 나타내는 다이어그램

 

1. ERD 표기 방식

① Peter Chen : 실무 사용 드묾

② IDEFIX(Intergration Definition for Information Modeling) : 실무에서 사용하는 경우도 있고 ERWin에서 사용되는 모델

③ IE/Crow's Foot : 까마귀발 표기법이라고도 하며 가장 많이 사용됨. ERWin, ERStudio에서 사용되는 모델

④ Min-Max/ISO : 각 엔터티의 참여도를 좀 더 상세하게 나타내는 표기법

⑤ UML : 소프트웨어공학에서 주로 사용되는 모델

⑥ Case Method/Barker : Oracle에서 사용되는 모델로 Crow's Foot과 비슷

2. IE/Crow's Foot 표기법

3. ERD 작성 순서

  1. 엔터티 도출, 그림
  2. 엔터티 적절하게 배치
  3. 엔터티 간의 관계 설정
  4. 관계명 기입
  5. 관계 참여도 기입
  6. 관계의 필수/선택 여부 기입

 

 

2. 엔터티(Entity)

2-1. 엔터티란?

  • 식별 가능한 객체
  • 업무에서 쓰이는 데이터를 용도별로 분류한 그룹
  • tip.
    • 엔터티 : Table
    • 인스턴스 : Row
    • 속성 : Column
  • 각 엔터티는 자신을 더 상세히 나타내기 위해 속성(Attribite) 가짐

2-2. 엔터티 특징

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

2-3. 엔터티 분류

1. 유형 VS. 무형

  • 유형 엔터티 : 물리적 형태O. 안정정/지속적(ex. 상품, 회원)
  • 개념 엔터티 : 물리적 형태X. 개념적(ex. 부서, 학과)
  • 사건 엔터티 : 행위를 함으로써 발생. 빈번함/통계자료로 이용O(ex. 주문, 이벤트 응모)

2. 발생 시점

  • 기본 엔터티 : 독립적으로 생성됨. 자식 엔터티 가질 수 있음(ex. 상품, 회원)
  • 중심 엔터티 : 기본 엔터티로부터 파생, 행위 엔터티 생성(ex. 주문)
  • 행위 엔터티 : 2개 이상의 엔터티로부터 파생(ex. 주문 내역, 이벤트 응모 이력)

2-4. 엔터티 이름 정할 때 주의점

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

 

 

3. 속성(Attribute)

3-1. 속성이란?

  • 엔터티의 특징을 나타내는 최소의 데이터 단위
  • 더 이상 쪼개지지 않는 레벨이어야 함
  • 프로세스에 필요한 항목이어여 함
  • ex. 아티스트에게 이름, 생년월일, 소속사, 데뷔연도 등 수식어 -> 속성
    • '연예인' 엔터티에 '데식' 인스턴스 있을 때 '국적' 속성이 있을 수 있으나,
      업무상 불필요한 데이터라고 판단되면 '국적' 속성은 삭제하는 것이 바람직
  • ex. 가격변경이력은 속성이 아닌, 별도의 엔터티가 되어야 함(엔터티는 더 이상 쪼개지지 않는 레벨)

3-2. 속성값

  • 각 속성은 속성값을 갖고 속성값은 엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터

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

  • 엔터티 ⊃ 인스턴스 ⊃ 속성

  1. 한 개의 엔터티는 두 개 이상의 인스턴스를 가짐
  2. 한 개의 인스턴스는 두 개 이상의 속성을 가짐
  3. 한 개의 속성은 하나의 속성값을 가짐

3-4. 분류

1. 특성에 따른 분류

  • 기본속성(Basic Attribute) : 업무 프로세스 분석 통해 바로 정의 가능한 속성
  • 설계속성(Designed Attribute) : 업무에 존재하지는 않으나 설계하다보니 필요하다고 판단되어 도출해낸 속성
    • ex. '학생' 엔터티에 이름, 학과, 학년 속성이 존재한다면 속성값들은 다른 인스턴스의 속성값과 중복될 수 있고 유니크함 보장X
      • 학번이라는 설계속성을 만들어 학생 개개인에게 고유번호를 할당해 인스턴스에 유니크함을 부여
  • 파생속성(Derived Attribute) : 다른 속성의 속성값을 계산하거나 특정 규칙으로 변형해 생성한 속성
    • ex. 상품 주문 프로세스 : 상품 주문해 결제하는 순간 주문 내역/상품 인스턴스 생성되고
      주문 상품 인스턴스에는 주문한 상품의 개수가 속성으로 존재
      • 한 상품의 재고 계산을 위해 모든 주문 이력의 주문 상품 개수를 가져와 합산해야 하는데, 사용자에게 품절 여부 알리는 속도 느려질 수 있음
      • 주문 상품 엔터티에서 미리 상품의 구매 수량 구한 후(실제는 취소/환불 개수 고려) 재고 계산해 속성으로 갖고 있는 경우 파생속성에 해당
    • 불가피하게 필요한 경우에만 정의하는 것이 바람직

 

2. 구성방식에 따른 분류

  • PK(Primary Key) 속성 : 엔터티의 인스턴스들을 식별할 수 있는 속성(유니크함 부여)
    • ex. '상품' 엔터티의 상품코드, '학생' 엔터티의 학번, '직원' 엔터티의 사번
  • FK(Foreign Key) 속성 : 다른 엔터티의 속성에서 가져온 속성
    • ex. '직원' 엔터티의 부서코드, '학생' 엔터티의 학과코드, '회원' 엔터티의 회원등급코드
  • 일반속성 : PK, FK 제외한 나머지 속성
    • ex. '상품' 엔터티의 상품명/가격, '학생' 엔터티의 이름/생년월일

3-5. 도메인(Domain)

  • 속성이 가질 수 있는 속성값의 범위
  • ex. 우편번호는 다섯 자리 숫자 범위 갖고, 엔터티 정의 시 데이터 타입/크기로 나타낼 수 있음

 

 

4. 관계(Relationship)

4-1. 관계란?

  • 엔터티와 엔터티간의 관계
  • 어떠한 연관성이 있는지 타입을 분류해 존재 관계&행위 관계로 나뉨

4-2. 존재 관계

  • 존재 자체로 연관성 있는 관계
  • ex. 직원-부서, 학생-학과

4-3. 행위 관계

  • 특정 행위를 함으로써 연관성이 생기는 관계
  • ex. 회원-주문, 학생-출석부

4-4. 표기법

1. 관계명(Membership) : 관계 이름

  • 엔터티와 엔터티가 어떤 관계를 맺고있는지 나타내주는 문장
  • 모든 관계는 2개의 관계명을 갖는데, 각 엔터티 관점에서 관계명을 하나씩 가지기 때문
  • 반드시 명확한 문장으로 표현하고 현재형이어야 함

 

2. 관계차수(Cardinality) : 관계에 참여하는 수

  • 1:1, 1:M, M:N 형식으로 구분

3. 관계선택사양(Optionality) : 필수인지 선택인지 여부

  • 필수적 관계 : 참여자가 반드시 존재해야 하는 관계
  • 선택적 관계 : 참여자가 없을 수도 있는 관계
    • 선택참여 하는 쪽을 원으로 표현

 

 

5. 식별자(Identifiers)

5-1. 식별자란?

  • 모든 엔터티는 인스턴스를 갖고 인스턴스는 속성으로 자신의 특성을 나타내고자 함
  • 식별자는 이런 속성 중 각 인스턴스를 구분 가능하게 만들어주는 대표 격인 속성

5-2. 주식별자

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

5-3. 식별자 분류

1. 대표성 여부

  • 주식별자(Primary Identifer)
    • 유일성, 최소성, 불변성, 존재성 가진 대표 식별자
    • 다른 엔터티와 참조 관계로 연결
  • 보조식별자(Alternate Identifier)
    • 인스턴스를 식별할 수는 있으나 대표 식별자X
    • 다른 엔터티와 참조 관계로 연결X

2. 스스로 생성되었는지 여부

  • 내부식별자(Internal Identifier) : 엔터티 내부에서 스스로 생성된 식별자
  • 외부식별자(Foreign Identifier) : 다른 엔터티에서 온 식별자, 다른 엔터티와의 연결고리 역할

3. 단일 속성의 여부

  • 단일식별자(Single Identifier) : 하나의 속성으로 구성된 식별자
  • 복합식별자(Composite Identifier) : 두 개 이상의 속성으로 구성된 식별자

4. 대체 여부

  • 원조식별자(Original Identifier) : 업무 프로세스에 존재하는 식별자, 가공되지 않은 원래의 식별자(본질식별자)
  • 대리식별자(Surrogate Identifier) : 주식별자 속성이 2개 이상인 경우 그 속성들을 하나로 묶어 사용하는 식별자(인조식별자)

5-4. 식별자 관계 VS. 비식별자 관계

1. 식별자 관계(Identification Relationship)

  • 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계
  • 주식별자는 반드시 존재해야 함(존재성). 부모 엔터티가 있어야 생성 가능하고 단일식별자/복합식별자 여부 따라 1:1 혹은 1:M 결정

2. 비식별자 관계(Non-Identification Relationship)

  • 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계
  • 일반 속성값은 NULL이 될 수 있어 부모 엔터티가 없는 자식 엔터티 생성O
  • 자식 엔터티가 존재하는 상태에서 부모 엔터티가 삭제될 수 있음

3. 식별자 관계 VS. 비식별자 관계

식별자 관계 비식별자 관계
강한 관계 약한 관계
부모 엔터티의 식별자가 자식 엔터티의 주식별자 부모 엔터티의 식별자가 자식 엔터티의 일반속성
부모 엔터티 있어야 생성O 부모 엔터티 없는 자식 엔터티 생성O
실선 점선

'Computer Science > Database' 카테고리의 다른 글

SQL 기본  (0) 2024.02.28
데이터 모델과 SQL  (0) 2024.02.27
엔터티  (0) 2024.02.26
데이터 모델링의 이해  (0) 2024.02.26
데이터 모델링  (0) 2024.02.22
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.