관계형 데이터 모델

IT위키
파네라 (토론 | 기여)님의 2024년 9월 15일 (일) 07:33 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
Relational Data Model

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

역사

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

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

관계형 데이터 용어

관계형 데이터 모델 용어 정의.png

스키마 (Schema)

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

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

예시

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

튜플 (Tuple)

순서가 있는 값의 집합�

  • 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)

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

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

관계 상태 (State of Relation)

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

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

주장 (Assertion)

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

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

술어 (Predicate)

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

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

속성(Attribute)

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

인스턴스(Instance)

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

(참고) 실용적 용어

현대 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)

릴레이션의 특징

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

데이터베이스 키

  • 슈퍼 키(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

무결성 제약 조건

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 값을 가져야 한다.

데이터베이스 정규화

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