DB) #2 관계데이터모델

지우·2026년 3월 14일

database

목록 보기
2/7

관계 데이터 모델의 개념

릴레이션

릴레이션 : 행/열로 구성된 테이블
하나의 개체에 관한 데이터를 하나의 릴레이션에 저장

릴레이션 = 테이블 = 파일
속성 = 열 = 필드
튜플 = 행 = 레코드

관계
릴레이션 내의 관계 : 릴레이션 안의 데이터들의 집합
릴레이션 간의 관계 : 릴레이션을 식별 가능한 값을 이용해 표현

릴레이션 스키마와 인스턴스

릴레이션 스키마 : 릴레이션의 논리적 구조

  • 스키마 = 내포 = 헤더
  • 도메인 : 속성이 가질 수 있는 값의 집합
  • 차수 : 속성의 개수
  • 자주 변하지 않음(정적) -> 수정 내용이 많은 테이블은 잘못 만든 테이블
  • 표기 : 릴레이션이름(속성1:도메인1, 속성2:도메인2, ... )

릴레이션 인스턴스 : 릴레이션 스키마에 실제로 저장된 데이터 집합

  • 인스턴스 = 외면 = 데이터
  • 카디날리티 : 튜플의 수
  • 삽입, 추가, 삭제, 수정이 자주 발생 (동적)

릴레이션의 특징

  • 속성의 원자성 : 속성은 단일값만, 여러 값 원하면 데이터 분리 또는 속성 나누기
  • 속성의 무순서성
  • 속성의 동일성 : 각 속성은 정의된 도메인에 속하는 동일한 유형의 값만 가짐
  • 튜플의 유일성 : 동일 튜플 중복 저장 X
  • 튜플의 무순서성

관계 데이터 모델

데이터를 릴레이션으로 표현 -> 릴레이션에 대한 제약조건과 관계 연산을 위한 관계 대수를 정의

무결성 제약 조건

릴레이션에서 특정 튜플들을 유일하게 구별하는 속성

키의 특성

  • 유일성 : 하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야함
  • 최소성 : 꼭 필요한 최소한의 속성들로만 키를 구성

키의 종류

슈퍼키
유일성을 만족하는 속성 또는 속성들의 집합

후보키
유일성, 최소성을 만족하는 속성 또는 속성들의 최소 집합
슈퍼키 중에서 불필요한 속성을 제거한 최소 키

기본키
후보키 중에서 기본적으로 사용하기 위해 선택한 키
NULL 허용 X
밑줄 그어 표시

대체키
기본키로 선택되지 못한 후보 키

대리키
기본키가 보안을 필요로 하거나 / 여러 개의 속성으로 구성되어 복잡하거나 / 마땅한 기본키가 없을 때 -> 일련번호 같은 가상의 속성을 만들어 기본키로 삼음 = 대리키

외래키
다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
NULL 가능, 중복값 가능
참조하는 릴레이션 = 외래키 가짐 = 자식 릴레이션
참조되는 릴레이션 = 기본키 가짐 = 부모 릴레이션
외래키와 기본키 속성의 이름은 달라도 되지만 도메인은 같아야 함
자기 자신의 기본키 참조하는 외래키도 가능
외래키는 기본키의 일부가 될 수 있음

예제

ex 1)

슈퍼키 : 고객아이디 / (고객아이디, 고객이름) / (고객아이디, 나이, 등급) ...
후보키 : 고객아이디 / (고객아이디, 고객이름) ... => 고객아이디는 유일한 속성이므로, 이름과 나이는 사실상 불필요한 속성, 그러나 후보키 조건은 충족
기본키 : 고객아이디
대체키 : (고객아이디, 고객이름) / (고객아이디, 나이) ...
대리키 : 고객아이디 -> 고객번호

// 구분하는거 가끔 헷갈린다,, 속성의 '집합'도 포함된다는 점 기억하고 기본키는 확실히 알아두기

ex 2)

릴레이션 R :
A -> {a1, a2, a3, a4} : 모두 다름 => 후보키 가능
B -> {b1, b1, b1, b2} : 중복있음
C -> {c1, c1, c2, c3} : 중복있음
(B, C) : 여전히 중복 존재
= > 후보키 A, 기본키 A

릴레이션 S :
C -> {c1, c1, c2, c3} : 중복있음
D -> {d2, d1, d3, d3} : 중복있음
E -> {e1, e2, e3, e3} : 중복있음
(C, D) -> (c1, d2), (c1, d1), (c2, d3), (c3, d3) : 모두 다름 => 후보키 가능
(C, E) -> (c1, e1), (c1, e2), (c2, e3), (c3, e3) : 모두 다름 => 후보키 가능
(D, E) -> (d3, e3) 중복됨
=> 후보키 (C, D), (C, E) / 기본키는 후보키들 중 하나

무결성 제약 조건

데이터의 무결성

일관성과 정확성을 바탕으로 구축된 데이터베이스가 계속해서 무결성을 유지하려면 튜플의 삽입, 삭제, 수정 시 데이터의 제약조건 준수 여부를 확인해야함

