[CODE]/Database

[DB] 2. 관계 데이터 모델 - 무결성 제약조건, 관계대수

원°C 2026. 3. 25. 15:46

1) 관계 데이터 모델의 개념

관계(relation)

: 행과 열로 구성된 테이블 (자식 부모)

  • 구성
    • 행과 열
      • 속성
        : 릴레이션의 열 = 애트리뷰트 (=field)
      • 튜플
        : 릴레이션의 행 (=record)
    • 스키마와 인스턴스
      • 릴레이션 스키마
        : 릴레이션의 논리적 구조 - 자주 변하지 않는다.
         정적
        ex) 속성(열), 도메인(속성이 가질 수 있는 값의 집합), 차수(속성의 개수)

      • 릴레이션 인스턴스
        : 스키마에 실제로 저장된 데이터 집합 - 삽입/추가/삭제/수정이 자주 발생한다.
         
        동적
        ex) 튜플(행), 카디날리티(튜플의 수)

  • 릴레이션 구조와 관련된 용어 (동일한 의미를 가진다.)
릴레이션 테이블 파일
스키마 내포 헤더
인스턴스 외연 데이터
튜플 레코드
속성 필드
  • 특징
    • 속성의 원자성
      : 속성은 원자값(단일값)만 가진다.
    • 속성의 무순서성
      : 속성 사이의 순서 무의미
    • 속성의 동일성
      : 속성은 정의된 도메인에 속하는 동일한 유형의 값만 가진다.
    • 튜플의 유일성
      : 하나의 릴레이션에서 동일한 튜플 존재 X
    • 튜플의 무순서성
      : 튜플 사이의 순서 무의미
관계 데이터 모델

: 데이터를 2차원 형태인 릴레이션으로 표현한 것

 릴레이션, 제약조건 , 관계대수를 정의한다.

 

관계 데이터 시스템(RDB)

: 관계 데이터 모델을 SQL 기반으로 컴퓨터 시스템에 구현한 것


2) 무결성 제약조건

키(key)

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

  • 특성
    • 유일성: 모든 튜플 서로 다른 키 값을 가진다.
    • 최소성: 최소한의 속성들로 구성한다.
  • 종류(6개)
    • 슈퍼키(super key)
         유일성 만족, 속성/속성들의 집합
    • 후보키(candidate key)
      = 슈퍼키 中 불필요한 속성 제거
         유일성 + 최소성 만족, 속성/속성들의 집합
    • 기본키(primary key)
      = 후보 키 中 기본으로 사용하기 위해 선택한 키
      ➔ NULL 허용 X, 밑줄을 그어 표시한다.
    • 대체키(alternate key)
      = 기본키 선택X인 후보키(후보키 -기본키)
    • 대리키(surrogate key, artificial key)
      = DBMS나 관련 소프트웨어가 임의로 생성한 가상 속성키
      기본키 = 보안을 필요로 / 여러 개의 속성으로 구성되어 복잡, 마땅한 기본키X
      ➔ ex) 주민번호, 주문번호
    • 외래키(foreign key = FK)
      = 다른 릴레이션의 기본키 참조
        NULL or 중복값 가능, 같 릴레이션 O, 기본키의 일부가 될 수 O
      ex) 참조하는 (외래키 가진 R) 참조되는 (기본키 가진 R)
🎇 외래키 속성 - 참조되는 기본키 속성

이름 ➔ 달라도 된다. /  도메인 ➔ 같아야 한다!


🎇 릴레이션 참조 관계

외래키 가진 릴레이션 = 자식 릴레이션
외래키가 참조하는 대상릴레이션 = 부모 릴레이션
(같은 릴레이션 안에서도 참조 O = 같은 릴레이션의 기본키 참조 O)

➔ 참조되는(기본키) 값이 변경되면, 참조하는(외래키) 값도 변경된다.
무결성

: 데이터 결함 X인 상태

데이터가 정확+유효하게 유지된 상태 (= 일관성, 정확성)

  • 데이터의 무결성(data integrity)
    : 데이터의 무결성을 보장하고 일관+정확한 상태로 유지하기 위한 규칙
    ➔ 튜플의 삽입/삭제/수정 시 데이터의 제약조건 준수 여부를 확인해야 한다.
  • 무결성 제약조건
    • 도메인 무결성 제약조건
      : 튜플이 속성 도메인에 지정된 값만 가져야
    • 개체 무결성 제약조건 - 기본키
      : 기본키는 NULL값 안됨, 릴레이션 내 하나의 값만 존재
    • 참조 무결성 제약조건 - 외래키
      : 자식-부모 도메인 같아야, 부모에 없는 값 참조 X
