관계 데이터 연산

Sejin·2025년 4월 10일
0

Data, DB공부

목록 보기
11/26
post-thumbnail

관계형 데이터 모델 개념

주요 원리

관계형 데이터 모델

  • 가장 널리 사용되는 논리적 데이터 모델.
  • 데이터를 2차원적인 표(Table) 형태로 표현.
  • 관계를 자유롭게 표현함

기본키와 외래키

  • 기본 키(Primary Key)
    릴레이션 내에서 각 튜플을 고유하게 식별

  • 외래 키(Foreign Key)
    다른 릴레이션의 기본 키를 참조하여 데이터 간의 관계를 표현

예시

  • <고객> 테이블과 <주문서> 테이블은 <주문> 테이 블을 관계로 하여 연결되어 있음

  • <고객> 테이블의 '고객번호'와 <주문서> 테이블의 '주문번호'는 기본키

  • <주문> 테이블의 '고객번호'화 '주문번호'느 외래키

스키마와 인스턴스

데이터베이스 스키마(Database Schema)

  • 데이터베이스의 전체 구조를 정의한 설계

  • 데이터베이스를 구성하는 릴레이션 스키마(테이블의 구조와 속성들)의 모음

  • 데이터베이스의 정적인 요소로, 데이터베이스 설계와 유지보수의 기본 틀을 제공

  • 예) 테이블 이름, 속성 이름, 속성 타입, 제약 조건 등이 포함됨

데이터베이스 인스턴스(Database Instance)

  • 데이터베이스의 실제 데이터 상태를 나타냄

  • 데이터베이스를 구성하는 릴레이션 인스턴스의 모음

  • 동적인 요소로, 시간이 지남에 따라 데이터의 변경에 따라 달라질 수 있음

  • 예) 특정 시점에 테이블에 저장된 데이터의 실제 내용


릴레이션(Relation)

데이터를 2차원 테이블 구조로 저장한 것

하나의 개체에 관한 데이터를 표현하며, 파일 관리 시스템 관점에서 파일에 대응

릴레이션 스키마(Relation Schema)

  • 릴레이션의 논리적 구조를 정의한 설계.
  • 예) 고객(고객아이디, 고객이름, 나이, 등급,
    직업, 적립금)

릴레이션 인스턴스(Relation Instance)

  • 특정 시점에 릴레이션에 존재하는 튜플들의 집합.
  • 데이터의 삽입, 삭제, 수정에 따라 변하는 동적인 특징을 가짐

구성요소

튜플(Tuple)

  • 릴레이션에서 하나의 행(Row)을 의미함
  • 파일 관리 시스템 관점에서는 레코드(Record)에 해당함
  • 예) 고객 테이블의 한 명의 고객 정보

기수(Cardinality)

  • 하나의 릴레이션에서 튜플(행)의 전체 개수
  • 예) 고객 테이블에 100명의 고객 데이터가 있다면, 기수는 100

속성(Attribute)

  • 데이터베이스를 구성하는 가장 작은 논리적 단위
  • 릴레이션에서 열(Column)의 이름을 의미함
  • 파일 관리 시스템 관점에서는 필드(Field)에 해당함
  • 예) 고객 테이블의 "고객아이디", "고객이름", "나이" 등

차수(Degree)

  • 하나의 릴레이션에서 속성(열)의 전체 개수
  • 예) 고객 테이블에 5개의 열이 있다면, 차수는 5

도메인(Domain)

  • 하나의 속성이 가질 수 있는 모든 값들의 집합
  • 실제 속성값이 시스템에서 유효한지 검사하는 데 사용함
  • 예) "성별" 속성의 도메인 → {남, 여}

