학교수업/데이터베이스

데이터베이스 보안 - 3주차. 관계형 데이터베이스 (RDB)

정보보호학과 새내기 2025. 4. 12. 13:37

(세종대학교) 데이터베이스 보안 - 수업 정리 내용

3.1. 관계형 데이터베이스 (RDB) 개요

3.1.1. RDB 정의 및 예시

  • 정의
    • 1970년대 IBM의 커드가 제안한 관계형 모델을 바탕으로 개발
      • 관계형 모델 : 실제 세계의 데이터를 수학적 논리 관계 개념을 사용하여 행열로 표현한 표와 행열의 상관관계로 정의하는 데이터 모델
  • 예시
    • 관계형 데이터베이스를 제안하는 다양한 DBMS 존재
    • 상용 프로그램
      • 오라클, MS SQL server, IBM의 DB2 등
    • 프리웨어
      • MariaDB, PostgreSQL, SQLite 등

3.1.2. RDB 특징

  • 특징에 대한 장점
    • 단순한 표 형태로 데이터 저장
      • 사용자가 이해하기 쉬움
    • SQL 이용하여 저장된 데이터 관리
      • 쉬운 데이터 이용
      • 응용 프로그램 변경 없이 데이터 항목 쉽게 확장 가능
    • 다양한 보안 기능 제공 (사용자 권한 분리 가능)
      • 데이터 공유 환경에서 효과적
  • 특징에 대한 단점
    • 처음 설계한 데이터베이스 구조 변경 또는 확장
      • 변경 또는 확장된 구조 최적화 하거나, 유지 및 관리에 상대적으로 많은 비용 소요

3.1.3. RDB 모델링

  • 릴레이션 예시

    • 릴레이션 = 테이블, 스키마 = 속성 = 열, 인스턴스 = 속성에 맞는 특정 값 (데이터) = 행
  • 릴레이션 구성

    • 릴레이션 스키마
      • 릴레이션의 논리적 구조
      • 릴레이션 이름과 릴레이션에 포함된 모든 속성의 이름으로 정의
        • ex) 고객(고객아이디, 고객이름, 나이, 등급, 직업, 적립금)
      • 릴레이션 내포 (Relation Intension)
      • 자주 변하지 않는 정적인 특징
        • 변화 발생 시, 최적화 과정 필요
    • 릴레이션 인스턴스
      • 특정 시점에 존재하는 튜플들의 집합
      • 릴레이션 외연 (Relation Extension)
      • 튜플의 삽입/삭제/수정이 자주 발생하는 동적인 특징
  • 데이터베이스 구성

    • 데이터베이스 스키마

      • 데이터베이스 전체 구조
        • 데이터베이스에서 가지고 있는 데이터 보여주는 구조
      • 데이터베이스를 구성하는 릴레이션 스키마 모음
    • 데이터베이스 인스턴스

      • 데이터베이스를 구성하는 인스턴스 모음

  • 릴레이션 특징
    • 튜플의 유용성
      • 하나의 릴레이션에 동일한 튜플 존재 불가 (기본키 같이 하나라도 달라야함)
    • 튜플의 무순서
      • 하나의 릴레이션에서 튜플 순서 무의미
    • 속성의 무순서
      • 하나의 릴레이션에서 속성 순서 무의미
    • 속성의 원자성
      • 속성 값으로는 하나만 들어올 수 있음

3.2. 키 (Key)의 종류

3.2.1. 키

    • 릴레이션에서 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합

3.2.2. 키의 특성

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

3.2.3. 키 종류

  • 슈퍼키 (super key)
    • 유일성을 만족하는 속성 또는 속성들의 집합
  • 후보키 (candidate key)
    • 유일성을 만족하며 최소성을 만족하는 속성 또는 속성들의 집합
  • 기본키 (primary key)
    • 후보키 중 하나
  • 대체키 (alternate key)
    • 후보키 중 기본키가 아닌 키
  • 외래키 (foreign key)
    • 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
    • 관계
      • 참조하는 릴레이션 : 외래키를 가진 릴레이션
      • 참조되는 릴레이션 : 외래키가 참조하는 기본키를 가진 릴레이션
    • 외래키 속성과 참조하는 기본키의 속성(이름)은 달라도 도메인(속성의 범위)은 동일해야함
    • 하나의 릴레이션에 여러 개의 외래키 존재 가능
    • 외래키를 기본키로 사용 가능
    • 같은 릴레이션의 기본키 참조하는 외래키 정의 가능

3.3. 무결성 제약 조건

