[프로그래밍] CS

[Computer Science] 데이터 모델

JHVan 2024. 5. 9. 16:01

데이터 모델

데이터를 구조화, 조직화하는 방식을 정의한 모델을 말한다.

복잡한 시스템이나 비즈니스의 데이터 구조를 초기에 정의하고, 효과적으로 관리하는 데 효과적인 방식이다.

데이터의 타입, 관계, 제약 조건 등을 명시하여 데이터베이스, 소프트웨어, 시스템 등에서 데이터를 어떻게 저장하고 관리할지에 대한 모델이다.

 

데이터 모델의 주요 유형

 

개념적 데이터 모델

데이터 모델링의 가장 상위 수준에서 데이터와 그 사이의 관계를 추상적으로 정의하는 방법

주로 시스템이나 비즈니스의 요구사항을 이해하고 분석하기 위한 목적으로 사용되며, 데이터베이스 설계의 초기 단계에서 중점적으로 다루는 모델.

 

역할

비즈니스 요구사항 이해: 개념적 모델을 통해 비즈니스의 요구사항과 데이터 사이의 관계를 명확하게 이해할 수 있음.

통신의 용이성: 기술적 세부사항을 배제함으로써, 비기술적 이해관계자들도 데이터 구조와 관계를 쉽게 이해하고 토론할 수 있음.

데이터베이스 설계의 토대: 개념적 모델은 논리적 및 물리적 데이터 모델로의 전환을 위한 기반을 제공함.

 

논리적 데이터 모델

데이터와 데이터 간의 관계, 데이터의 속성, 그리고 그 속성에 대한 제약 조건을 좀 더 구체적으로 명시한다.

특정 데이터베이스 관리 시스템(DBMS)에 의존하지 않으면서도 데이터의 구조를 상세하게 정의한다.

데이터 일관성과 무결성을 확보하며, 시스템이나 비즈니스의 요구 사항 변화에 유연하게 대응할 수 있는 기반을 제공한다.

 

역할

데이터 구조의 명확화 

  • 개념적 모델에서 정의된 엔티티와 관계를 더 세부적으로 명시함으로써 데이터 간의 관계와 구조를 명확하게 함
  • 데이터베이스의 구조를 이해하고, 데이터 간의 상호 작용을 분석하는 데 효과적.

데이터 무결성 및 일관성 보장

  • 데이터의 무결성을 보장하기 위한 제약 조건과 규칙을 정의
  • 엔티티의 기본 키(primary key)와 외래 키(foreign key)를 사용하여 데이터 간의 관계를 명확히 하고, 중복을 방지

데이터베이스 설계의 기반 마련

  • 논리적 데이터 모델은 물리적 데이터 모델로의 전환에 필요한 중간 단계로 작용
  • 이를 통해 특정 DBMS의 물리적 구현에 앞서 데이터의 구조를 결정할 수 있음

요구 사항 분석 및 문서화

  • 시스템이나 비즈니스의 요구 사항을 명확하게 분석하고, 이를 문서화하는 데 사용
  • 이는 프로젝트 초기 단계에서 발생할 수 있는 오해를 줄이고, 개발팀 내외의 커뮤니케이션을 용이하게 함

변경 관리

  • 시스템의 요구 사항이 변경될 경우, 논리적 데이터 모델을 수정함으로써 변경 사항을 관리하고, 이를 데이터베이스 설계에 반영할 수 있음
  • 개발 과정의 유연성을 높이고, 시스템의 발전에 따른 데이터 구조의 적응을 가능하게 함.

물리적 데이터 모델

  • 실제 데이터베이스 시스템에서 데이터가 어떻게 저장될지에 대한 세부 사항을 정의한다.
  • 파일 구조, 인덱스, 접근 방법 등 구현의 세부사항을 포함한다.
  • 물리적 데이터 모델은 특정 데이터베이스 관리 시스템(DBMS)에 종속적이다.

데이터 모델의 구성 요소

 

엔티티(Entity)

데이터를 대표하는 중심 개념이나 객체로  데이터 모델링에서 데이터베이스 내에서 정보를 저장하는 기본 단위이다.

