4. 관계 데이터베이스 모델


db

Overview

데이터베이스 모델 중 관계 데이터 모델에 대한 포스트


관계 데이터 모델

자료의 저장 형태를 2차원 구조의 테이블로 표현하는 방법

Table Structure

  • 속성 : 릴레이션을 구성하는 각 열
  • 튜플 : 한 행을 구성하는 속성들의 집합
  • 도메인 : 하나의 속성이 가질 수 있는 값들의 범위
  • 릴레이션 스키마 : 릴레이션의 이름과 속성 이름의 집합
  • 릴레이션 인스턴스 : 릴레이션에서 어느 시점까지 입력된 튜플들의 집합
  • 차수 : 릴레이션을 구성하는 속성의 수
  • 카디널리티 : 릴레이션에 입력된 튜플의 수

릴레이션의 특징

  • 튜플은 모두 상이하며 유일하고 순서에 의미가 없다
  • 속성간 순서는 의미없다
  • 속성값은 원자값으로 구성되며 분해가 불가능하다

개체(Entity)의 종류

  • 독립 개체
    • DB내에서 다른 개체에 종속되지 않고 그 개체내에서 모든 검색과 변경이 가능한 개체
  • 종속 개체
    • DB의 그 개체 내에서 원한느 검색 등의 연산을 하지 못하고 다른 개체를 참조해야 하는 개체, 다른 개체에 종속되는 개체

속성(Attribute)의 종류

  • 단순 속성
    • 속성의 값을 더 이상 작은 단위로 나눌 수 없는 속성
  • 복합 속성
    • 속성의 값을 여러 개의 작은 단위로 나눌 수 있는 속성(이름 -> 성 / 이름)
  • 결합 속성
    • 두 개 이상의 속성값을 합쳐 하나의 속성으로 구성된 속성(생년월일 -> 출생년도 / 출생일)
  • 설계 속성
    • DB에서 실제 여러 가지 연산에는 사용되지 않지만 설계의 편의상 만든 속성(번호 등)

관계(Relationship)의 종류

  • 중복 관계
    • 두 테이블 간의 참조가 두 가지 이상의 속성으로 참조할 수 있는 경우
  • 재귀 관계
    • 하나의 테이블 내에서 자기 자신의 내용을 참조하는 경우(사원번호 -> 사원의 매니저의 사번)

Key

Key의 개념

  • 관계 데이터베이스에서 튜플을 식별하기 위해 사용하는 속성이나 속성의 집합
  • 데이터베이스의 참조 또는 검색 시에 사용

Key의 종류

  • 후보키(Candidate Key)
    • 릴레이션에서 각 튜플을 유일하게 식별할 수 있는 속성이나 속성의 집합
    • 조건 : 유일성과 최소성을 모두 만족
  • 기본키(Primary Key)
    • 후보키 중에서 튜플을 식별하기 위해 특별히 선택된 키
    • 중복될 수 없으며 NULL값이 올 수 없음
    • 유일성과 최소성을 만족
  • 대체키(Alternate Key)
    • 후보키 중 기본키를 제외한 속성
  • 외래키(Foreign Key)
    • 하나의 테이블에서 원하는 자료를 얻지 못하는 경우 다른 테이블을 참조하기 위해 사용되는 속성
    • 참조 릴레이션의 기본키와 같아야 함
    • NULL이 올 수 있음
    • 외래키의 속성명과 참조 릴레이션의 기본키 속성명은 달라도 무방
  • 슈퍼키(Super Key)
    • 한 릴레이션 내의 튜플들을 식별할 수 있는 후보키와 다른 속성들과의 모든 조합
    • 유일성은 만족하지만 최소성은 만족하지 않음

무결성(Integrity) 제약조건

개체 무결성

  • 기본키는 NULL 값이 올 수 없으며 중복될 수 없음
  • 개체를 식별하기 위해 오류가 없도록 하기 위한 제약 조건

참조 무결성

  • 외래키는 NULL 값이 올 수 없으며 참조 릴레이션의 기본키와 같아야 하는 제약조건
  • 테이블 참조 시 오류가 없도록 하기 위한 제약조건

도메인 무결성

  • 릴레이션에서 속성값의 범위가 정의된 경우 그 속성값은 정해진 범위 이내의 값으로 구성해야하는 제약조건
  • 동일한 속성에 대해 데이터 타입과 길이가 동일해야 함

고유 무결성

  • 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우 그 속성값은 모두 달라야 함

NULL 무결성

  • 특정 속성값에 NULL이 올 수 없다는 조건이 주어진 경우 그 속성값은 NULL이 올 수 없음

키 무결성

  • 한 릴레이션에는 최소한 하나의 키가 존재해야하는 제약조건

관계대수 (\(\pi, \sigma, \bowtie, \div, \wedge, \cap, \cup, -, \times\))

Select \(\sigma\)

릴레이션에서 조건을 만족하는 튜플을 구하기 위한 연산

  • 표기형식 : \(\sigma\)<선택조건>(테이블 이름)
    • Ex : \(\sigma\) 점수 > 80 (학생) etc.

Project \(\pi\)

릴레이션에서 속성의 값을 구하는 연산

  • 표기형식 : \(\pi\)<추출 속성리스트="">(테이블 이름)
    • Ex : \(\pi\) 학번, 이름(\(\sigma\) 학년 = 1 (학생))

Join \(\bowtie\)

두 테이블로부터 조건에 맞는 관련된 튜플들을 하나의 튜플로 결합하여 하나의 테이블로 만드는 연산

  • 표기형식 : 테이블1 \(\bowtie\) <조인조건> 테이블2
    • Ex : 학생 \(\bowtie\) 학번=학번 성적

Division \(\div\)

‘A DIVISION B’는 B 테이블의 조건을 만족하는 튜플들을 테이블 A에서 추출하는 연산

  • 표기형식 : 테이블1 (테이블1속성 \(\div\) 테이블2속성) 테이블2
    • Ex : 학생(수강과목 \(\div\) 과목명)과목

일반집합연산자

  • 합(\(\cup\)), 교(\(\cap\)), 차(\(-\)) 집합, 카디션 프로덕트(\(\times\))연산

관계 해석

  • 릴레이션에서 결과를 얻기 위한 과정을 표현하는 것
  • 연산자 없이 정의하는 방법을 이용하는 비절차적 언어
  • 튜플 관계 해석과 도메인 관계 해석이 있음
    • 표기형식 : {결과값 ¦ 조건}
    • Ex : {학점.이름 ¦ 학점 \(\wedge\) 학점.수강번호=’B123’ \(\wedge\) 학점.점수>80}





© 2019. by RaP0d

Powered by aiden