지난 시간
위의 속성까지를 정의하는 것이 Logical Design 이다.
Crick 을 삭제하면 다른 데는 없으므로 Biology 학과의 정보가 사라진다. (연쇄적인 삭제 문제)
- 근본적인 이유? 한 테이블에 attribute 가 너무 많기 때문이다.
- 해결방법? 테이블을 ID, name, salary 와 dept_name, building, budget 으로 나누어 해결할 수 있다.
- 분리 문제가 발생하므로 두 테이블에 소속 학과 dept_name 을 공통으로 주자.
Database Languages
- 프로그램 언어를 말하는 것이 아님
- 데이터 정의 언어 DDL: 스키마 정의(=데이터베이스에 포함되는 테이블, attribute 정의, table 생성)
- 데이터 조작 언어 DML: 각 데이터를 입력(insertion), 삭제(deletion), 수정(update), 찾기(search)
Data Definition Language(DDL)
-
DDL과 DML 이 다른 언어는 아님, 역할에 따른 분류.
-
테이블, attribute 정의 = 스키마 정의 언어
-
SQL을 사용한 DDL 의 예
-
- 테이블 생성 및 data dictionaty 갱신(= meta data: 피지컬, 로지컬, 서브 스키마의 집합) 갱신
🤔 딕셔너리를 갱신한다? > 값을 바꾸는 게 아닌 attribute(하나 더 큰 단위)를 바꾸는 것임.
-
- 저장 장치 구조와 데이터 접근 방법 정의 (피지컬 스키마 정의)
-
- Integrity constraints (무결성 제약조건) 정의
Domain constraints: 특정 속성에 저장될 수 있는 값에 제한 주는 것. 테이블을 만들 때 정의.
Refrential integrity: 공통 속성의 참조 제약 조건. (공통일 때 없는 정보를 추가해서는 안됨)
-
- Authorization 권한 설정
Data manipulation
- 직접적인 데이터를 다루기 위한 언어
- 검색, 삭제, 갱신, 추가
- DML : 위의 행동을 질의하는 질의어.
- 절차적 DML : 데이터 처리 과정을 직접 지정
- 선언적 DML : 데이터 처리 방법에 관여하지 않고 명령을 통해 결과를 얻음. (K, M, L relation 에서 A 데이터를 찾아라!), SQL이 이에 속함.
SQL
Database Administrator
- DB 설계와 관리
- DMA 의 역할 : 스키마 정의, 갱신 + 접근 권한 설정 = Definition 작업 / 유지보수
Functional View
✅ Storage manager 저장 관리 프로그램
- 데이터와 응용 프로그램 또는 질의 간의 인터페이스
- 정확한 검색과 갱신을 위한 관리.
✅ Query Processing 질의 처리기
- Parsing and translation (query에 대한 문법 분석, 기계어로 변환)
- Optimization (algebra expression을 최적화된 질의문으로 변환, excution plan 반환, 이 과정에서 통계정보가 활용되어 접근 빈도에 따른 최적화)
- Evaluation (검색 결과의 정확도 평가, query output 도출.)
Transcation Management
Transcation?
- 파일 시스템의 automicity. (계좌 이체 트랜잭션, 입금 트랜잭션)
Transcation manager
- 트랜잭션 시작 전후 (계좌 이체 전후 합이 일치) 일관성 유지
- transcation recovery (= 원자성)
- 병행제어 관리 (여러 트랜잭션이 있을 때 독립적으로 트랜잭션 진행)
Database System 역사
- 50s - 60s : 순차적 접근만 가능한 자기테이프에 기록.
- 60s - 70s : 하드디스크의 등장. / relational model 의 등장
- 80s : relational model에서 SQL 이 표준이 됨.
- 90s : 데이터 양의 증가로 마이닝, 웨어하우스, 웹 커머스의 등장
- 00s : 빅테이터, Map reduce