DB가 등장하게 된 이유
file system에서의 문제가 많았다.
- Data의 중복과 불일치
- 새로운 작업을 하기 위해선 새 프로그램을 만들어야 했다. -> 접근이 어려웠다.
- Integrity Problem : 제약조건을 걸기가 어려웠다.
- Atomicity of update : 만일 A, B에 수행되는 일이 있을 때, A와 B 모두 수행되거나 수행되지 않아야 함. file system에서는 이것을 만족하기 어려웠다.
- 여러 사용자가 동시에 접근할 때 문제 발생.
- 보안 이슈
-> DataBase System은 위 문제들을 모두 해결해 준다.
DB는 추상적인 것을 제공해준다.
- Physical Level : 레코드가 어떻게 저장되는지 묘사함.
- Logical Level : 실제 데이터 베이스에서 데이터가 어떻게 저장되는지, 각 데이터간의 관계는 어떻게 되는지 묘사함.
- View Level : 응용 프로그램에서는 데이터의 세부정보를 숨길 수 있고, 보안 목적을 위해 정보를 숨길 수도 있다.
Instance와 Schemas
Schema : 데이터 베이스에서의 논리적인 구조를 뜻한다.
- Schema의 예시 : 고객과 계좌가 있을 때 데이터베이스는 그 두 개의 정보와 관계로 구성되는 것
- Physical Schema : Physical level에서 디자인된 데이터베이스
- Logical Schema : Logical level에서 디자인된 데이터베이스
Instance : 데이터베이스에서 실제로 들어있는 내용물
-> Schema는 틀이고, Instance는 내용물이다.
DataBase가 성공한 이유는 Physical Data Independence이다. 즉, Physical과 Logical이 완전히 분리되어 있다. (이 때, App은 Logical Schema에 의존한다.)
Data Model
Data에 대해서 묘사하는 것이다.
- Data를 어떻게 조직화할 것인지
- Data에 어떻게 접근할 것인지
- Data에 어떤 제약과 규칙을 줄 것인지
예시를 들자면
- Relational Model : Data가 여러 개의 table에 저장돼 있다. 이를 각각 Relation이라 부른다.
- Entity-Relationship Data Model : 주로 DB Schema를 디자인할 때 사용된다.
등등이 있다.
Relation
Relation Schema는 relation의 논리적인 구조이다. 릴레이션의 이름과 그 릴레이션의 attribute들로 나타낸다.
Relation Instance는 relation에 현재 들어있는 내용물을 의미한다.
Key : 튜플에 연관되어 있는 attributes의 집합을 의미한다.
- key에 해당한다면, 해당 attribute에는 같은 값을 가질 수가 없다.
- Super Key : Key가 되는 모든 집합들
- Candidate Key : Super Key들 중 최소한의 attribute들로 이루어진 key
- Primary Key : Candidate Key들 중 주요한 키
DataBase를 실제로 사용하는 방법
SQL (Structured Query Language)를 사용한다.
- non-procedural language이다.
- SQL은 두 가지 측면이 있다.
- Data Definition Language (DDL) : 데이터베이스 스키마를 정의하기 위해 사용
- Data Manipulation Langugage (DML) : 데이터베이스에 접근하기 위해 사용. 우리가 흔히 아는 query language가 이에 해당한다. 이 때 Join의 개념도 있다. natural join 혹은 where에 조건을 추가해서 join을 할 수 있다.
DataBase를 어떻게 디자인 해야하는지
- 상업적인 Decision : 데이터베이스에서 어떠한 attribute가 필요할지
- 컴퓨터 공학적인 Decision : 어떠한 스키마가 필요한지, 어떻게 attribute를 relation마다 분배할지 결정하는 것이다.
위와 같은 디자인을 하게 되면 발생하는 문제를 예를 들면,
- update anomaly : 학과의 building이 바뀌어도 교수의 building은 바뀌지 않는다. 모든 교수의 building을 수정해야 한다.
- insertion anomaly : primary key 없이는 insert가 불가능하다. 즉, 교수가 없는 과를 먼저 개설할 수가 없게 된다.
- deletion anomaly : 교수가 모두 지워지면 과도 지워진다.
- 추가적으로 데이터의 중복도 발생한다.
-> 교수와 학과를 다른 Schema로 생성하면 문제가 해결된다.
Entity-Relationship Model
- Entity : 다른 object들과 구별되는 object를 의미한다.
- Relationship : entity들 간의 관계를 의미한다.
DataBase가 내부적으로 작동하는 방법
DataBase는 두 가지의 구성요소가 있다.
- Storage Manager : DB와 OS간의 Interface. OS Filesystem과 상호작용. 효율적인 데이터의 저장과 수정 저장소에 접근하고 파일을 조직화하며, 인덱싱과 해싱을 한다.
- Query Processor : 파싱과 변환. Query 수행과 실제 정보를 가져오는 것.