본문 바로가기

CS/데이터베이스

[DB] 데이터 모델링

이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다.

 


 

 

데이터 모델링

 데이터 모델링이란? 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정을 말합니다.

현실세계 -> 컴퓨터 세계로 바로 변환하는 것은 그 절차가 모호하기 때문에, 세부적으로 데이터 모델링은 개념적 모델링과 논리적 모델링으로 나눠집니다.

 

 개념적 모델링이란, 현실 세계의 대상에 대한 중요 데이터를 추출하여 개념 세계로 옮기는 작업을 말합니다. 여기서 핵심적인 포인트는 모~~든 데이터가 아닌 중요 데이터를 추출한다는 것입니다. 현실 세계의 개체가 가지고 있는 수많은 특성 중에서, 내가 필요로 하는 데이터만을 추출하는 추상화(또는 모델링) 작업을 수행하는 것입니다.

 논리적 모델링이란, 개념적 모델링으로 도출한 개념 세계의 데이터를 데이터베이스에 저장할 구조로 결정하고, 이 구조로 표현하는 작업을 말합니다. 일반적으로는, 저 두 과정을 구분하지 않고 합쳐서 데이터 모델링이라고 부릅니다.

 

 데이터 모델

 데이터 모델이란, 데이터 모델링의 결과물을 표현하는 도구입니다. 다시 말해, 데이터 모델링은 과정을, 데이터 모델은 도구를 말합니다. 데이터 모델링은 데이터 모델리에서와 유사하게, 개념적 데이터 모델과 논리적 데이터 모델로 구분됩니다.

 

 개념적 데이터 모델이란, 사람의 머리로 이해할 수 있도록 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구입니다. 논리적 데이터 모델은, 개념적 구조를 논리적 데이터 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구입니다.

 

 이러한 데이터 모델은 아래의 요소들로 구성됩니다.

 

  • 데이터 구조 : 현실 세계를 개념 세계로 추상화했을 때 어떤 요소로 이루어져 있는가를 표현하는 개념적 도구
  • 연산 : 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업. 값이 연산에 의해 계속 변경될 수 있으므로 동적이라는 특징을 가짐.
  • 제약조건 : 연산을 적용하는 경우 허용할 수 있는 의미적 측면의 제약 사항과 구조적 측면의 제약 사항이 존재.

 

 개념적 데이터 모델링과 논리적 데이터 모델링 작업을 지원하는 다양한 데이터 모델들이 존재합니다. 이때, 사용하는 데이터 모델에 따라 현실 세계를 표현하는 개념적 구조나 논리적 구조의 모습이 달라집니다. 개념적 데이터 모델 중 대표적으로 많이 사용되는 것은 개체-관계 모델(E-R Model)이며, 논리적 데이터 모델로는 관계 데이터 모델(relational data model)이 가장 많이 사용됩니다.

 

 

 

개체-관계 모델( or ERD)

개체(entity)

  • 정의 : 현실 세계에서 조직을 운영하는데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것. 물리적인 대상을 넘어, 개념적인 대상도 포함함.
  • 개체 = 개체 이름 + 속성들

 개체를 고유의 이름과 속성들로 정의한 것을 개체 타입(entity type)이라 합니다. 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체를 개체 인스턴스(entity instance)라고 하고, 특정 개체 타입의 개체 인스턴스를 모아놓은 것을 개체 집합(entity set)이라고 합니다.

 

속성(attribute)

  • 정의 : 개체가 가지고 있는 고유의 특성
  • 단일 값 속성 : 특정 개체를 구성하는 속성의 값이 하나인 경우(ex. 이름)
  • 다중 값 속성 : 속성이 여러 개의 값을 가질 수 있는 경우(ex. 전화번호)
  • 단순 속성 : 의미를 더는 분해할 수 없는 속성(ex. 이름)
  • 복합 속성 : 의미를 분해할 수 있어 값이 여러 개의 의미를 포함하는 속성. (ex. 생년월일 → 년, 월, 일)
  • 유도 속성 : 값이 별도로 저장되는 것이 아니라 기존의 다른 속성의 값에서 유도되어 결정되는 속성. 필요할 때마다 계산되므로 따로 저장할 필요가 없음.
  • 널 속성 : 아직 결정되지 않거나, 모르는 값.
  • 키 속성 : 개체 집합에 존재하는 각 개체 인스턴스들을 식별하는데 사용되는 속성

 