🎇 부모 릴레이션 튜플 삭제 시, 명령어 옵션

RESTRICTED = 자식 릴레이션에서 참조 시, 부모 삭제 거부
CASCADE = 자식 릴레이션의 관련 튜플 같이 삭제
DEFEAT = 자식 튜플값을 미리 설정해 둔 값으로 변경
NULL = 자식 릴레이션의 관련 튜플값을 NULL값으로 설정

 


3) 관계대수

관계대수

: 릴레이션에서 원하는 결과 얻기 위해, 릴레이션의 처리 과정을 순서대로 기술하는 절차적 언어

일반 집합 연산자
📍 조건
: 두 릴레이션이 합병 가능해야 한다.
➔ 두 릴레이션의 차수 같고, 서로 대응되는 속성의 도메인 같아야 한다.

 

  • 합집합 - 교환, 결합o
    • 차수 동일, 카디널리티 <= R+S
  • 차집합 - 교환, 결합x
    • 차수 동일, 카디널리티 <= R or S
  • 교집합 - 교환, 결합o
    • 차수 동일, 카디널리티(A-B인 경우) <= A
  • 카티션 프로덕트(R ⨉ S) - 교환, 결합o
    • 차수 = R+S, 카디널리티 = RxS
📍 카티션 프로덕트 ➔ 조인으로 대체해 사용하는 것을 추천한다.
순수 관계 연산자 
  • 셀렉션(selection) - 셀렉트( σ ): 조건 만족 튜플 반환
    추출 (가로로 자른다)
    • 표현: σ조건(R) = R where 조건
    • 비교연산자, 논리연산자(∨, ∧, ¬) 사용, 교환법칙o
  • 프로젝션(projection) - 프로젝트( π ): 해당 속성 값으로만 구성된 튜플 반환
    추출 (세로로 자른다)
    • 표현: π속성리스트(R) = R[속성리스트] ← 동일 튜플은 결과에서 1번만 반환
  • 조인(join) - 조인( ⋈ ): R과 S의 튜플을 수평 결합
    • 표현: R⋈S (= σ(RxS))
    • 기본조인
      공통조건 해당되거나(겹쳐야) 살아남는다. 
      • 세타(⋈θ): 비교연산자로 속성값 비교(중복 있음)
      • 동등(⋈R=S): 세타조인 中 = 연산자 사용한 조인(중복 있음)
      • 자연(⋈N): 동등조인 中 중복값 없이 값 1개씩 반환
    • 외부조인: 자연조인 연산 확장 ver.1
      ➔ ~쪽 기준으로 안 겹친 건 NULL값으로 처리한다. 
      • 왼쪽(=⋈) , 오른쪽, 완전(양쪽, 왼쪽+오른쪽)
        : ~쪽에 있는 릴레이션에 존재하는 모든 튜플을 결과 릴레이션에 포함시킴
        ~쪽 기준 관련된 정보를 싹 가져온다고 생각하기. 없으면 NULL
    • 세미조인(⋉): 자연조인 연산 확장 ver.2
      ➔ 한쪽 테이블 행만 반환(= 다른 테이블의 속성 X)
      • 표현: R⋉S
        ➔  S 있는 R만 추출. (ex. 주문한 적 있는 고객 ➔ 주문=S, 고객=R)
🥎 외부조인 예시

고객 =⋈(고객.고객번호, 주문.고객번호) 주문
➔ (고객 릴레이션의 고객번호 = 주문 릴레이션의 고객번호) 기준으로 왼쪽 외부조인
  • 디비전(Division): S의 모든 튜플과 관련 있는 R의 튜플 반환, R ÷ S
    ➔ 다른 연산과 달리, 릴레이션 속성값의 집합으로 연산 수행한다.
    ➔ 특정 조건을 모두 충족하는 대상을 찾을 때 사용한다.

 


 

관련 노션 링크:

https://eastern-albatross-55e.notion.site/2-32071eb963f080d8add1cf08619acd64?source=copy_link

 

 

[목차여기]