실제 세계의 객체나 개념을 추상화해서 나타낸 것이다.

특정한 정보의 집합으로, 각 엔티티는 고유한 속성(Attributes)을 가진다.

 

역할 

정보 구조화 

  • 엔티티를 정의함으로써 데이터를 구조화하고, 각 정보 단위를 명확히 식별할 수 있게 된다.
  • 데이터 관리와 검색을 용이하게 한다.

관계 정의

  • 엔티티 간의 관계를 통해 데이터 사이의 연결을 명확하게 정의할 수 있다.
  • (ex:상점과 상품)

데이터 무결성 유지

  • 엔티티와 그 속성을 통해 데이터의 무결성 규칙을 설정할 수 있다. 
  • (ex:학생 엔티티의 학번)

속성(Attribute)

엔티티를 구성하는 세부 정보.

엔티티의 특성을 정의하며, 데이터베이스 내에서 구체적인 데이터 값으로 표현된다.

데이터 모델의 핵심 요소로, 데이터의 특성과 구조를 명확하게 하며, 데이터베이스의 정확성과 효율성을 높이는 데 중요한 역할을 한다.

 

역할

정보의 세분화 

  • 엔티티의 구체적인 정보를 제공하여, 데이터를 보다 세밀하게 관리할 수 있음

데이터 식별

  • 속성 중에는 엔티티를 유일하게 식별할 수 있는 키(key)가 포함될 수 있으며, 데이터의 정확성을 보장
  • 데이터 관계 설정 속성은 다른 엔티티와의 관계를 정의하는 데 사용될 수 있으며, 데이터 간의 연결성을 구현

데이터 검증

  • 특정 속성에 대한 규칙이나 제약조건을 설정함으로써 데이터의 유효성을 검증하고, 데이터의 질을 유지하는 데 기여

관계(Relationship)

서로 다른 엔티티 간의 연결을 나타낸다.

관계는 데이터 모델의 핵심적인 부분으로 데이터 간의 상호작용을 정의하고, 데이터베이스의 구조적인 통합을 가능하게 하며, 데이터 관리 및 활용의 효율성을 높이는 가장 중요한 요소이다.

 

관계의 역할

데이터 연결

  • 서로 다른 엔티티 간의 연결을 통해 데이터 간의 관계를 명확하게 정의
  • 데이터베이스 내에서 정보를 쉽게 찾고 관리할 수 있도록 함

데이터의 의미 부여

  • 데이터 사이의 관계에 의미를 부여하여 데이터의 해석과 분석이 가능해짐

데이터 무결성 유지

  • 관계를 사용하여 데이터 간의 일관성을 유지하고, 데이터의 정확성을 보장

쿼리 성능 최적화

  • 관계를 통해 데이터베이스에서 데이터를 효율적으로 검색 가능
  • 쿼리를 최적화하여 DB 성능을 향상

관계의 종류

일대일(One-to-One) 관계

  • 한 엔터티의 인스턴스가 다른 엔터티의 단 하나의 인스턴스와만 연결될 때 발생
  • 예를 들어, '사용자' 엔터티와 '사용자 프로필' 엔터티 사이의 관계
  • 여기서 각 사용자는 하나의 프로필만 가지고, 각 프로필은 특정 사용자에게만 속함

일대다(One-to-Many)  관계

  • 이 관계는 한 엔터티의 인스턴스가 다른 엔터티의 여러 인스턴스와 연결될 수 있을 때
  • 예를 들어, '선생님' 엔터티와 '수업' 엔터티 사이의 관계
  • 한 선생님이 여러 수업을 가르칠 수 있지만, 각 수업은 단 한 명의 선생님에게만 배정될 수 있음
  • 반대의 입장에선 다대일(Many-to-One) 관계

다대다(Many-to-Many) 관계

  • 한 엔터티의 여러 인스턴스가 다른 엔터티의 여러 인스턴스와 연결될 수 있을 때 발생
  • 예를 들어, '학생' 엔터티와 '과목' 엔터티 사이의 관계
  • 한 학생은 여러 과목을 수강할 수 있고, 한 과목은 여러 학생에게 수강될 수 있