관계(relationship)

  • 정의 : 개체와 개체가 맺고 있는 의미 있는 연관성
  • 일대일 관계 : 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 하나와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있는 경우.

  • 일대다 관계 : 개체 A의 개체 인스턴스는 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만, 개체 B의 각 개체 인스턴스는 개체 A의 개체 인스턴스 하나와만 관계를 맺을 수 있는 경우.

  • 다대다 관계 : 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있고, 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 여러 개와 관계를 맺을 수 있는 경우.

 

 

관계 데이터 모델

 관계 데이터 모델은 논리적 데이터 모델입니다. 개념 세계에서 정한 데이터 구조를 데이터베이스의 논리적 구조로 나타내기 위해 사용되는 도구를 말합니다. 관계 데이터 모델은 아래 이미지와 같은 구성요소를 갖습니다.

 

 

릴레이션

 

 릴레이션파일 관리 시스템에서 파일, 속성해당 파일의 필드에 대응하는 개념입니다. 아래 내용은 릴레이션을 구성하는 요소들입니다.

  • 속성(attribute) : 릴레이션의 열
  • 튜플 : 릴레이션의 행. 개체의 인스턴스.
  • 도메인 : 속성 하나가 가질 수 있는 모든 값의 집합. 특정 속성이 가질 수 있는 모든 원자 값의 모임. 속성의 도메인을 정의해두면, 사용자가 속성 값을 입력하거나 수정할 때 데이터베이스 시스템이 적합성을 판단하여 4가지 이외의 값은 허용하지 않음으로써 항상 올바른 값을 유지할 수 있다는 장점을 가짐. 도메인은 가능한 값을 일일이 나열하기 어려워 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의함.
  • 널 값 : 특정 튜블의 속성 값을 모르거나, 적합한 값이 없는 경우 null을 사용.
  • 차수 : 하나의 릴레이션에서 속성의 전체 개수. 일반적으로 정적임.
  • 카디널리티 : 릴레이션에서 튜플의 전체 개수. 일반적으로 동적임.

 

릴레이션의 특성

1. 튜플의 유일성 : 하나의 릴레이션에는 동일한 튜플이 존재할 수 없다.

 하나의 릴레이션에 똑같은 튜플이 있으면 안 되고, 모든 튜플에는 다른 튜플과 구별되는 유일한 특성이 었어야 합니다. 릴레이션을 튜플의 모임인 집합의 개념으로 이해한다면, 하나의 집합에 동일한 원소가 존재할 수 없다는 특성과 연관 지어 생각할 수 있습니다. 관계 데이터 모델에서는, 튜플의 유일성을 확인하기 위해, 특정 속성(or 속성들 → 키)을 미리 선정해두고, 해당 속성을 비교합니다.

2. 튜플의 무순서 : 하나의 릴레이션에서 튜플 사이의 순서는 무의미하다

 튜플 순서가 바뀐다고 다른 릴레이션이 될 수 없고, 순서와 상관없이 튜플 내용이 같아야 같은 릴레이션입니다. 데이터베이스는 위치가 아닌 내용으로 검색되므로 튜플의 순서는 중요하지 않습니다.

3. 속성의 무순서 : 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.

 속성은 순서가 바뀌어도 다른 릴레이션이 될 수 없고, 순서와 상관없이 같은 속성들로 구성되어 있어야 같은 릴레이션입니다.

4. 속성의 원자성 : 속성 값으로 원자 값만 사용할 수 있다.

 모든 속성의 값은 더는 분해할 수 없는 하나의 값, 즉 원자 값만 가질 수 있습니다. 다시 말해, 튜플의 하나의 속성에서 여러개의 값을 가질 수 없다는 의미입니다.

 

 

릴레이션 스키마 & 릴레이션 인스턴스

릴레이션 스키마

 릴레이션 스키마란, 릴레이션의 이름과 포함된 모든 속성의 이름으로 정의하는 릴레이션의 논리적 구조를 말합니다. DBMS 내부적으로는 데이터 정의어(DDL)을 사용하여 정의합니다. 릴레이션 내연(relation intension)이라고 부르기도 하며, 정적인 특성을 갖습니다.

릴레이션 인스턴스

 릴레이션 인스턴스란, 어느 한 시점에 릴레이션에 존재하는 튜플의 집합을 말합니다. 릴레이션 인스턴스에 포함된 튜플은 릴레이션 스키마에서 정의하는 각 속성에 대응하는 실제 값으로 구성되 있습니다. 릴레이션 외연(relation extension)이라고 부르기도 하며, 동적인 특성을 갖습니다.

 

 

