관계형 데이터 모델

From CS Wiki
Relational Data Model

관계형 데이터베이스의 기초가 되는 수학적 모델

역사[edit | edit source]

관계형 데이터 모델은 기본적으로 집합론에 기반한다. 수학에서 집합은 고유한 객체들의 모음인데, 이와 비슷하게 데이터베이스의 관계(또는 표)는 튜플(행)의 집합으로 볼 수 있으며, 각 튜플은 속성(열)과 값으로 구성된다. 관계형 데이터 모델은 E.F. 코드 박사(Dr. E.F. Codd)가 1970년에 발표한 논문 “A Relational Model for Large Shared Data Banks”에서 처음 제안되었다. 이 논문은 데이터베이스 분야의 혁신을 가져왔으며, 코드 박사는 이 공로로 ACM 튜링 상을 수상했다.

이 형식적 관계 모델은 향후 실제 구현된 DBMS가 출시되고, SQL 표준이 제정되면서 실용적인 현대의 관계형 데이터베이스로 발전하였다.

관계형 데이터 용어[edit | edit source]

600x600픽셀

스키마 (Schema)[edit | edit source]

릴레이션의 구조(The Schema (or description) of a Relation)

  • R(A1, A2, .....An)과 같이 표현된다.
  • R = 릴레이션의 이름
    • 주로 대문자 Q, R, S를 사용한다.
  • A1, A2, ... An은 릴레이션의 속성
    • 각각의 속성은, 각 속성에 포함될 수 있는 값의 집합인 도메인(Domain)을 가진다.

예시

  • 고객(고객ID, 고객명, 휴대폰번호)
  • 고객 휴대폰번호의 도메인 = 010으로 시작하는 11자리 숫자

튜플 (Tuple)[edit | edit source]

순서가 있는 값의 집합�

  • n-튜플은 n개의 순서가 있는 값의 집합이다.
    • r(R) = {t1, t2, ..., tn} where each ti is an n-tuple
  • < ... > 와 같이 표현되며, 주로 소문자 t, u, v을 사용한다.
    • ti = <v1, v2, ..., vn> where each vj element-of dom(Aj)
  • 각 값은 속성의 도메인에 맞게 들어갈 수 있다.
  • 튜플의 집합릴레이션이다.
  • 튜플의 수카디날리티(Cardinality)라고 한다.

예시

  • 고객 릴레이션의 튜플은 아래와 같을 수 있다.
  • ti = < C123, 홍길동, 01012345678 >

도메인 (Domain)[edit | edit source]

속성이 취할 수 있는 원자값들의 집합

  • 도메인은 속성들의 취할 수 있는 값들의 논리적인 정의를 가질 수 있다.
    • 예시) 휴대폰 번호는 국내에서 개통된 번호를 의미함
  • 도메인은 속성들의 데이터 타입 및 표현 형태를 가질 수 있다.
    • 예시) 휴대폰 번호는 "XXX-XXXX-XXXX" 형태로 표현함
  • 속성 이름은 관계에서 도메인이 수행하는 역할을 지정한다.
    • 예시) "가입일자"와 "탈퇴일자"는 모두 "날짜"라는 도메인을 가지지만 각각 다른 의미의 날짜를 가리킨다.

관계 상태 (State of Relation)[edit | edit source]

속성의 도메인들의 곱집합(cartesian product)의 부분 집합(subset)으로, 특정 시점에 테이블(관계)에 저장된 데이터

  • 도메인에 따라 저장될 수 있는 모든 값들 중, 현재 릴레이션 상에 존재하는 값들을 말한다.
  • 즉 현재 저장된 데이터를 의미한다.
  • 주로 소문자 q, r, s 등으로 표현한다.
    • 예시) r(고객)은 고객 릴레이션의 r 상태를 의미함
  • r(R) ⊂ dom (A1) X dom (A2) X ....X dom(An)

주장 (Assertion)[edit | edit source]

데이터베이스에서 표현하는 사실이나 규칙

  • 특정 튜플이 데이터베이스의 스키마에 정의된 규칙을 충족하고 있음을 주장
  • 데이터베이스의 무결성을 유지하고 데이터가 특정 규칙이나 조건을 따르도록 보장하는 데 사용
    • 예시) 특정 테이블에서 EmployeeID가 고유해야 한다는 규칙

술어 (Predicate)[edit | edit source]

튜플의 값들이 충족해야 하는 조건을 정의하는 논리적 표현

  • 데이터베이스 쿼리에서 사용되는 조건절(WHERE 절)과 비슷한 개념
  • 특정 조건을 만족하는 튜플을 선택하거나 필터링하는 데 사용
    • 예시) Age > 18이라는 predicate는 나이가 18세 이상인 튜플만 선택함

