[F-Lab 66해빗 페이백 챌린지 ]

[F-Lab 페이백 모각코 52일차] (SQL) 데이터 모델링의 이해

everydeveloper 2023. 9. 9. 23:28

데이터 모델의 이해

  • 모델링이란?
    • 데이터베이스의 모델링은 ‘현실 세계를 단순화하여 표현하는 기법’이다
  • 모델링의 특징
    • 추상화
      • 추상화는 복잡하거나 구체적인 것을 단순화하거나 개념화하는 과정을 말합니다. 예를 들어, 예술 작품에서 구체적인 대상을 추상적인 형태로 표현하는 것이 추상화의 예입니다.
    • 단순화
      • 단순화란 복잡한 것을 단순하게 만드는 것을 의미합니다.
    • 명확화
      • 명확화란, 어떤 것을 더욱 분명하게 밝히거나 정확하게 규정하는 것을 의미합니다.
  • 모델링의 세 가지 관점
    • 데이터 관점
      • "데이터 관점"은 데이터를 다루는 관점을 의미합니다. 데이터를 수집, 분석, 활용하는 등의 과정에서 중요한 역할을 합니다.
    • 프로세스 관점
      • 프로세스 관점은 시스템이나 소프트웨어를 구성하는 작업들을 단계적으로 파악하고 이해하는 것을 의미합니다.
    • 데이터와 프로세스의 상관 관점
      • 데이터와 프로세스의 상관 관점에서 데이터는 프로세스의 입력이 되고, 프로세스는 데이터를 가공하여 출력으로 생성합니다.
  • 모델링의 세 가지 단계
    • 개념적 데이터 모델링
      • 개념적 데이터 모델링은 데이터베이스 설계의 한 단계로, 개체, 속성, 관계 등을 이용하여 비즈니스 규칙을 반영한 데이터 모델을 만드는 과정입니다.
    • 논리적 데이터 모델링
      • 논리적 데이터 모델링은 데이터베이스에서 필요한 정보를 체계적으로 분석하여 표현하는 방법 중 하나입니다.
    • 물리적 데이터 모델링
      • 물리적 데이터 모델링은 데이터 모델을 구체적인 데이터베이스 구조로 변환하는 과정을 말합니다.
  • 데이터의 독립성
    • 3단계 스키마 구조
      • 외부 스키마
        • 사용자 뷰(User View)로, 사용자가 접근하는 데이터베이스의 일부분을 의미합니다. 각 사용자 뷰는 필요한 데이터와 데이터 구조를 포함하고 있으며, 데이터베이스의 전체 구조에서 일부분을 차지합니다.
      • 개념 스키마
        • 모든 사용자가 공유하는 데이터베이스의 논리적 구조를 의미합니다. 개념 스키마는 데이터베이스의 전체적인 구조를 정의하고 있으며, 데이터베이스 관리자가 관리합니다.
      • 내부 스키마
        • 데이터베이스의 물리적 저장 구조를 의미합니다. 내부 스키마는 데이터베이스의 전체적인 구조를 기술하고 있으며, 데이터베이스 관리자가 관리합니다.
    • 3단계 스키마 구조가 보장하는 독립성
      • 3단계 스키마 구조는 데이터베이스에서 테이블, 뷰 및 다른 개체를 구성하는 방법으로, 데이터의 논리적 독립성과 물리적 독립성을 보장합니다.
  • ERD (Entity Relationship Diagram)
    • ERD 표기 방식
      • Peter Chen
        • 데이터베이스 설계에서 가장 일반적으로 사용되는 ERD 표기법 중 하나입니다.
      • IDEF1X: 정보 모델링에서 가장 일반적으로 사용되는 ERD 표기법 중 하나입니다.
        • IE/Crow's Foot데이터 모델링에서 가장 일반적으로 사용되는 ERD 표기법 중 하나입니다.
      • Min-Max/ISO
        • ERD 표기법 중 하나로, 최소값과 최대값을 사용하여 관계를 나타냅니다.
      • UML
        • 객체 지향 프로그래밍에서 사용되는 표기법 중 하나이지만, ERD 표기법으로도 사용됩니다.
      • Case*Method/Barker
        • ERD 표기법 중 하나로, 사각형, 타원, 마름모 등의 다양한 기호를 사용하여 관계를 나타냅니다.
    • IE/Crow’s Foot 표기법
    • ERD 작성 순서

엔터티

엔터티란?

  • 엔터티는 데이터베이스에서 관리하기 위한 정보의 단위로, 유일한 속성을 가지고 있는 식별 가능한 객체(entity)를 말합니다.
  • 엔터티는 데이터베이스에서 일반적으로 테이블로 표현됩니다.
  • 예를 들어, 학생, 교수, 과목 등은 엔터티가 될 수 있습니다.
  • TIP
    • 엔터티: Table
    • 인스턴스: Row
    • 속성: Column

엔터티의 특징

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

