DB2 - 관계 데이터 모델

박정빈·2024년 4월 21일

DB

목록 보기
2/9

1. 릴레이션

  • 릴레이션(relation) : 행과 열로 구성된 테이블

  • 관계(relationship) :
    릴레이션 내에서 생성되는 관계: 릴레이션 내 데이터들의 관계
    릴레이션 간에 생성되는 관계: 릴레이션간의 관계
    릴레이션 간의 관계

도서 릴레이션

2. 릴레이션 스키마

  • 스키마의 요소
    • 속성(attribute) : 릴레이션 스키마의 열
    • 도메인(domain) : 속성이 가질 수 있는 값의 집합
    • 차수(degree) : 속성의 개수
  • 스키마의 표현
    • 릴레이션이름(속성1 : 도메인1, 속성2 : 도메인2, 속성3 : 도메인3 …)
    • 예시)
      • 도서 (도서번호, 도서이름, 출판사, 가격)
      • 도서(도서번호: integer, 도서이름 : char(40), 출판사 : char(40), 가격 : integer)) → 도메인 포함

3. 릴레이션 인스턴스

  • 인스턴스 요소
    • 투플(tuple) : 릴레이션의 행
    • 카디날리티(cardinality) : 투플의 수

투플이 가지는 속성의 개수는 릴레이션 스키마의 차수와 동일하고,
릴레이션 내의 모든 투플들은 서로 중복되지 않아야 함

4. 릴레이션 특징

  • 속성은 단일 값을 가진다
    각 속성의 값은 도메인에 정의된 값 만을 가지며 그 값은 모두 단일 값이여야 함.
  • 속성은 서로 다른 이름을 가진다
    속성은 한 릴레이션 에서 서로 다른 이름을 가져야만 함
  • 한 속성의 값은 모두 같은 도메인 값을 가진다
    한 속성에 속한 열은 모두 그 속성에서 정의한 도메인 값만 가질 수 있음.
  • 속성의 순서는 상관없다
    속성의 순서가 달라도 릴레이션 스키마는 같음.
  • 릴레이션 내의 중복된 투플은 허용하지 않는다
    하나의 릴레이션 인스턴스 내에서는 서로 중복된 값을 가질 수 없음. 모든 투플은 서로 값이 달라야함
  • 투플의 순서는 상관없다
    투플의 순서가 달라도 같은 릴레이션임. 관계 데이터 모델의 투플은 실제적인 값을 가지고 있으며 이 값은 시간이 지나면서 데이터의 삽입, 삭제, 수정에 따라 순서가 바뀔 수 있음.

5. 관계 데이터 모델 , 관계 데이터베이스시스템

관계 데이터 모델은 데이터를 2차원 테이블 형태인 릴레이션으로 표현함.
릴레이션에 대한 제약조건(constraints)과 관계 연산을 위한 관계대수(relational
algebra)를 정의함.

6. 키(Key)

  • 특정 투플을 식별할 때 사용하는 속성 혹은 속성의 집합
  • 릴레이션은 중복된 투플을 허용하지 않기 때문에 각각의 투플에 포함된 속성들 중 어느 하나(혹은 하나 이상)는 값이 달라야 함. 즉,키가 되는 속성(혹은속성의집합)은 반드시 값이 달라서 투플들을 서로 구별할 수 있어야 함
  • 키는 릴레이션 간의 관계를 맺는데도 사용

슈퍼키(super key)

투플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합 (유일성)
투플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키가 될 수 있음

EX) (주민번호), (주민번호, 이름), (주민번호, 이름, 주소), (주민번호, 이름, 핸드폰), (고객번호), (고객번호, 이름, 주소), (고객번호, 이름, 주민번호, 주소, 핸드폰) 등

후보키(candidate key)

투플을 유일하게 식별할 수 있는 속성의 최소 집합 (유일성, 최소성)

EX) (고객번호, 도서번호) <이렇게 2개 이상의 속성으로 이루어진 키를
복합키(composite key) 라고 한다.

기본키(primary key)

여러 후보키 중 하나를 선정하여 대표로 삼는 키

기본키 선정시 고려사항

  • 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야함
  • NULL 값은 허용하지 않음
  • 키 값의 변동이 일어나지 않아야 함
  • 최대한 적은 수의 속성을 가진 것이라야 함
  • 향후 키를 사용하는데 있어서 문제 발생 소지가 없어야 함

대리키(surrogate key)

기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때는 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 경우가 있음.
이러한 키를 대리키 혹은 인조키(artificial key)라고 함.

대리키는 DBMS나 관련 소프트웨어에서 임의로 생성하는 값으로 사용자가 직관적으로 그 값의 의미를 알 수 없음
EX) 기본키:(고객번호 , 도서번호) -> 대리키:(주문번호)