3.3.1. 무결성 제약 조건

  • 개념
    • 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
    • 무결성
      • 데이터에 결함이 없는 상태
      • = 데이터가 정확하고 유효하게 유지된 상태
    • 데이터베이스의 상태가 변해도 무결성 제약조건은 반드시 지켜져야함
  • 종류
    • 도메인 무결성 제약 조건
      • 도메인 제약
      • 릴레이션 내 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 함
      • 속성 값과 관련된 무결성으로, SQL 문에서 형식, 널, 기본 값, 체크 등을 사용하여 지정 가능
    • 개체 무결성 제약 조건
      • 기본키 제약
      • 기본키는 NULL 값을 가져서는 안되며, 릴레이션 내 오직 하나의 값만 존재해야함
    • 참조 무결성 제약 조건
      • 외래키 제약
      • 자식 릴레이션 외래키 = 부모 릴레이션 기본키와 도메인
        • 자식 릴레이션 값 변경 → 부모 릴리에션의 제약을 받는 거
      • 부모 릴레이션 도메인과 다른 값으로 삽입, 수정 안됨
      • 자식 릴레이션에서 참조하는 값을 부모 릴레이션에서 삭제, 수정 거부

3.4. 관계 대수 (1)

3.4.1. 관계 대수 개념 및 종류

  • 개념

    • 절차 언어 (Procedural Language)
      • 원하는 결과를 얻기 위해 릴레이션의 처리 과정을 순서대로 기술하는 언어
    • 릴레이션을 처리하는 연산자들의 모임
    • 폐쇄 특성 (Closure Property)
      • 피연산자도 릴레이션이고 연산의 결과도 릴레이션
  • 종류

    • 순수 관계 연산자

      • 릴레이션의 구조와 특성 이용
      • Select, Project, Join, Division
    • 일반 집합 연산자

      • 릴레이션이 튜플의 집합이라는 점을 이용하여 두 릴레이션 간 연산 수행
      • Union, Intersection, Difference, Cartesian product

3.4.2. Select 연산자

  • 정의

    • 릴레이션에서 조건을 만족하는 튜플만 선택하여 결과 릴레이션 구성
    • 결과 릴레이션은 연산 대상 릴레이션의 수평적 부분집합 (수평적 연산자)
    • 하나의 릴레이션을 대상으로 연산 수행
  • 표현법

  • 특징

    • 교환 법칙 성립

3.4.3. Project 연산자

  • 정의

    • 릴레이션에서 선택한 속성의 값으로 결과 릴레이션을 구성
    • 수직적 연산자
    • 하나의 릴레이션을 대상으로 연산 수행
  • 표현

  • 특징

3.4.4. Division 연산자

  • 정의
    • 릴레이션2의 모든 튜플과 관련이 있는 릴레이션1의 튜플로 결과 릴레이션 구성
      • 릴레이션1이 2의 모든 속성 포함해야함
  • 표현법 : 릴레이션1÷릴레이션2

3.5. 관계 대수 (2)

3.5.1. Cartesian Product 연산자

  • 정의
    • 두 릴레이션 R과 S의 Cartesian Product
      • R×S로 표현
      • 두 튜플 모두 연결하여 만들어진 새로운 튜플로 결과 릴레이션 구성
    • 결과 릴레이션의 특성
      • 차수 = R 차수 + S 차수
      • 카디널리티 = R 카디널리티 x S 카디널리티
  • 특징
    • 교환적 특징

3.5.2. Union 연산자

  • 정의
    • 합병 가능한 두 릴레이션 R과 S의 합집합
      • R∪S로 표현
      • R 또는 S에 속하는 모든 튜플로 결과 릴레이션 구성
    • 결과 릴레이션 특성
      • 차수는 R,S 차수와 동일
      • 카디널리티 ≤ R 카디널리티 + S 카디널리티
  • 특징
    • 교환적 특징
    • 결합적 특징

3.5.3. Intersection 연산자

  • 정의
    • 합병 가능한 두 릴레이션 R과 S의 교집합
      • R∩S로 표현
      • 공통으로 속하는 튜플로 결과 릴레이션 구성
    • 결과 릴레이션 특성
      • 차수 동일
      • 카디널리티는 두 릴레이션의 어떤 카디널리티보다 같거나 적음
  • 특징
    • 교환적 특징
    • 결합적 특징

3.5.4. Difference 연산자

  • 정의
    • 합병 가능한 두 릴레이션 R과 S의 차집합
      • R-S로 표현
      • S에는 없는 R의 튜플로 결과 릴레이션 구성
    • 결과 릴레이션 특성
      • 차수는 동일
      • R-S의 카디널리티 ≤ R의 카디널리티 (반대는 반대)
  • 다른 연산자와 달리 특징 없음

3.5.5. Join 연산자

  • 정의
    • 조인 속성을 이용해 두 릴레이션 조합
    • 조인 속성의 값이 같은 튜플만 연결
    • 조인 속성은 공통으로 가지고 있는 속성
    • 동등 조인
  • 표현법
    • 릴레이션1 ⋈ 릴레이션2