본문 바로가기
IT 와 Social 이야기/Relational Data Modeling 프리미엄 가이드 - 김기창

02 데이터 모델링 기본 개념

by manga0713 2019. 9. 13.

 

[ 릴레이션 Relation 예제 ]

 

 

 

2.1. 관계형 데이터 모델링(Relational Data Modeling)

 

 

○ 기본 개념

 

- 릴레이션에는 이름이 존재하며 2차원의 테이블 형태로 데이터(Value, 어트리뷰트 값)가 관리된다.

 

- 각 열을 튜플(Tuple)이라고 한다.

 

- 각 행을 어트리뷰트(Attribute)라고 한다.

 

- 어트리뷰트 중에서 튜플을 유일하게 식별할 수 있는 어트리뷰트를 식별자(Identifier)라고 한다.

 

- 이름, 주소와 같은 어트리뷰트의 이름을 내포(Intension 또는 Head)라고 한다.

 

- 1234, 홍길동 같은 실제 데이터를 외포(Extension 또는 Body)라고 한다.

 

- 릴레이션의 이름과 내포를 스키마(Schema)라고도 한다.

 

- 릴레이션에서 튜플의 개수를 카디널러디(Cardinality)라고 하며 어트리뷰트의 개수를 차수(Degree)라고 한다.

 

- 차수가 1개 이상이고 카디널러티가 0개 이상이면 유효한 릴레이션이다.

 

- 튜플은 흔히 레코드(Record), 로우(Row), 인스턴스(Instance)라고도 부른다.

 

- 어트리뷰트는 컬럼(Column), 필드(Feild)라고 부른다.

 

 

 

○ 관계형 모델의 제약(Constraints) 사항 (관계형 모델의 특징)

 

- 릴레이션(Relation)에서 각 튜플(Tuple)은 유일해야 한다.

 

- 어트리뷰트(Attribute)는 유일한 값이 사용돼야 하며 다중 값이나 복합 값이 존재해서는 안된다. (그림의 두 번째 튜플의 취미 어트리뷰트 값)

 

- 전체 모델에서 릴레이션의 이름은 유일해야 하며, 릴레이션 내에서 어트리뷰트 이름도 유일해야 한다.

 

- 한 릴레이션에는 하나의 데이터 주제만이 포함될 수 있다.

 

 

 

2.2. 무결성(Integrity)

 

 

- 무결성은 데이터 값이 정확한 상태를 의미한다.

 

- 무결성을 지키는 것이 데이터 모델링의 최고의 목표이다.

 

- 무결성의 종류

  • 엔터티 무결성(Entity Integrity)
  • 참조 무결성(Referential Integrity)
  • 도메인 무결성(Domain Integrity)
  • 업무 무결성(Business Integrity)

 

- 엔터티 무결성

 

 

 

[ 엔터티 무결성을 위반한 릴레이션 ]

 

 

  • 엔터티에 존재하는 모든 인스턴스는 고유해야 하며 널(Null) 값을 가지면 안된다.
  • 한 엔터티에는 동일한 주 식별자가 존재할 수 없으며 주 식별자 속성은 모르는 값이 널(Null) 값을 허용할 수 없다.
  • 엔터티 무결성은 식별자(Identifier)에 의해서 지켜질 수 있다.
  • 위 그림의 첫 번째, 두 번째 행의 주 식별자(# 표시), 또는 전체 인스턴스가 같다면 엔터티 무결성을 위반한 것이다.
  • 위 그림의 세 번째 행과 같이 주 식별자가 널(Null)이면 엔터티 무결성을 위반한 것이다.

 

- 참조 무결성

 

 

 

[ 참조 무결성 ]

 

 

  • 엔터티의 외래 식별자 속성은 참조되는 엔터티의 주 식별자 값과 일치하거나 널(Null) 값이어야 한다. 즉 외래 식별자 속성 값이 상위 엔터티의 인스턴스에 반드시 존재하거나 널(Null)이어야 한다.
  • 두 엔터티의 연관된 인스턴스 사이에 일관성을 유지하기 위한 제약으로 사용한다.
  • 위 그림의 [주문] 릴레이션은 [고객] 릴레이션을 참조하므로 [주문] 릴레잇녕의 고객번호 속성은 외래 식별자이다. 이때 주문 릴레이션의 고객번호 속성 값은 고객 릴레이션의 주 식별자인 고객번호 속성에 존재해야 한다.
  • 데이터 모델에 관계를 정의할 때(관계선을 표현할 때) 참조 무결성이 존재하지 않으면 관계를 정의하지 않아야 한다.
  • FK(Foreign Key) 제약에 의해서 지켜진다.

 

- 도메인 무결성

 

  • 엔터티의 특정 속성 값은 같은 데이터 타입과 길이, 같은 널 여부, 같은 기본 값, 같은 허용 값 등 동일한 범주의 값만이 존재해야 한다.
  • 예를 들어 고객이름이라는 속성에 '홍길동', '김길동'과 같은 값이 사용돼야지 123과 같은 값이 사용돼서는 안된다.
  • 기본 값이나 널 여부, 체크 조건 등으로 지켜질 수 있다.

 

- 업무 무결성

 

  • 기업에서 업무를 수행하는 방법이나 데이터를 처리하는 규칙을 의미한다.
  • "주문 금액이 3만 원 이상이면 배송비가 무료이다" 등이 업무 무결성이며 범위가 넓어 주로 프로그램에서 체크한다.
  • 물리적으로 강제하는 대표적인 방법에는 트리거(Trigger)가 존재한다.

 

- 데이터 무결성을 어플리케이션에서 로직에 의해 구현할 때가 많은데 DBMS 차원에서 강제하는 것이 바람직하다.