특성

  • 튜플의 유일성
    하나의 릴레이션 내에는 동일한 튜플이 존재할 수 없음

  • 튜플의 무순서
    릴레이션 내의 튜플 간의 순서는 중요하지 않음

  • 릴레이션의 변동성
    튜플의 삽입, 삭제 등의 작업을 통해 릴레이션은 시간에 따라 변할 수 있음

  • 속성의 무순서
    릴레이션 내의 속성 간의 순서도 중요하지 않음

  • 속성의 원자성
    속성값은 더 이상 쪼갤 수 없는 원자값 만을 저장해야 함

  • 속성의 유일한 식별
    속성의 명칭은 유일해야 하며, 속성을 구성하는 값은 동일할 수 있음. ⇒ 즉, 속성 이름은 중복될 수 없지만, 속성 값은 중복될 수 있음

  • 키(Key)
    릴레이션을 구성하는 튜플을 유일하게 식별하기 위해, 속성들의 부분집합을 키로 설정함


Key

데이터베이스에서 튜플을 서로 구분할 수 있는 기준이 되는 속성

개념

유일성(Uniqueness)
하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야 함

최소성(Minimality)
꼭 필요한 최소한의 속성들로만 키를 구성함


키 종류

수퍼키(Super Key)

유일성을 만족하는 속성

  • 정의
    튜플을 유일하게 구분하는 키로, 1개 이상의 속성으로 구성됨
  • 특징
    유일성만 보장하며, 여러 개의 수퍼키가 존재할 수 있음

후보키(Candinate Key)

유일성과 최소성을 만족하는 속성

  • 정의
    모든 릴레이션에는 반드시 하나 이상의 후보키가 존재함
  • 특징
    유일성과 최소성을 만족하는 속성 또는 속성들의 집합임

기본키(Primary Key)

후보키 중에서 기본적으로 사용하기 위해 선택한 키

  • 정의
    후보키 중에서 기본적으로 사용하기 위해 선택된 한나위 키

  • 특징
    한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성으로, 중복된 값과 NULL 값을 가질 수 없음

대체키(Alternate Key)

후보키 중에서 기본키로 선택되지 못한 후보키

  • 정의
    후보키 중에서 기본키를 제외한 나머지 키

외래키(Foreign Key)

  • 정의
    다른 릴레이션의 기본키를 참조하는 속성

  • 값의 제약
    외래키 값은 참조된 릴레이션의 속성에 존재하는 값이거나 NULL 값이어야 함
    ⇒ 외래키 값은 참조된 릴레이션의 속성에 없는 값으로
    입력할 수 없음

  • 이름과 도메인
    외래키 속성과 그것이 참조하는 기본키 속성의 이름은 달라도 됨.
    BUT 두 속성의 도메인은 같아야 함
    ⇒ 데이터 타입과 값의 범위가 일치해야 함

  • 다수의 외래키
    하나의 릴레이션에는 여러 개의 외래키가 존재할 수 있음. 외래키는 기본키로도 사용될 수 있음.

  • 관계 표현
    참조하는 릴레이션 : 외래키를 가진 릴레이션
    참조되는 릴레이션: 외래키가 참조하는 기본키를 가진 릴레이션


제약 조건

제약 조건의 종류

도메인 제약(Domain Constraints)

속성(Attribute)에 대한 제약

  • 원자성(Atomicity)
    속성 값은 원자적이어야 하며, 더 이상 나눌 수 없는 단일값이어야 함

  • 도메인 정의
    속성 값은 미리 정의된 도메인 내의 값이어야 하며, 이 도메인은 데이터 타입, 범위, 형식 등을 포함함.
    복합 속성(Composite Attribute)과 다중값 속성(Multivalued Attribute)은 허용되지 않음.

  • NULL 값 허용
    도메일 제약이 Not Null로 설정되지 않은 경우, NULL 값은 허용됨

개체 무결성 제약(Entity Integrity Constraints)

기본키(Primary Key)에 대한 제약

데이터베이스에서 각 릴레이션의 기본 키(Primary Key)에 대한 규칙을 정의함

