학교
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)을 피하기 위한 데이터베이스 추상화
데이터베이스를 간단한 데이터 구조로 저장
고수준 언어를 통해 데이터에 접근
데이터베이스 추상화에는 포함되지 않는 것:
저장소 구현, 관계 등
논리적 계층과 물리적 계층 간의 명확한 분리
5. DBMS로서의 인터페이스
(1) 데이터 정의(definition) 언어(DDL)
(2) 데이터 조작(manipulation) 언어(DML)
-> 구조적 쿼리 언어(SQL)는 DDL과 DML 모두 포함
(3) SQL은 R-DBMS에서 사용하는 프로그래밍 언어이다.
의제
R-DBMS
관계형 데이터 모델
데이터 모델
1. 데이터 모델: 데이터 또는 정보를 설명하는 개념
-> 데이터나 정보를 어떻게 표현하고 설명할지 정해 놓은 방법이다.
데이터 모델은 세 부분으로 구성됨
구조(structure)
연산(Operations)
제약 조건(Constraints)
예시
관계형 데이터 모델: 가장 일반적인 모델, 코스의 주요 초점!
NoSQL
키/값, Hadoop : 간단한 형태, 키 하나에 값 하나를 저장
그래프 : 데이터 간의 관계를 그래프로 저장
문서 : 문서 단위로 데이터를 저장
컬럼 패밀리 : 열 중심으로 데이터를 저장
머신 러닝
배열/행렬
기타: 계층적, 네트워크
관계형 데이터 모델
관계형 데이터 모델: 데이터를 관계의 관점(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 세 가지가 존재한다.
구조(structure)➔ 테이블(relation), 행(row), 열(column)처럼 데이터를 어떻게 구성할 것인지 정의함
연산(operations)➔ 데이터를 정의하거나 조작하는 데 사용하는 명령어들 (→ 여기서 DDL, DML이 포함됨)
제약조건(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는 데이터를 구조화하고 무결성과 내구성을 보장하는 체계적 시스템이며, 관계형 데이터 모델은 이를 표 형태로 구성하고 조작할 수 있게 한다는 것이 핵심입니다.