[DB기초] 관계 데이터베이스

코택·2020년 10월 15일
0

20-2) 데이터베이스

목록 보기
2/3
post-custom-banner

관계 데이터 모델

1. 관계 데이터 모델이란?

  • 데이터를 2차원 테이블 형태인 릴레이션으로 표현한 것
  • 수학에서의 릴레이션과 집합 이론에 기초
  • 일반 사용자는 테이블의 형태로 생각
    • 테이블의 열(column)[field / item] ~ 관계 데이터 모델의 애트리뷰트
    • 테이블의 행(row)[record] ~ 관계 데이터 모델의 튜플

✓ 관계 데이터 모델(릴레이션) -> 관계 데이터 베이스

2. 애트리뷰트와 도메인

1) 도메인(domain) -> 타입 개념

  • 애트리뷰트가 취할 수 있는 값들의 집합

2) 애트리뷰트(attribute) -> 변수 개념

  • 도메인의 역할 이름
  • 한 릴레이션 내의 모든 애트리뷰트의 이름은 서로 상이해야 함

3) 단순 도메인

  • 단순 애트리뷰트(원자 값)으로 이루어진 도메인

4) 복합 도메인

  • 복합 애트리뷰트(분해될 수 있는 값 ⇢ 릴레이션 내에서 하나로 취급!)으로 이루어진 도메인

✓ 애트리뷰트 이름과 도메인 이름은 같을 수 있다!

3. 릴레이션

1) 릴레이션 스키마 (Relation Schema = Relation Scheme = Relation Type)

  • 릴레이션 이름 + 애트리뷰트 이름 명세
  • R(A1, A2, … , An) 또는 R({A1, A2, … , An})로 표현 → 애트리뷰트의 집합

✓ 정적 성질

- 시간에 무관
- 릴레이션 타입(type)

2) 릴레이션 인스턴스 (Relation Instance = Relation Exetension)

  • 어느 한. 시점에서 릴레이션이 포함하고 있는 튜플들의 집합
  • 튜플: <V1, V2, … , V3> = {(attr1 = V1, attr2 = V2, … , attrn = Vn)}
  • {<V1, V2, … , V3>}로 표현 → 튜플의 집합
  • snapshot: 계속해서 변하는 DB의 특정 시점의 값을 본다.

✓ 동적 성질

- 삽입, 삭제, 갱신으로 시간에 따라 변함
- 릴레이션의 값(value)

3) 릴레이션의 특성

① 튜플의 유일성(uniqueness of tuples)릴레이션은 튜플들의 “집합(set)”!
② 튜플의 무순서성(no ordering of tuples)릴레이션은 튜플들의 “집합(set)”!
③ 애트리뷰트의 무순서성(no ordering of attributes)
릴레이션 스키마는 애트리뷰트들의 “집합(set)”!
튜플은 <attribute:value>쌍의 “집합(set)”!
④ 애트리뷰트의 원자성(atomicity)
- 애트리뷰트 값은 원자 값(atomic value) → 논리적으로 분해 불가능(✓질의에 따라 해석!)

✓ 정규화 릴레이션(nomarlized relation)

 - 애트리뷰트 값으로 원자 값만 허용되는 릴레이션
 - 비정규화 릴레이션은 분해(decomposition)를 통해 정규화
 - 널 값(null value) 또한 원자 값으로 취급된다

관계 데이터베이스

1. 관계 데이터베이스 개념

  • 테이블들의 집합 → 정확히 말하자면 릴레이션의 집합
  • 데이터베이스를 시간에 따라 그 내용(상태, 값)이 변할 수 있는 테이블 형태로 표현하는 것
    ✓ 관계 데이터베이스 스키마(relational database schema) = {릴레이션 스키마} + 무결성 제약조건(✓DB에 데이터의 오류가 없도록 하는 조건을 기술!)
    ✓ 관계 데이터베이스라고 할 때, 데이터가 물리적 테이블 형태로 저장된다는 것을 의미하진 않는다.

2. 데이터 베이스 키

1) 키(key): 각 튜플을 유일하게 식별할 수 있는 애트리뷰트 집합(set of attributes) → K({A1, A2, ... , An})의 형태

2) 후보 키(candidate key): ①유일성과 ②최소성을 만족하는 애트리뷰트 집합

① 유일성(uniqueness): 각 튜플에 대해 애트리뷰트 집합 K의 값은 유일
② 최소성(minimality): K는 각 튜플을 유일하게 식별하는 데 필요한 애트리뷰트만 포함

  • e.g. 한 학과 안에선 동명이인이 없다는 가정하에) 이름 + 학과(OK) ↔ 학번 + 주민번호(X)
    → 학번과 주민번호 모두 각 튜플을 유일하게 식별할 수 있는 애트리뷰트이므로!

3) 슈퍼 키(super key): 유일성은 만족하지만 최소성은 만족하지 않는 애트리뷰트의 집합

4) 기본 키(primary key): 후보 키 중에서 지정된 하나의 키

  • 후보 키 중에서 지정된 하나의 키 (DB 설계자가 지정)
  • null 값이 허용되지 않음 (각 튜플에 대한 기본 키 값은 항상 유효해야 함!)

5) 대체 키(alternate key): 후보 키 중에서 기본 키를 제외한 나머지 후보 키

6) 외래 키(foreign key)

  • 릴레이션 R의 애트리뷰트 집합 FK가 릴레이션 S의 기본 키일 때, 이 FK는 R의 외래 키(foreign. key)이다.
  • FK 도메인 = S의 PK 도메인
  • FK의 값은 S에 존재하는 값이거나 null(후술할 참조 무결성)
  • R과 S가 같은 릴레이션일 수도 있다.
  • R을 참조 릴레이션(referencing relation), S를 피참조 릴레이션(referenced relation)이라 한다.
    • R은 FK를 통해 S를 참조

3. 무결성 제약 (Integrity Constraints)

1) 개체 무결성 (entity integrity)

  • 기본 키 값은 항상 null 값을 가질 수 없다

2) 참조 무결성 (reference integrity)

  • 외래 키 값은 반드시 피참조 릴레이션의 기본 키 값이거나 null이다.

✓ 이 무결성 제약조건은 데이터베이스 상태(database state)가 항상 만족시켜야 할 제약조건이다!

4. 데이터베이스 상태 (Database State)

  • 어느 한 시점에 DB에 저장되어 있는 모든 데이터 값(튜플)
  • 데이터베이스 인스턴스
    → 데이터베이스 스키마에 포함되어 있는 모든 릴레이션들의 인스턴스 집합
  • 데이터베이스 상태의 계속적인 변화
  • 삽입, 삭제, 변경 연산
    ⭐️ DBMS는 데이터베이스 상태의 변화에도 항상 무결성 제약을 만족시키도록 해야 한다!

참고

  • 이석호, 데이타 베이스 시스템(2009)
profile
블로그 이전했습니다 -> https://cotak.tistory.com/
post-custom-banner

0개의 댓글