엔터티의 분류

  • 유형 vs 무형
    • 유형 엔터티
      • 유형 엔터티는 유형적인 특징을 가진 엔터티로, 예를 들어 고객, 제품 등이 이에 해당됩니다.
    • 개념 엔터티
      • 개념 엔터티는 추상적인 개념을 가진 엔터티로, 예를 들어 시간, 날짜 등이 이에 해당됩니다.
    • 사건 엔터티
      • 사건 엔터티는 특정한 사건 또는 행위를 나타내는 엔터티로, 예를 들어 주문, 결제 등이 이에 해당됩니다.
  • 발생시점
    • 기본 엔터티
      • 기본 엔터티는 다른 엔터티로부터 독립적으로 존재할 수 있는 엔터티로, 예를 들어 지역, 부서 등이 이에 해당됩니다.
    • 중심 엔터티
      • 중심 엔터티는 다른 엔터티들과 관계를 맺고 있는 중요한 엔터티로, 예를 들어 고객, 주문 등이 이에 해당됩니다.
    • 행위 엔터티
      • 행위 엔터티는 시스템에서 발생하는 행위를 나타내는 엔터티로, 예를 들어 로그인, 검색 등이 이에 해당됩니다.
  • 속성 (Attribute)
    • 속성이란?
      • 속성이란 엔터티를 구성하는 항목으로, 예를 들어 학생 엔터티의 속성으로는 학번, 이름, 전공 등이 있습니다.
    • 속성값
      • 속성값이란 각 엔터티 인스턴스가 가지는 속성의 값으로, 예를 들어 학생 엔터티의 학번 속성값으로는 20210001, 20210002 등이 있습니다.
    • 엔터티, 인스턴스, 속성, 속성값의 관계
      • 엔터티는 인스턴스를 가지며, 각 인스턴스는 속성을 가지며, 각 속성은 속성값을 가집니다.
  • 분류
    • 특성에 따른 분류
      • 기본 속성: 엔터티의 기본 속성
      • 설계 속성: 데이터베이스 설계 이상으로 생성된 속성
      • 파생 속성: 다른 속성을 기반으로 도출된 속성
    • 구성 방식에 따른 분류
      • PK 속성: 엔터티의 기본 키로 사용되는 속성
      • FK 속성: 다른 엔터티의 기본 키로 사용되는 속성
      • 일반 속성: 나머지 속성
  • 도메인 (Domain): 속성이 가질 수 있는 값의 범위나 규칙을 정의한 것으로, 데이터 타입과 제약 조건을 결정합니다.

관계 (Relationship)

  • 관계란?
    • 관계는 엔터티 간의 연관성을 나타내는 것으로, 예를 들어 학생과 강의 사이의 수강 관계 등이 있습니다.
  • 존재 관계
    • 존재 관계는 관계를 표현하기 위해 사용되는 것으로, 하나의 엔터티가 다른 엔터티에 속해있거나, 다른 엔터티에 의해 생성될 때 사용됩니다.
  • 행위 관계
    • 행위 관계는 엔터티 간의 동작과 관련된 관계를 나타내는 것으로, 예를 들어 학생이 수강신청을 하는 것과 같은 관계가 있습니다.
  • 표기법
    • 관계를 표기하는 방법에는 크게 3가지가 있습니다.
  • 관계명: 관계의 이름을 나타냅니다.
  • 관계차수: 관계의 참여도를 나타냅니다. 즉, 한 엔터티에서 다른 엔터티로 참여하는 방법을 나타냅니다.
  • 관계선택사양: 관계 간의 선택 사항을 나타냅니다. 예를 들어 부모 엔터티와 자식 엔터티가 있을 때, 부모가 삭제될 때 자식도 함께 삭제되는지를 나타냅니다.

식별자 (Identifiers)식별자란?

  • 엔터티를 식별하기 위해 사용되는 속성(attribute) 또는 속성들의 집합이다.
  • 엔터티 내에서 각각의 인스턴스(instance)를 유일하게 식별할 수 있는 값이다.

주식별자

  • 엔터티에서 특정 인스턴스를 식별할 수 있는 식별자 중에서 대표적인 것을 말한다.
  • 주식별자는 엔터티 내에서 고유한 값을 가져야 하며, 반드시 존재해야 한다.

분류

  • 대표성 여부
    • 엔터티의 모든 속성이 주식별자에 포함되는 경우: 전체 식별자(Full Identifier)
    • 일부 속성만 주식별자에 포함되는 경우: 부분 식별자(Partial Identifier)
  • 스스로 생성되었는지 여부
    • 사용자에 의해 수동적으로 입력되는 경우: 인공 식별자(Surrogate Identifier)
    • 엔터티의 다른 속성을 조합하여 자동으로 생성되는 경우: 자연 식별자(Natural Identifier)
  • 단일 속성의 여부
    • 하나의 속성만 주식별자로 사용하는 경우: 단일 식별자(Single Identifier)
    • 둘 이상의 속성을 조합하여 주식별자로 사용하는 경우: 복합 식별자(Composite Identifier)
  • 대체 여부
    • 주식별자가 없고 다른 속성을 대신하여 식별하는 경우: 대체 식별자(Alternate Identifier)

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

  • 식별자 관계 (Identification Relationship)
    • 엔터티 간의 관계를 구성하는데 식별자가 사용되는 경우
    • 부모 엔터티의 주식별자가 자식 엔터티의 주식별자와 관계를 맺는 경우
    • 일대일 관계, 일대다 관계에서 사용된다.
  • 비식별자 관계 (Non-Identification Relationship)
    • 엔터티 간의 관계를 구성하는데 식별자가 사용되지 않는 경우
    • 부모 엔터티의 비식별자 열이 자식 엔터티의 비식별자 열과 관계를 맺는 경우
    • 다대다 관계에서 사용된다.