기본 키(PK - Primary Key) 는 NOT NULL & UNIQUE이어야 함

  • NOT NULL
    기본 키는 NULL 값을 가질 수 없음
    ⇒ 기본 키 속성은 반드시 값을 가져야 하며,
    이는 각 튜플이 고유하게 식별될 수 있도록 보장함

  • UNIQUE
    기본 키는 릴레이션 내에서 고유해야 함
    ⇒ 기본 키 속성의 값은 중복될 수 없으며,
    각 튜플은 서로 다른 기본 키 값을 가져야 함

  • 고유 식별성
    개체 무결성 제약은 데이터베이스의 각 개체(튜플)가 고유하게 식별될 수 있도록 하여 데이터의 무결성을 유지하는 데 기여함

키 제약(Key Constraints)

릴레이션(Relation)에 대한 제약

데이터베이스에서 릴레이션의 각 튜플(행)을 고유하게 식별할 수 있어야 함

참조 무결성 제약(Referential Integrity Constraints)

외래키(Foreign Key)에 대한 제약

데이터베이스에서 각 릴레이션의 기본 키(Primary Key)에 대한 규칙을 정의함

  • 외래 키 정의
    한 릴레이션(R1)의 외래 키는 다른 릴레이션(R2)의 기본 키를 참조함

  • 참조 무결성
    R1의 외래 키 값은 R2의 기본 키 값 중 하나여야 하며, R2에 존재하지 않는 값은 사용할 수 없음

  • 자기 참조
    외래 키는 자기 자신이 속한 릴레이션을 참조할 수 있음
    예) 직원 테이블에서 상사와 직원 간의 관계를 나타낼 수 있음

  • 무결성 유지
    기본 키가 삭제되면 해당 외래 키를 참조하는 튜플도 함께 삭제되거나 수정되어야 하며, 이를 통해 데이터의 일관성을 장함


데이터 무결성

무결성이란?

  • 무결성(Integrity)
    데이터베이스에 저장된 데이터 값이 현실 세계의 실제 값과 일치하는 정확성

  • 무결성 제약 조건
    데이터베이스 내의 데이터 정확성을 보장하고 부정확한 자료가 저장되는 것을 방지하기 위한 규칙


데이터 무결성 강화

데이터 품질에 직접적인 영향을 미치므로,데이터 특성에 맞는 적절한 무결성을 정의하고 강화해야 함

1. 애플리케이션

데이터를 생성, 수정, 삭제할 때 무결성 조건을 확인하는 코드를 데이터 조작 프로그램에 추가함
예) 데이터 유효성 검사, 특정규칙 적용

  • 장점
    데이터 유효성 검사를 맞춤형으로 설계 가능
    사용자 정의와 같은 복잡한 무결성 조건의 구현이 가능

  • 단점
    데이터 유효성 검사를 여러 곳에서 구현하므로
    중복성이 발생할 수 있고 유지보수의 어려움

2. 데이터베이스 트리거

데이터 조작 이벤트가 발생할 때 자동으로 실행됨
예) INSERT, UPDATE, DELETE

특정 조건을 충족하지 않는 데이터 조작을 거부하거나, 데이터 조작 시 일관성을 검사함

  • 장점
    데이터 조작 이벤트 발생 시 트리거가 자동으로
    실행되므로 개발자가 별도의 코드를 작성할 필요가 없음

  • 단점
    운영 중 변경이 어려움.
    사용상 주의가 필요함.

3. 제약 조건

데이터베이스에 제약 조건을 설정하여 무결성을 유지함

  • 장점
    통합 관리 가능,
    간단한 선언으로 구현 가능,
    변경 용이,
    오류 데이터 발생 방지

  • 단점
    복잡한 제약 조건의 구현과 예외적인 처리가 불가능


무결성 정의 시기

프로그램이 완성되고 데이터가 저장된 후에 무결성을 정의하면 많은 비용이 발생할 수 있으므로, 데이터베이스 구축 과정에서 미리 정의하는 것이 중요함


강화 방법

데이터 무결성은 애플리케이션, 데이터베이스 트리거, 제약 조건 등을 통해 강화할 수 있음

profile
Sejin's Journey for Developers

0개의 댓글