DB01 - r-dbms
의제
- R-DBMS
- 관계형 데이터 모델
데이터베이스 시스템
1. 데이터베이스
- 현실 세계의 일부 측면(aspect)을 모델링하는 상호 관련된 데이터의 조직화된 컬렉션 (A. Pavlo)
-> 현실 세계의 어떤 부분을 정리해서 저장한 데이터 모음이다.- 관련된 것들이 함께 배치되며, 파일은 그렇지 않음
-> 그냥 파일처럼 아무렇게나 저장하는 것이 아닌, 관련된 것끼리 잘 연결해서 저장하는 것이다.
- 관련된 것들이 함께 배치되며, 파일은 그렇지 않음
2. 데이터베이스 시스템 (비공식적으로 설명)
- 자기 테이프(저장소)
- 순차적 접근(sequential access)
-> 데이터를 꺼낼 때 순서대로 읽어야 했다.
- 순차적 접근(sequential access)
- 저장소 + 파일 시스템 + 데이터
- 무작위 접근(Random access)
-> 파일을 무작위로 꺼낼 수 있는 시스템 - 데이터를 저장소에 저장하고 싶으면, 파일 시스템을 이용해야 한다.
- 무작위 접근(Random access)
- 파일 시스템 (플랫 파일)
- 데이터베이스를 CSV(쉼표로 구분된 값) 파일로 저장
- CSV 파일을 자체 코드로 관리
- 엔티티마다 별도의 파일 사용
- 애플리케이션은 레코드를 읽거나 업데이트하려 할 때마다 CSV 파일을 파싱해야 함
- CSV 파일을 자체 코드로 관리
- 파일 시스템만 썼을 때 생기는 문제
- 문제1 : 데이터 무결성 (data integrity)
- 값의 유효성을 어떻게 검사(examine)할 것인가?
- 문제2 : 구현의 어려움
- 특정 레코드를 어떻게 찾을 것인가?
- 동일한 데이터를 사용하는 새로운 애플리케이션을 어떻게 작성할 것인가?
- 문제3 : 내구성(durability)
- 파일 쓰기 중 기계가 고장 나면 어떻게 되는가?
- 문제1 : 데이터 무결성 (data integrity)
- 데이터베이스를 CSV(쉼표로 구분된 값) 파일로 저장
: 데이터베이스 시스템은 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)
- 구조(structure)
- 예시
- 관계형 데이터 모델: 가장 일반적인 모델, 코스의 주요 초점!
- 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는 슈퍼키가 된다.
- K가 슈퍼키(superkey)라는 뜻은,
- 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. 예시
- instructor 관계에서 값이 생성되려면, department에 PK로 있는 값이어야지만 추가가 가능하다.
데이터 언어
0. 데이터 모델의 구조에서,,
- 데이터 모델은 structor, operator, constraint 세 가지가 존재한다.
- 구조(structure)
➔ 테이블(relation), 행(row), 열(column)처럼 데이터를 어떻게 구성할 것인지 정의함 - 연산(operations)
➔ 데이터를 정의하거나 조작하는 데 사용하는 명령어들 (→ 여기서 DDL, DML이 포함됨) - 제약조건(constraints)
➔ 데이터 간의 규칙 (예: 기본키는 중복 X, 외래키는 참조 무결성 유지 등)
- 구조(structure)
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는 데이터를 구조화하고 무결성과 내구성을 보장하는 체계적 시스템이며, 관계형 데이터 모델은 이를 표 형태로 구성하고 조작할 수 있게 한다는 것이 핵심입니다.