Contents
그리기도 SQL도 아닌 "설명하라" 문제용. 외울 건 표 안에 있는 단어랑 개수.
| 말 | 뜻 |
|---|
| Database | 서로 관련 있는 데이터를 모아놓은 것 |
| DBMS | 그 DB를 만들고·채우고·조작하고·공유하는 소프트웨어. Oracle, MySQL |
| Database system | DB + DBMS |
파일로 그냥 저장하면 생기는 문제 3개 (DB 쓰는 이유)
| 문제 | 뭐가 안 되나 |
|---|
| Integrity | 길이 제한, 중복 입력, 동명이인 구분 안 됨 |
| Management | 특정 데이터 빨리 못 찾음, 여럿이 동시에 쓰면 꼬임 |
| Durability | 쓰다가 장애 나면 파일 깨지고 복구 못 함 |
| 특징 | 한 줄 | 핵심 단어 |
|---|
| Self-describing | 데이터뿐 아니라 그 구조(메타데이터)도 DB 안에 같이 저장 | 카탈로그 |
| Data abstraction | 프로그램은 논리 구조만 보고 디스크에 어떻게 저장됐는진 모름 | program-data independence |
| Multiple views | 사용자마다 다른 모습으로 보여줌 | view = 저장 안 된 가상 테이블 |
| Sharing & multiuser transaction | 여러 사용자가 한 DB를 동시에 씀 | concurrency control, transaction |
| 장점 | 한 줄 |
|---|
| Controlling redundancy | 같은 데이터 여러 곳에 안 둠 → 갱신 한 번, 공간 절약, 불일치 없음. 성능 때문에 일부러 두기도 |
| Enforcing integrity constraints | 데이터가 지킬 조건(타입, 키, FK)을 DBMS가 강제 |
| Storage structures & efficient searching | 디스크 느리니까 버퍼·캐시, 빨리 찾게 인덱스(B-tree, B+tree) |
| Backup and recovery | 평소에 복사본, 장애 나면 직전 상태로 복구 |
| Restricting unauthorized access | 사용자별 권한 |
DBMS 안 쓰는 게 나을 때: 단순하고 안 바뀌는 앱 / 엄격한 실시간 요구 / 공간 부족한 임베디드 / 사용자 한 명
데이터 모델: DB 구조를 설명하는 개념들의 묶음. 데이터 타입, 관계, 제약조건, 기본 연산까지
| 모델 | 누구 눈높이 | 쓰는 개념 | 예 |
|---|
| Conceptual (high-level) | 사용자 | entity, attribute, relationship | ER 다이어그램 |
| Representational (중간) | 사용자도 이해하고 저장 방식에도 가까움 | relation, tuple, attribute, domain | 테이블. 상용 DBMS 대부분 |
| Physical (low-level) | 컴퓨터 전문가 | record format, ordering, access path | 디스크 배치, 인덱스 |
목표: 응용 프로그램을 물리적 DB에서 떼어놓기
| 단계 | 기술하는 것 | 개수 | 쓰는 모델 |
|---|
| External (view) | 그 사용자 그룹이 보는 부분만 | 여러 개 | |
| Conceptual | DB 전체 논리 구조 (entity, 타입, 관계, 제약) | 하나 | Representational |
| Internal | 물리 저장 구조, 접근 경로 | 하나 | Physical |
- 함정: Conceptual level은 Conceptual 모델이 아니라 Representational 모델로 씀
- Mapping: 층 사이에서 요청·결과를 변환. 데이터는 Internal에만 있고, 위로 들어온 요청을 DBMS가 아래 요청으로 바꿈
데이터 독립성: 한 층 스키마를 바꿔도 바로 위층은 안 바꿔도 됨. 3층으로 쌓은 이유. mapping만 고침
| 바꾸는 층 | 안 바뀌는 층 | 예 |
|---|
| Logical | Conceptual | External, 응용 프로그램 | 열 추가, 테이블 분리 |
| Physical | Internal | Conceptual | 인덱스 교체, 파일 구조 변경 |
- 이름은 바꾸는 층 기준. 테이블 건드리면 Logical, 디스크 건드리면 Physical / 둘 다 결과는 "기존 프로그램 안 고쳐도 됨"
| 단계 | 하는 일 | 결과물 |
|---|
| 1 요구사항 수집·분석 | 사용자 데이터 요구 모으기 | 요구사항 목록 |
| 2 개념적 설계 | 모델 골라서 개념 스키마로 | ER 다이어그램 |
| 3 논리적 설계 | 개념 스키마 → DB 스키마 | 테이블 |
| 4 물리적 설계 | 저장 구조 정하기 | 파일·인덱스 |
- 요구사항 말 → ER: "고유한" = key, "여러 개" = multivalued, "하나" = cardinality
- 좋은 설계: Redundancy(같은 정보 반복) 없음, Incompleteness(표현 못 하는 데이터) 없음
| 장점 | 한 줄 |
|---|
| Simplicity | 평평한 테이블이라 이해 쉬움 |
| Data integrity | 제약조건으로 유효·일관 |
| Easy data manipulation | SQL로 조건 걸어 조작 |
| Security | 인증·권한·암호화 |
| 몇 개 | 뭐 |
|---|
| 3 | 파일 저장 문제 / 데이터 모델 층 / 스키마 단계 |
| 4 | DB 시스템 특징 / 설계 단계 / 관계형 모델 장점 |
| 5 | DB 시스템 장점 |
| 2 | 데이터 독립성 |