한동대학교/Database

DB01 - r-dbms

pangil_kim 2025. 2. 15. 05:03
728x90
의제
  • R-DBMS
  • 관계형 데이터 모델

 

데이터베이스 시스템

1. 데이터베이스

  • 현실 세계의 일부 측면(aspect)을 모델링하는 상호 관련된 데이터의 조직화된 컬렉션 (A. Pavlo)
    -> 현실 세계의 어떤 부분을 정리해서 저장한 데이터 모음이다.
    • 관련된 것들이 함께 배치되며, 파일은 그렇지 않음
      -> 그냥 파일처럼 아무렇게나 저장하는 것이 아닌, 관련된 것끼리 잘 연결해서 저장하는 것이다.

 

2. 데이터베이스 시스템 (비공식적으로 설명)

  • 자기 테이프(저장소)
    • 순차적 접근(sequential access)
      -> 데이터를 꺼낼 때 순서대로 읽어야 했다.
  • 저장소 + 파일 시스템 + 데이터
    • 무작위 접근(Random access)
      -> 파일을 무작위로 꺼낼 수 있는 시스템
    • 데이터를 저장소에 저장하고 싶으면, 파일 시스템을 이용해야 한다.

 

  • 파일 시스템 (플랫 파일)
    • 데이터베이스를 CSV(쉼표로 구분된 값) 파일로 저장
      • CSV 파일을 자체 코드로 관리
        • 엔티티마다 별도의 파일 사용
        • 애플리케이션은 레코드를 읽거나 업데이트하려 할 때마다 CSV 파일을 파싱해야 함
    • 파일 시스템만 썼을 때 생기는 문제
      • 문제1 : 데이터 무결성 (data integrity)
        • 값의 유효성을 어떻게 검사(examine)할 것인가?
      • 문제2 : 구현의 어려움
        • 특정 레코드를 어떻게 찾을 것인가?
        • 동일한 데이터를 사용하는 새로운 애플리케이션을 어떻게 작성할 것인가?
      • 문제3 : 내구성(durability)
        • 파일 쓰기 중 기계가 고장 나면 어떻게 되는가?

: 데이터베이스 시스템은 higher lever / 파일 시스템은 Lower lever I/O

 

3. 데이터베이스 관리 시스템(DBMS)

  • 애플리케이션이 데이터베이스에 정보를 저장하고 분석할 수 있게 해주는 소프트웨어
    • 파일 I/O 수준 세부사항에 대해 걱정하지 않고 데이터에 접근할 수 있게 함
  •  일반 목적의 DBMS는 데이터베이스의 검색, 정의, 생성, 쿼리, 업데이트 및 관리를 가능하게 하도록 설계됨

 

4. DBMS로서의 데이터 저장소

  • 저수준 구현 및 유지 관리 작업(chores)을 피하기 위한 데이터베이스 추상화
    1. 데이터베이스를 간단한 데이터 구조로 저장
    2. 고수준 언어를 통해 데이터에 접근
  • 데이터베이스 추상화에는 포함되지 않는 것:
    1. 저장소 구현, 관계 등
    2. 논리적 계층과 물리적 계층 간의 명확한 분리

 

5. DBMS로서의 인터페이스

   (1) 데이터 정의(definition) 언어(DDL)

   (2) 데이터 조작(manipulation) 언어(DML)

   -> 구조적 쿼리 언어(SQL)는 DDL과 DML 모두 포함

   (3) SQL은 R-DBMS에서 사용하는 프로그래밍 언어이다. 

 

의제
  • R-DBMS
  • 관계형 데이터 모델

 

데이터 모델

1. 데이터 모델: 데이터 또는 정보를 설명하는 개념
-> 데이터나 정보를 어떻게 표현하고 설명할지 정해 놓은 방법이다.

  • 데이터 모델은 세 부분으로 구성됨
    1. 구조(structure)
    2. 연산(Operations)
    3. 제약 조건(Constraints)
  • 예시
    1. 관계형 데이터 모델: 가장 일반적인 모델, 코스의 주요 초점!
    2. NoSQL
      • 키/값, Hadoop : 간단한 형태, 키 하나에 값 하나를 저장
      • 그래프 : 데이터 간의 관계를 그래프로 저장
      • 문서 : 문서 단위로 데이터를 저장
      • 컬럼 패밀리 : 열 중심으로 데이터를 저장
    3. 머신 러닝
      • 배열/행렬
    4. 기타: 계층적, 네트워크

 

관계형 데이터 모델
  • 관계형 데이터 모델: 데이터를 관계의 관점(term)에서 설명하는 데이터 모델
  • 관계 : 엔티티를 나타내는(represent) 속성의 관계를 포함하는 순서 없는 집합(unordered set)

 

관계 (테이블) - (1)

