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의 예시. 교수 relationRelation Schema
Relation Schema는 relation의 논리적인 구조이다. 릴레이션의 이름과 그 릴레이션의 attribute들로 나타낸다.
Relation Instance는 relation에 현재 들어있는 내용물을 의미한다.
Key : 튜플에 연관되어 있는 attributes의 집합을 의미한다.
밑줄 친 attribute가 key에 해당한다.
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) : 데이터베이스 스키마를 정의하기 위해 사용DDL의 예시1. table을 만든다.DDL의 예시2. table을 삭제하거나 수정한다.
Data Manipulation Langugage (DML) : 데이터베이스에 접근하기 위해 사용. 우리가 흔히 아는 query language가 이에 해당한다.DML의 예시1. selectDML의 예시2. deletionDML의 예시3. insertion
이 때 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들 간의 관계를 의미한다.E-R Model
DataBase가 내부적으로 작동하는 방법
DataBase는 두 가지의 구성요소가 있다.
Storage Manager : DB와 OS간의 Interface. OS Filesystem과 상호작용. 효율적인 데이터의 저장과 수정 저장소에 접근하고 파일을 조직화하며, 인덱싱과 해싱을 한다.
Query Processor : 파싱과 변환. Query 수행과 실제 정보를 가져오는 것.