대체키(alternate key)

대체키는 기본키로 선정되지 않은 후보키를 말함
고객 릴레이션의 경우 고객번호와 주민번호 중 고객번호를 기본키로 정하면 주민번호가 대체키가 됨

외래키(foreign key)

  • 다른 릴레이션의 기본키를 참조하는 속성을 말함.

  • 다른 릴레이션의 기본키를 참조하여 관계데이터모델의 특징인 릴레이션 간의 관계(relationship)를 표현함.

  • 릴레이션 스키마를 표현할 때 외래키는 밑줄(점선)을 그어 표시함

  • 외래키의특징

    • 관계 데이터 모델의 릴레이션 간의 관계를 표현함
    • 다른 릴레이션의 기본키를 참조하는 속성임
    • 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로같아야함
    • 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨
    • NULL 값과 중복 값 등이 허용됨
    • 자기자신의 기본키를 참조하는 외래키도 가능함
    • 외래키가 기본키의 일부가 될 수 있음

7. 무결성제약조건

  • 데이터무결성(integrity, 無缺性)
    데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것을 말함

  • 도메인 무결성 제약조건

    • 도메인 제약(domain constraint)이라고도 하며, 릴레이션 내의 투플들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건

    • SQL 문에서데이터형식(type), 널(null/not null), 기본 값(default), 체크(check) 등을 사용하여 지정할 수 있음

  • 개체 무결성 제약조건

    • 기본키제약(primary key constraint)이라고도 함

    • 릴레이션은 기본키를 지정하고 그에 따른 무결성원칙 즉, 기본키는 NULL 값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건임

    • 삽입: 기본키 값이 같으면 삽입이 금지됨

    • 수정: 기본키 값이 같거나 NULL이면 수정이 금지됨

    • 삭제: 확인 없이 즉시 삭제함

  • 참조 무결성 제약조건

    • 외래키제약(foreign key constraint)이라고도 하며, 릴레이션 간의 참조 관계를 선언하는 제약조건

    • 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의
      값이 변경될 때 부모 릴레이션의 제약을 받는다는 것임

    • 삽입: 부모릴레이션 - 정상 진행 / 자식릴레이션 - 부모릴레이션에 값이 있는 외래키만 인정

    • 삭제: 부모릴레이션 - 참조하는 테이블을 같이 삭제할 수 있어서 금지하거나 다른 작업이 필요함 / 자식릴레이션 - 바로 삭제 가능함

    • 부모 릴레이션에서 투플을 삭제할경우 참조무결성조건을 수행하기 위한 고려사항

      • 즉시작업을중지

      • 자식릴레이션의관련투플을삭제

      • 초기에설정된다른어떤값으로변경

      • NULL 값으로 설정

    • 수정: 삭제와 삽입 명령이 연속해서 수행되서 부모릴레이션의 수정이 일어날 경우 삭제 옵션에 따라 처리된 후 문제가 없으면 다시 삽입 제약 조건에 따라 처리됨


8. 관계대수

  • 관계대수
    릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어
    어떤 데이터를 어떻게 찾는지에 대한 처리절차를 명시하는 절차적인 언어이며, DBMS 내부의 처리언어로 사용됨
  • 관계해석
    어떤 데이터를 찾는지만 명시하는 선언적인 언어로 관계대수와 함께 관계 DBMS의
    표준 언어인 SQL의 이론적인 기반을 제공함

→ 관계대수와 관계해석은 모두 관계데이터모델의 중요한 언어이며 실제 동일한 표현능력을 가지고있음

  • 릴레이션의 수학적 개념

예) A = {2, 4}, B = {1, 3, 5} 일 때,
A×B = {(2,1), (2,3), (2,5), (4,1), (4,3), (4,5)}
릴레이션R은 카티전프로덕트(cartesian product)의 부분집합으로 정의
예) R1 = {(2,1), (4,1)},
R2={(2, 1), (2, 3), (2, 5)},
R3={(2, 3), (2, 5), (4, 3), (4, 5)}
원소개수가 n인 집합S의 부분집합의 개수는2ⁿ이므로, 카티전프로덕트 A×B의 부분집합의개수는 |A|=2, |B|=3이므로 22×3=642^{2\times 3}=64

카티전프로덕트의기초집합A, B 각각이가질수있는값의범위를도메인(domain)이라고함. 즉집합A의도메인은{2, 4}
릴레이션 역시 집합이므로 집합에서 가능한 연산은 합집합(∪), 교집합(∩),
카티전프로덕트(×) 등이 있음.
R1 ∪ R2 = {(2, 1), (4, 1), (2, 3), (2, 5)}
R1 ∩ R2 = {(2, 1)}

  • 관계 대수 연산자
  • 관계 대수 식
    릴레이션관 연산을 통해 릴레이션을 찾는 식으로써 대상 릴레이션과 연산자로 구성되고 릴레이션으로 반환된다.
    단항연산자: 연산자<조건>릴레이션
    이항연산자: 릴레이션1 연산자<조건>릴레이션