1. 속성 (열)

  • 속성 값은 원자적(불가분 데이터 타입)이어야 함
    • 불가분 데이터 타입 : 내부적으로 더 작은 단위로 나눌 수 없는 데이터 타입(int, float, char, string)
    • 문자열(String)은 대부분의 데이터베이스 시스템에서 원자적 데이터 타입임
  • 각 속성에 대해 허용되는 값의 집합속성의 도메인이라고 함
  • NULL모든 도메인의 구성원으로, 값이 "알 수 없음unknown)"을 나타냄(indicating)
    • NULL 값은 많은 작업에서 복잡성을 초래함

 

2. 튜플 (행)

  • 튜플은 관계에서 속성 값의 집합(set) (또한 도메인으로 알려짐)
  • 각 튜플은 관계의 각 속성에 대해 하나의 값을 가짐
  • 값은 (일반적으로) 원자적/스칼라임

 

예시: 관계

1. n-ary 관계 = n개의 열을 가진 테이블

 

 

관계 (테이블) - (2)

1. 관계는 순서가 없음: 튜플의 순서는 중요하지 않음(irrelevant) (튜플은 임의의(arbitrary) 순서로 저장될 수 있음)

   1) 예시

 

표기법(Notations)

1. 테이블 사용
-> 테이블은 여러 개의 열(속성) 과 행(튜플) 으로 구성된다.

2. 집합 표기법(set notation) 사용

  • 테이블
    • instructor(ID, name, dept_name, salary)
  • 튜플
    • (76766, Crick, Biology, 72000.00)
    • (83821, Brandt, Comp. Sci., 92000.00)
    • (45565, Katz, Comp. Sci., 75000.00)
  • 수학적으로(mathematically), 집합은 순서나 중복이 없음
  • 그러나 우리는 암묵적으로(implicitly) 그것들을 순서가 있는 집합으로 취급함(treate)
    • (76766, Crick, Biology, 72000.00) != (72000.00, Biology, Crick, 76766)
    • 관계에 있어서 튜플의 순서는 중요하지 않지만, 튜플 내에서는 순서가 있는 집합으로 취급한다.
  • 튜플(행)들의 순서는 테이블 전체 안에서는 사실 중요하지 않다.
    (위에 있는 행이 먼저냐, 아래에 있는 행이 먼저냐는 중요하지 않음)
  • 하지만 하나의 튜플 안에서는 값들의 순서가 중요하다.
    ➔ 튜플 안에서 ID가 첫 번째, name이 두 번째, dept_name이 세 번째, 이런 순서가 정해져 있다는 거야.

1. 키

  • 제약 조건의 한 유형
  • 하나 이상의 속성이 키를 형성함
  • 관계의 키는 동일한 키 속성의 중복 값을 허용하지 않음

 

2. 정의

: K ⊆ R 라고 하자.
 K는 릴레이션(테이블) R 속성들의 부분 집합이다.
(즉, 테이블에 있는 여러 속성 중 몇 개를 고른 것)

  • Superkey (슈퍼키)
    • K가 슈퍼키(superkey)라는 뜻은,
      ➔ K의 값들만으로도 각 행(튜플)을 유일하게 구분할 수 있다는 의미이다.
    • 쉽게 말하면:
      K에 포함된 속성들만 봐도 누가 누구인지 딱 구별할 수 있다!
    • 예시 (슬라이드에 빈칸):
      K = {ID, name}이라고 할 때, 이 둘을 조합하면 모든 튜플이 다 구분된다면 K는 슈퍼키가 된다.
  • Candidate Key (후보키)
    • 슈퍼키 중에서도 더 이상 속성을 뺄 수 없는 최소한의 슈퍼키
      ➔ 후보키(candidate key) 라고 한다.
    • 다시 말해:
      "이 속성들로 유일하게 구분할 수 있고, 이보다 더 적은 속성으로는 구분이 안 됨!"
    • 예시:
      K = {ID} 만으로도 튜플을 유일하게 구분할 수 있다면, K는 후보키!
  • Primary Key (기본키)
    • 여러 후보키들 중에서 하나를 선택해서
      ➔ 그 테이블의 기본키(primary key) 로 지정한다.
    • 이 기본키는 중복되면 안 되고, NULL 값도 가질 수 없다.
    • 보통 어떤 걸 고를지는:
      • 간결성, 이해하기 쉬움, 데이터 크기 등을 고려해서 선택한다.

 

기본 키 (Primary Keys)

1. 관계의 기본 키는 단일 튜플을 고유하게 식별함(uniquely identifies)

 

2. 일부 DBMS는 기본 키를 정의하지 않으면 자동으로 내부 기본 키를 생성함

  • 예: SQL:2003 (SEQUENCE), MySQL (AUTO_INCREMENT)

 

3. 예시

:

instructor(ID, name, dept_name, salary)

 

외래 키 (Foreign Keys)

1. 외래 키는 한 관계의 속성이 다른 관계의 튜플에 매핑되어야 함을 지정함(specifies)

-> 한 테이블의 값이, 다른 테이블에 반드시 있어야 한다는 규칙!

  • 한 관계의 값은 다른 관계에 나타나야 함
  • 참조 관계 → 참조된 관계

 

2. 예시

