Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

차근차근

[데이터베이스] 관계형 데이터베이스 본문

대학교/BE

[데이터베이스] 관계형 데이터베이스

SWKo 2020. 4. 3. 21:20

0. 관계 데이터 모델

  • 수학에서의 집합(set)과 릴레이션(realtion) 이론에 기초
  • 일반 사용자 입장에서는 테이블(table) 형태로 생각
    • 모든 데이터를 테이블 형태로 저장 및 관리
    • 테이블의 열(column) = 필드(field) = 관계 데이터 모델의 애트리뷰트(attribute)
    • 테이블의 행(row) = 레코드(record) = 관계 데이터 모델의 튜플(tuple)
학번 이름 학년 학과
1234 홍길동 2 컴퓨터공학과
5678 김철수 3 기계공학과
  • 위 테이블은 학생 테이블(릴레이션)이다.
  • attribute는 학번, 이름, 학년, 학과
  • record 또는 tuple은 (1234, 홍길동, 2, 컴퓨터공학과), (5678, 김철수, 3, 기계공학과)

1. 용어 정리

  • 테이블(table) = 릴레이션(relaion)
  • 도메인(domain) => 애트리뷰트가 취할 수 있는 값(value)들의 집합
  • 애트리뷰트(attribute) => 도메인의 역할(role) 이름, 한 릴레이션 내에서 애트리뷰트 이름은 모두 달라야 함
  • 단순 도메인(simple domain) => 단순 애트리뷰트 : 원자 값
  • 복합 도메인(composite domain) => 복합 애트리뷰트 : 복합 값(연, 월, 일 - 날짜: <연, 월, 일>)
  • 릴레이션 스키마(relation schema) = 애트리뷰트의 집합 (a set of attributes) = 릴레이션 내포(relation intension) = 릴레이션 스킴(relation scheme) => 정적인 성질을 가짐. 즉, 시간에 따라 변경되지 않음.
  • 릴레이션 인스턴스(relation instance) = 투플들의 집합(a set of tuples) = 릴레이션 외연(relation extension) => 동적인 성질을 가짐. 즉, 삽입, 삭제, 갱신으로 시간에 따라 변함
  • 릴레이션 (relation) = 릴레이션 스키마 + 릴레이션 인스턴스 => 릴레이션 R의 애트리뷰트 도메인들의 카티션 프로덕트(곱집합)의 부분집합

 

  • 릴레이션의 차수(degree) = 릴레이션의 애트리뷰트 갯수
  • 릴레이션의 카디날리티(cardinality) = 릴레이션의 투플의 갯수
  • 두개의 릴레이션을 곱집합할 때
    • 차수는 양쪽 릴레이션 차수의 합
    • 카디날리티는 양쪽 릴레이션 카디날리티의 곱

2. 릴레이션의 특성

  • 테이블과 약간의 차이점을 가지고 있음
    1. 투플의 유일성(uniqueness of tuples)
      • 릴레이션 = 투플의 집합(set of tuples)
    2. 투플의 무순서성(no ordering of tuples)
      • 릴레이션 : 추상적 개념(순서가 없음) = 투플들의 집합(set) -> 주머니에 넣는다고 생각하면 됨
      • 테이블 : 구체적인 개념(순서가 있음) -> 엑셀 형태라고 생각하면 됨
    3. 애트리뷰트의 무순서성(no ordering of attributes)
      • 릴레이션 스키마 -> 애트리뷰트들의 "집합"
      • 투플 -> <attribute: value> 쌍의 집합
    4. 애트리뷰트의 원자성(atomicity)
      • 애트리뷰트 값은 단일값을 가져야 함. 복수의 값을 가지면 안됨.
      • 정규화 릴레이션(normalized relation)
        • 애트리뷰트 값으로 원자 값만 허용되는 릴레이션
        • 비정규화 릴레이션은 분해(decomposition)을 통해 정규화
      • 널 값(null value)도 원자 값으로 취급
        • unknown, inapplicable

3. 관계 데이터베이스

  • 테이블들의 집합
  • 데이터베이스를 시간에 따라 그 내용이 변할 수 있는 테이블 형태로 표현
  • 관계 데이터베이스 스키마(relational database schma) = {릴레이션 스키마} + {무결성 제약조건}
  • database = a set of relaions
  • relation(instance) : a set of tuples
  • relation schema : a set of attributes

4. 릴레이션의 키(key)

  • 키(key)
    • 릴레이션 안에서 각 투플을 유일하게 식별할 수 있는 애트리뷰트의 집합(set of attributes)
  • 후보 키(candidate key)
    • 릴레이션 R에 대한 애트리뷰트 부분집합
    • 유일성과 최소성을 가져야 함
      • 유일성(uniqueness) : 각 투플에 대해 값이 유일하다.(예를 들면 주민등록번호)
      • 최소성(minimality) : 각 투플을 유일하게 식별하는데 필요한 애트리뷰트만 포함
  • 슈퍼 키(super key)
    • 유일성(uniqueness)는 만족하지만 최소성(minimality)은 만족하지 않는 애트리뷰트의 집합
  • 기본 키(primary key)
    • 후보 키(candidate key) 중에서 지정된 하나의 키(db설계자가 지정)
    • 각 튜플에 대한 기본 키 값은 항상 유효한 값이어야 함(null값이 허용되지 않음)
  • 대체 키(alternate key)
    • 후보 키 중에서 기본 키를 제외한 나머지 후보 키
  • 외래 키(foreign key)
    • 릴레이션 R의 애트리뷰트(집합) FK가 릴레이션 S의 기본 키를 가리킬 때 , 이 FK는 R의 외래키이다.
    • R의 FK의 도메인 = S의 기본 키의 도메인
    • FK의 값은 S의 기본키에 존재하는 값이거나 null
    • R과 S가 같은 릴레이션일 수도 있음
    • R을 참조 릴레이션, S를 피참조 릴레이션이라고 함
  • 관계형 데이터 모델에서는 기본키(개체)와 외래키(관계)에 의해서 개체(entity)간의 관계(relationship)을 유지함.
  • 기본키 - 외래키 개념은 관계형 데이터베이스의 핵심 아이디어

5. 관계형 데이터베이스의 무결성 제약(Integrity Constraints)

  1. 개체 무결성(entity integrity)
    • 기본 키 값은 언제 어느 때고 null값을 가질 수 없고, 중복 값을 가질 수 없음.
  2. 참조 무결성(referential integrity)
    • 외래 키 값은 반드시 피참조 릴레이션의 기본 키 값으로 존재하는 값이거나 null 이어야 함.
  3. 도메인 무결성(domain integrity)
    • 애트리뷰트의 값이 해당 도메인에 속한 값이어야 한다는 규정.

📌이러한 무결성 제약조건은 데이터베이스 상태(database state)가 항상 만족시켜야 될 제약조건임.

Comments