셀렉션

  • 릴레이션의 투플을 추출하기 위한 연산이자 하나의 릴레이션을 대상으로 하는 단항연산자

  • 찾고자하는 투플의 조건(predicate)을 명시하고 그 조건에 만족하는 투플을 반환

  • 형식: σ<조건> (R)

  • 형식: σ<복합조건> (R) 복합조건을나타내는기호:∧(and), ∨ (or), ┑(not)
    (예) 가격이 8,000원 이하이고, 도서번호가 3 이상인 책을찾으시오.
    σ(가격<=8000 ∧ 도서번호 >=3) (도서)

프로젝션

릴레이션의 속성을 추출하기 위한 연산으로 단항 연산자임
형식: π<속성리스트> (R) (R은 릴레이션, π 는 그리스 문자이며 대문자는 Π )

집합연산

  • 합집합

    • 두 개의 릴레이션을 합하여 하나의 릴레이션을 반환함
      이때 두개의 릴레이션은 서로 같은 속성 순서와 도메인을 가져야 함
    • 형식: R ∪ S
  • 교집합

    • 합병가능한 두 릴레이션을 대상으로 하며, 두 릴레이션이 공통으로 가지고있는 투플을 반환함
    • 형식: R ∩ S
  • 차집합

    • 첫번째 릴레이션에는 속하고 두번째 릴레이션에는 속하지 않는 투플을 반환함
    • 형식: R - S
  • 카티전 프로덕트(cartesian product)

    • 두 릴레이션을 연결시켜 하나로 합칠때 사용함
    • 결과 릴레이션은 첫번째 릴레이션의 오른쪽에 두번째 릴레이션의 모든 투플을 순서대로 배열하여 반환함
    • 결과 릴레이션의 차수는 두 릴레이션의 차수의 합이며, 카디날리티는 두 릴레이션의 카디날리티의 곱임
    • 형식: R × S

조인

  • 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 투플을 수평으로 결합하는 연산임.

  • 조인을 수행하기 위해서는 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성되어야함.

  • 조인 연산의 결과는 공통 속성의 속성값이 동일한 투플만을 반환함.

  • 형식: R  CS=σc(R×S)R\;⋈_CS = σ_c (R×S) (R과 S는 릴레이션, c 는 조인조건)

  • 조인 연산의 구분

    • 기본연산: 세타조인(θ⋈_θ), 동등조인(), 자연조인(N⋈_N)
    • 확장된 조인연산: 세미조인(), 외부조인(,,)
  • 세타조인

    • 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 투플만 반환함
    • 세타 조인의 조건은 {=, ≠, ≤, ≥, <, >} 중 하나가 됨
    • 형식: R(r조건s)⋈_{(r조건s)}S(R과 S는 릴레이션이며 r은 R의 속성, s는 S의 속성)
  • 동등조인(equi join)

    • 세타조인에서= 연산자를 사용한 조인,보통 조인 연산이라고 하면 동등조인을 지칭함

  • 자연조인(natural join)

    • 동등 조인에서 조인에 참여한 속성이 두 번 나오지 않도록 두 번째 속성을 제거한 결과를 반환함
    • 형식: R N(r,s)⋈_{N(r, s)} S
  • 외부조인

    • 자연조인 시 조인에 실패한 투플들도 모두 보여주되 값이 없는 대응 속성에는 NULL 값을 채워서 반환
    • 모든 속성을 보여주는 기준릴레이션 위치에 따라 왼쪽(left) 외부조인, 오른쪽(right) 외부조인, 완전(full) 외부조인으로 나뉨
    • 형식: 왼쪽:R r,s⟕_{r,s}S, 오른쪽:R r,s⟖_{r,s} S, 완전:R r,s⟗_{r,s} S

  • 세미조인(semi join)

    • 자연 조인을 한 후 두 릴레이션 중 한 쪽 릴레이션의 결과만 반환하며, 기호에서 닫힌 쪽 릴레이션의 투플만 반환함
    • 형식 : R (r,s)⋉_{(r, s)} S

디비전

  • 릴레이션의 속성 값의 집합으로 연산을 수행함
  • 릴레이션 R의 속성 B값과 릴레이션 S의 속성 B값이 서로 동일하게 대응하는 릴레이션 R의 속성A의 투플을 반환
  • 형식: R ÷ S

0개의 댓글