속성(Attribute)[edit | edit source]

  • 릴레이션을 구성하는 각 열
  • 데이터베이스를 구성하는 가장 작은 논리적 단위
  • 파일 구조의 데이터 필드
  • 속성의 수 = 디그리(Degree)
    • n의 디그리를 가진 릴레이션 R은 R(A1, A2, A3, ..., An)으로 표현된다.

인스턴스(Instance)[edit | edit source]

  • 속성들에 값이 부여되어 튜플을 이룬 형태
  • 릴레이션에 존재하는 데이터를 지칭

(참고) 실용적 용어[edit | edit source]

현대 DBMS 및 SQL 표준에서 사용하는 용어는 각각 아래와 같다.

이론적 용어 실용적 용어
Relation 테이블(Table)
Attribute 칼럼 헤더(Column Header)
Domain 칼럼이 가질 수 있는 값들(All possible Column Values)
Tuple 행(Row)
Schema of a Relation 테이블 정의(Table Definition)
State of the Relation 데이터가 삽입된 테이블(Populated Table)

릴레이션의 특징[edit | edit source]

  • 모든 튜플은 서로 다른 값을 가진다.
    • 동일한 값이 저장될 수 있으나 별개의 값으로 해석된다.
  • 하나의 릴레이션에서 튜플의 순서는 무의미하다.
    • 실무적으로 삽입된 순서이지만, 이는 보장되지 않는 것으로 본다.
  • 각 속성은 릴레이션 내에서 유일한 이름을 가진다.
  • 각 속성은 순서를 가질 수 있지만 순서는 중요한 의미를 갖지 않는다.
    • 관리적 용도로 순서를 정해놓을 수 있지만 데이터의 논리적 성격과 무관하다.
    • 각 튜플의 값들의 의미를 파악하기 위해 각 튜플의 값들은 릴레이션의 속성과 순서가 일치해야 한다는 측면에서 의미를 가질 수 있지만, 이는 데이터의 논리적 성격과는 무관하다. 아래와 같은 self-describing 표현에서는 순서는 무시될 수 있다.
      • t= { <name, “John” >, <SSN, 123456789> }
  • 모든 속성 값은 원자 값(atomic value)을 가진다.

데이터베이스 키[edit | edit source]

  • 슈퍼 키(Super Key)
    • 어떤 릴레이션의 어떠한 튜플들도 같은 값을 가지지 않는 속성, 또는 속성들의 조합
    • 유일성 O / 최소성 X
  • 후보 키(Candidate Key)
    • Tuple을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
    • 유일성 O / 최소성 O
  • 기본 키(Primary Key)
    • 후보키 중 선정된 Key
    • 중복된 값 X / Not Null / 유일성 O / 최소성 O
  • 대체 키(Alternate Key)
    • 후보 키 중 선정된 기본 키를 뺀 나머지 키들
    • 유일성 O / 최소성 O
  • 외부 키(Foreign Key)
    • 다른 릴레이션의 Primary Key를 참조하는 속성
    • 중복된 값 X / Not Null / 유일성 O / 최소성 O

무결성 제약 조건[edit | edit source]

Integrity Constraint
  • 도메인 제약조건(Domain constraints)
    • 각 속성은 반드시 각 속성의 도메인에 속하는 원자값(atom value)이어야 한다.
    • 각 칼럼은 그 칼럼의 데이터 타입, 범위에 만족하는 값이어야 한다.
  • NULL 제약조건(Constraints on NULLS)
    • 각 칼럼은 일반적으론 NULL값을 가질 수 있다.
    • NOT NULL로 설정되어 있다면 NULL값을 가질 수 없다.
  • 키 제약조건(Key constraints)
    • 기본 키(Primary key)나 unique 칼럼은 유일성을 가지고 있어야 한다.
  • 개체 무결성 제약조건(Entity integrity constraints)
    • 기본 키(Primary key)는 NULL일 수 없다.
    • unique칼럼은 중복되지 않거나, NULL이거나 둘 중 하나이다.
  • 참조 무결성 제약조건(Referential integrity constraints)
    • 참조하는 릴레이션의 튜플들의 외부 키(Foreign key) 속성값은 참조되는 릴레이션 튜플의 기본 키(Primary key) 속성값과 일치하거나 NULL 값을 가져야 한다.

데이터베이스 정규화[edit | edit source]

  • 비정규형 : 아래 모든 경우를 만족하지 않는 경우
  • 1NF : 모든 도메인이 원자값. 한 에트리뷰트에는 하나의 값만 들어가야 한다.
  • 2NF : 부분적 함수 종속을 제거해야 한다. 즉, 완전 함수적 종속 관계를 만족한다.
  • 3NF : 이행적 종속 관계를 제거 해야 한다.
  • BCNF : 결정자가 모두 후보키인 경우. 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할 수 없다.
  • 4NF : 다치 종속성이 제거 되어야 한다.
  • 5NF : 조인 종속성이 만족 되어야 한다.