department 관계의 dept_name은 instructor 관계에 참조키로 사용된다.(referecing)

- instructor 관계에서 값이 생성되려면, department에 PK로 있는 값이어야지만 추가가 가능하다.

데이터 언어

0. 데이터 모델의 구조에서,,

  • 데이터 모델은 structor, operator, constraint 세 가지가 존재한다.
    1. 구조(structure)
      ➔ 테이블(relation), 행(row), 열(column)처럼 데이터를 어떻게 구성할 것인지 정의함
    2. 연산(operations)
      ➔ 데이터를 정의하거나 조작하는 데 사용하는 명령어들 (→ 여기서 DDL, DML이 포함됨)
    3. 제약조건(constraints)
      ➔ 데이터 간의 규칙 (예: 기본키는 중복 X, 외래키는 참조 무결성 유지 등)

1. 데이터 정의(definition) 언어 (DDL)

:

데이터베이스에서 관계 및 정보를 표현하는 방법
-> DDL은 데이터베이스 안에 있는 테이블(=관계)과 그 구조를 정의할 때 사용하는 언어다.

  • 데이터베이스 스키마를 정의함

 

2. 데이터 조작(manipulation) 언어 (DML)

데이터베이스에 정보를 저장하고 검색하는 방법
-> DML은 데이터베이스에 있는 데이터를 저장하거나 조회, 수정, 삭제할 때 사용하는 언어다.

  • 절차적
    • 쿼리는 DBMS가 원하는 결과를 찾기 위해 사용할 (고수준) 전략을 지정함
    • 관계 대수에 기반함
  • 비절차적 DML도 존재함
    • 쿼리는 어떤 데이터를 원하는지를 지정하고, 그것을 찾는 방법은 지정하지 않음
    • 관계 미적분에 기반함 – 이는 쿼리 최적화와 관련됨

 

데이터 언어 (선택 사항)

1. 조금 더 구체적 …

   1) DDL

   2) DML

   3) TCL: 트랜잭션 제어 언어

   4) DQL: 데이터 쿼리 언어

   5) DCL: 데이터 제어 언어

 

데이터베이스 스키마

1. 데이터베이스: 관계(테이블)의 집합

 

2. 데이터베이스 스키마: 데이터베이스의 논리적 구조

 

3. 데이터베이스 인스턴스: 주어진 순간의 데이터 스냅샷

   1) 관계 인스턴스: 주어진 순간의 관계(속성 및 튜플)의 스냅샷

 

다음

1. 다음 내용: 관계 대수

 

 

 

 

📌 1. 데이터베이스 시스템의 개념

 

개념 설명
데이터베이스 현실 세계의 일부를 반영한, 관련된 데이터들의 집합
파일 시스템 vs DBMS 파일 시스템은 무작위 접근이 어려우며, 무결성/내구성 문제 있음 → DBMS는 추상화 내구성 제공
DBMS 애플리케이션이 데이터를 저장·조회할 수 있게 해주는 소프트웨어 시스템

📌 2. 데이터 모델과 관계형 모델

항목 설명
데이터 모델 구성 구조(structure), 연산(operations), 제약조건(constraints)
관계형 데이터 모델 가장 일반적이며, 데이터를 테이블로 표현
테이블 구성 속성(열, attribute): 원자적 데이터 / 튜플(행, tuple): 속성들의 값 모음 (순서 없음)
표기법 테이블: instructor(ID, name, dept_name, salary)<br>튜플: (76766, Crick, Biology, 72000.00)

📌 3. 키(Key)의 개념

키 종류 설명
슈퍼키 (Superkey) 하나 이상의 속성으로 유일성 확보
후보키 (Candidate key) 슈퍼키 중 최소한의 속성으로 유일성 확보
기본키 (Primary key) 후보키 중 선택된 키, 중복 및 NULL 금지
외래키 (Foreign key) 다른 테이블의 기본키를 참조하여 무결성 보장

📌 4. 데이터 언어 (SQL 관련)

언어 설명
DDL (정의) 테이블 생성, 구조 정의
DML (조작) 데이터 조회/삽입/수정/삭제
SQL 관계형 데이터베이스에서 사용되는 대표 언어, DDL + DML 포함
기타 TCL(트랜잭션), DCL(권한), DQL(쿼리) 등도 있음

📌 5. 데이터베이스 스키마와 인스턴스

용어 설명
스키마 데이터베이스의 논리적 구조
인스턴스 특정 시점의 데이터 상태(스냅샷)
관계 인스턴스 테이블의 속성과 튜플로 구성된 스냅샷

📌 6. 파일 시스템의 한계

  • 무결성 보장 어려움
  • 레코드 탐색 비효율
  • 내구성 문제 (파일 쓰기 도중 장애 발생 시 손상)

정리하자면, R-DBMS는 데이터를 구조화하고 무결성과 내구성을 보장하는 체계적 시스템이며, 관계형 데이터 모델은 이를 표 형태로 구성하고 조작할 수 있게 한다는 것이 핵심입니다.

 

728x90