키의 종류

 

 키는 릴레이션에 포함된 튜플들을 유일하게 구별해주는 역할을 수행합니다.

  • 수퍼키 : 유일성의 특성을 만족하는 속성 또는 속성들의 집합입니다. 유일성이란 하나의 릴레이션에서 키로 지정된 속성의 값은 튜플마다 달라야 한다는 의미입니다. 속성들의 집합이기 때문에, 유일성을 가지고 있는 속성과 다른 속성들의 모음 또한 수퍼키가 될 수 있습니다.(ex. ID + 나이 , ID + 성별)
  • 후보키 : 유일성과 최소성을 만족하는 속성 또는 속성들의 집합입니다. 최소성은 키를 구성하고 있는 여러 속성 중에서 하나라도 없으면 튜플을 유일하게 구별할 수 없는, 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성입니다. 수퍼키 중에서 최소성을 만족하는 것이 후보키가 됩니다.
  • 기본키 : 후보키 중에서 기본적으로 사용할 키입니다. 기본키는 다음의 조건을 만족해야 합니다. "널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합하다". "값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합하다". "단순한 후보키를 기본키로 선택한다".
  • 대체키 : 기본키로 선택되지 못한 후보키입니다.
  • 외래키 : 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키입니다. 즉, 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합입니다. 외래키가 되는 속성과 기본키가 되는 속성의 이름은 달라도 되지만, 도메인은 일치해야 합니다. 도메인이 같아야 연관성 있는 튜플을 찾기 위한 비교 연산이 가능하기 때문입니다. 외래키는 기본키를 참조하지만, 기본키가 아니기 때문에 널 값을 가질 수 있습니다. 또한, 기본키가 아니기 때문에, 서로 다른 튜플들이 동일한 값을 가질 수도 있습니다.

 

 

무결성 제약조건

 관계 데이터 모델에서 정의하고 있는 기본 제약 사항은 키와 관련한 무결성 제약조건(integrity constraint)입니다. 무결성은 데이터에 결함이 없는 상태를 말하며, 데이터를 기존에 의도한대로 유효하게 유지하는 것을 말합니다. 무결성은 데이터를 보호한다는 관점에서 보안과 유사한데, 무결성은 권한이 있는 사용자의 잘못된 요구에 의해 데이터가 부정확해지지 않도록 보호하는 것입니다.

 

개체 무결성 제약조건

 기본키를 구성하는 모든 속성은 널 값을 가지면 안 된다는 규칙입니다. 관계 데이터 모델에서는 릴레이션에 포함되는 튜플들을 유일하게 구별해주고 각 튜플에 쉽게 접근할 수 있도록 릴레이션마다 기본키를 정의합니다. 그런데 기본키를 구성하는 속성 전체나 일부가 널 값이 되면 튜플의 유일성을 판단할 수 없어, 기본키의 본래 목적을 상실하게 됩니다.

 

참조 무결성 제약조건

 외래키는 참조할 수 없는 값을 가질 수 없다는 규칙입니다. 외래키는 다른 릴레이션의 기본키를 참조하는 속성이고 릴레이션 간의 관계를 표현하는 역할을 합니다. 그런데 외래키가 자신이 참조하는 릴레이션의 기본키와 상관없는 값을 가지게 되면, 두 릴레이션을 연관시킬 수 없으므로, 외래키 본래의 의미가 없어집니다. 그러므로 외래키는 자신이 참조하는 릴레이션에 기본키 값으로 존재하는 값, 즉 참조 가능한 값만 가져야 합니다.

 

도메인 무결성 제약조건

 튜플의 속성에 담겨진 값은 정의된 도메인에 부합하는 값이여야 합니다. 예를 들어, 속성의 도메인이 int 데이터 타입이라면 문자열이 해당 속성의 값으로 저장되어서는 안됩니다.

 

 

 

 

 

참고자료

 

참조 무결성 제약조건

개체 무결성 제약조건이 기본키에 대한 규칙으로 각 릴레이션마다 적용되었다면, 참조 무결성 제약조건은 외래키에 대한 규칙으로 연관된 릴레이션들에 적용된다. 참조 무결성 제약조건(referent

terms.naver.com

 

 

Integrity Constraints in DBMS - Scaler Topics

Integrity Constraints in DBMS are the set of pre-defined rules responsible to maintain the quality and consistency of data in the database. This article by Scaler Topics explains the DBMS Integrity Constraints.

www.scaler.com