무결성 제약조건

  • 도메인 무결성 제약조건
    도메인 제약 : 튜플들은 각 속성의 도메인에 지정된 값만 가져야함
  • 개체 무결성 제약조건
    기본키 제약 : 기본키는 NULL 값 X, 중복값 X
  • 참조 무결성 제약조건
    외래키 제약 : 부모에 없는 값을 자식이 참조하면 위반

무결성 제약 조건의 수행

참조 무결성 제약조건 위한 대표 예

참조 중인 부모 키 삭제 / 변경
존재하지 않는 부모 키 참조
외래키 속성이 NULL 값을 가진다고 해서 이 제약조건 위반은 아님

참조 무결성 제약조건 수행

자식 릴레이션에 삽입할 때 : 도메인 무결성 제약조건 먼저 확인 후 개체 무결성 제약조건에 위배되는 값 없는지 확인

부모 릴레이션에서 삭제할 때 : 삭제 요청 -> 참조 확인 -> 옵션 선택

RESTRICTED : 자식 릴레이션에서 참조하고 있을 때 삭제 작업 거부
CASCADE : 자식 릴레이션의 관련 튜플 같이 삭제
DEFAULT : 자식 릴레이션의 관련 튜플을 미리 설정해둔 값으로 변경
NULL : 자식 릴레이션의 관련 튜플을 NULL 값으로 설정

1) 학생 릴레이션에 (601, 박세리, 3001) 추가
학과 릴레이션에 3001 없음 -> 거부
2) 학과 릴레이션에서 (2001, 체육학과) 삭제
학생 릴레이션에서 2001을 참조하는 튜플 존재 -> 거부

관계대수

관계 대수

릴레이션 처리 과정을 기술하는 언어
하나 이상의 릴레이션에 연산을 수행하여 결과 릴레이션이 나오기까지의 절차를 확인하는 방법을 제공

기본 연산자 5개 : 셀렉션 / 프로젝션 / 합집합 / 차집합 / 카티션 프로덕트

집합 연산

일반 집합 연산자

합집합 R∪S

  • R과 S에 속하는 모든 튜플 반환
  • 차수는 R, S, 결과 모두 동일
  • 카디널리티는 R+S와 같거나 작음
  • 교환, 결합 법칙 성립

교집합 R∩S

  • R과 S에 공통으로 속하는 튜플 반환
  • 차수는 R, S, 결과 모두 동일
  • 카디널리티는 R, S보다 같거나 작음
  • 교환, 결합 법칙 성립

차집합 R-S

  • R에는 존재하지만 S에는 존재하지 않는 튜플 반환
  • 차수는 R, S, 결과 모두 동일
  • 교환, 결합 법칙 성립 X

카티션 프로덕트 RxS

  • R과 S의 각 튜플을 모두 연결하여 새로운 튜플 반환
  • 결과 차수 = R + S
  • 카디널리티 = R * S
  • 교환, 결합 법칙 성립

셀렉션과 프로젝션

순수 관계 연산자

셀렉트 σ

  • 릴레이션에서 조건을 만족하는 튜플만 추출
  • σ <조건식>(릴레이션)
  • 릴레이션 where 조건식

프로젝트 𝛑

  • 릴레이션의 속성을 추출하기 위한 단항 연산자
  • 동일한 튜플은 중복되지 않고 한번만 나타남
  • 𝛑<속성리스트>(릴레이션)
  • 릴레이션 [속성리스트]
    업로드중..

조인

조인
두 릴레이션의 공통 속성을 기준으로 속성값이 같은 튜플을 수평 결합
릴레이션1 ⋈ 릴레이션2

동등 조인

세타 조인 중 비교 연산자가 = 인 경우
어느 릴레이션 소속인지 구분하기 위해 . 사용 -> 릴레이션.속성이름
=를 사용하기 때문에 두 릴레이션의 공통 속성이 모두 결과에 나타남

세타조인

비교 연산자를 자유롭게 사용

자연조인

동등조건에서 중복되는 조인 칼럼 하나를 제거해서 더 깔끔하게 보여줌

외부조인

자연조인 연산을 확장된 관계 대수 연산자
릴레이션에 없는 값은 NULL로 처리

왼쪽 외부 조인 RSR ⟕ S: R에 존재하는 모든 튜플을 결과에 반영
오른쪽 외부 조인 RSR ⟖ S: S에 존재하는 모든 튜플을 결과에 반영
완전 외부 조인 RSR ⟗ S: 양쪽에 존재하는 모든 튜플을 결과에 반영

세미조인

자연조인을 한 후 두 릴레이션 중 한쪽 릴레이션의 결과만 반환
릴레이션2 연결 고리가 될 조인 속성만 먼저 뽑아낸 후 릴레이션1과 자연조인하여 합침
불필요한 속성 미리 제거 -> 연산 비용 줄일 수 있음
교환 법칙 성립 X
릴레이션1 ⋉ 릴레이션2
업로드중..

디비전

조인을 사용한 후 릴레이션2의 모든 튜플과 관련 있는 릴레이션1의 튜플을 추출 (단, 릴레이션1이 릴레이션2의 모든 속성을 포함해야함)
릴레이션1 ÷ 릴레이션2

0개의 댓글