0027

학교

DB01 - r-dbms

의제

  • 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는 데이터를 구조화하고 무결성과 내구성을 보장하는 체계적 시스템이며, 관계형 데이터 모델은 이를 표 형태로 구성하고 조작할 수 있게 한다는 것이 핵심입니다.