브렌쏭의 Veritas_Garage

[Udemy] SQLD 엔티티와 정규화 본문

[Project_하다]/[Project_공부]

[Udemy] SQLD 엔티티와 정규화

브렌쏭 2024. 7. 23. 17:54

Entity

  • Entity: A person, place, thing, event, or concept in the user environment about which the organization wishes to maintain data.
    • 이벤트, 개념, 사람, 장소, 사물 등 조직이 데이터를 유지하고자 하는 사용자 환경의 개체
  • Entity Type: A collection of entities that share common properties or characteristics.
    • 공통 속성이나 특성을 공유하는 엔티티의 집합
  • Entity Instance: A single occurrence of an entity type.
    • 엔티티 유형의 단일 발생
  • Attribute: A property or characteristic of an entity or relationship type that is of interest to the organization.
    • 조직이 관심을 가지는 엔티티나 관계 유형의 속성이나 특성

ERD (Entity-Relationship Diagram)

ERD는 데이터베이스의 구조를 시각적으로 나타내는 도구로, 엔티티, 속성, 관계를 표현한다.
ERD는 데이터베이스 설계 단계에서 사용되며, 데이터베이스의 구조를 이해하고 설계하는 데 도움이 된다.

  • I/E (Information Engineering) Notation
    • Entity: 사각형
    • Attribute: 타원형
    • Relationship: 마름모
    • Key Attribute: 밑줄
  • Barker Notation
    • Entity: 사각형
    • Attribute: 타원형
    • Relationship: 마름모
    • Key Attribute: 밑줄

보통 ERD는 I/E Notation을 사용한다. 선호하는 표기법을 사용하면 된다.

대강 이런 느낌

Relationship

  • Relationship: An association between the instances of one or more entity types that is of interest to the organization.
    • 조직이 관심을 가지는 하나 이상의 엔티티 유형의 인스턴스 간의 연관
    • 관계는 엔티티 간의 연결을 나타내며, 엔티티 간의 관계를 표현한다.

Relationship Type: A set of associations between one or more entity types.

  • 1:1 (One-to-One)
    • 한 엔티티 인스턴스가 다른 엔티티 인스턴스와 연결
  • 1:N (One-to-Many)
    • 한 엔티티 인스턴스가 다른 엔티티 인스턴스 여러 개와 연결
  • N:M (Many-to-Many)
    • 한 엔티티 인스턴스가 다른 엔티티 인스턴스 여러 개와 연결되고, 다른 엔티티 인스턴스도 한 엔티티 인스턴스 여러 개와 연결
    • N:M 관계는 중간 테이블을 사용하여 1:N 관계로 변환할 수 있다.

Relationship Degree

  • Degree: The number of entity types that participate in a relationship.
    • 관계에 참여하는 엔티티 유형의 수
    • Degree는 2개 이상일 수 있다.
    • Degree가 2인 관계를 Binary Relationship, Degree가 3인 관계를 Ternary Relationship라고 한다.
    • Degree가 2인 관계가 가장 일반적이다.
  • Binary Relationship: A relationship between two entity types.
    • 두 개의 엔티티 유형 간의 관계
    • 가장 일반적인 관계
    • 1:1, 1:N, N:M 관계가 있다.
  • Ternary Relationship: A relationship between three entity types.
  • Quaternary Relationship: A relationship between four entity types.
  • n-ary Relationship: A relationship between n entity types.

Relationship Strength

관계의 강도는 관계가 얼마나 강력하게 연결되어 있는지를 나타낸다.

  • Strong Relationship: A relationship in which the existence of an entity depends on another entity.
    • 한 엔티티의 존재가 다른 엔티티에 의존하는 관계
    • 관계가 강력하게 연결되어 있어, 한 엔티티가 다른 엔티티에 의존한다.
  • Weak Relationship: A relationship in which the existence of an entity does not depend on another entity.
    • 한 엔티티의 존재가 다른 엔티티에 의존하지 않는 관계
    • 관계가 약하게 연결되어 있어, 한 엔티티가 다른 엔티티에 의존하지 않는다.
    • Weak Relationship는 Optional Relationship로도 불린다.
    • Weak Relationship는 Partial Key를 사용하여 구현할 수 있다.

정규화 (Normalization)

정규화는 데이터베이스 설계에서 중복을 최소화하고 데이터 무결성을 유지하기 위해 데이터를 구조화하는 과정이다.

  • Normalization: The process of converting complex data structures into simple, stable data structures.
    • 복잡한 데이터 구조를 단순하고 안정적인 데이터 구조로 변환하는 과정
    • 중복을 최소화하고 데이터 무결성을 유지하기 위해 데이터를 구조화한다.
    • 정규화는 데이터베이스 설계 단계에서 사용된다.
  • Data Redundancy: The presence of duplicate data in a database.
    • 데이터베이스에 중복 데이터가 존재하는 것
    • 중복 데이터는 데이터 무결성을 해칠 수 있다.
    • 중복 데이터는 데이터베이스의 용량을 증가시킬 수 있다.
  • Data Integrity: The accuracy and consistency of data in a database.
    • 데이터베이스의 데이터의 정확성과 일관성
    • 데이터 무결성은 데이터베이스의 중요한 특성 중 하나이다.
  • Anomalies: Problems that can occur in a database as a result of data redundancy.
    • 데이터 중복으로 인해 발생할 수 있는 데이터베이스의 문제
    • Anomalies는 데이터베이스의 데이터 무결성을 해칠 수 있다.
  • Functional Dependency: A relationship between attributes in which the value of one attribute determines the value of another attribute.
    • 한 속성의 값이 다른 속성의 값을 결정하는 속성 간의 관계
    • Functional Dependency는 데이터베이스의 정규화를 위해 사용된다.
  • Normalization Form: A standard set of rules that determine the degree to which a database has been normalized.
    • 데이터베이스가 정규화된 정도를 결정하는 표준 규칙의 집합
    • 정규화된 정도는 정규화 형태로 표현된다.
  • Denormalization: The process of intentionally introducing redundancy into a database to improve performance.
    • 성능을 향상시키기 위해 의도적으로 데이터베이스에 중복을 도입하는 과정
    • Denormalization은 데이터베이스의 성능을 향상시키기 위해 사용된다.

과정규화 Over-Normalization

  • Over-Normalization: The process of normalizing a database to such an extent that it becomes difficult to work with.
    • Normalization Trap

정규화 형태 (Normalization Form)

  • First Normal Form (1NF)
    • 모든 속성이 원자값을 가지고, 중복이 없는 테이블
  • Second Normal Form (2NF)
    • 1NF를 만족하고, 모든 속성이 기본키에 대해 완전 함수적 종속인 테이블
    • 기본키의 일부 속성이 다른 속성에 종속되는 경우, 2NF를 만족하지 않는다.
      • ex) Order Table: OrderID, ProductID, ProductName, ProductPrice
      • ProductName, ProductPrice는 ProductID에 종속되므로 2NF를 만족하지 않는다.
    • 2NF를 만족하지 않는 경우, 기본키를 변경하거나 테이블을 분리하여 2NF를 만족시킬 수 있다.
      • ex) Order Table: OrderID, ProductID
      • Product Table: ProductID, ProductName, ProductPrice
      • Order Table과 Product Table을 분리하여 2NF를 만족시킨다.
      • 2NF를 만족시키기 위해 테이블을 분리하는 과정을 Decomposition이라고 한다.
  • Third Normal Form (3NF)
    • 2NF를 만족하고, 모든 속성이 기본키에 대해 이행적 종속이 아닌 테이블
    • 이행적 종속: A가 B에 종속되고, B가 C에 종속되면 A가 C에 종속되는 것
    • 3NF를 만족하지 않는 경우, 테이블을 분리하여 3NF를 만족시킬 수 있다.
      • ex) Order Table: OrderID, CustomerID, CustomerName, CustomerAddress
      • CustomerName, CustomerAddress는 CustomerID에 종속되므로 3NF를 만족하지 않는다.
      • Customer Table: CustomerID, CustomerName, CustomerAddress
      • Order Table: OrderID, CustomerID
      • Order Table과 Customer Table을 분리하여 3NF를 만족시킨다.
Comments