데이터 모델은 내 목적에 맞게 요약 정리한다고 생각하면 된다.
A collection of tools for describing
데이터 조작어란 적절한 데이터 모델로 조직된 데이터에 접근하고 조작하기 위한 언어를 말한다.
Data 조작 기능은 크게 4가지라고 볼 수 있다.
읽기 영역
쓰기 영역
Read 조회(읽기)
Update 갱신
Delete 삭제
언어에는 상대적으로 2가지 종류가 존재한다.
Procedural
사용자가 어떻게 데이타를 얻을지에 대하여 구체화할 수 있는 언어 (ex. JAVA, C++, C)
Declarative(nonprocedural)
사용자가 어떻게 데이터를 얻을지 구체화할 필요가 없는 언어 (ex. SQL)
SQL은 굉장히 광범위하게 사용되는 언어이다.
데이터 정의어란 데이터 베이스 스키마를 정의하는 언어이다.
밑에 보이는 쿼리 언어의 표준은 ANSI에 의해서 정해진다.
create table instructor(
ID char(5),
name varchar(20),
dept_name varchar(20),
salary numeric(8,2)
)
DDL을 이용하여 다음과 같은 추상화 레벨의 Schema를 만든다. 각 level에는 각자의 schema가 존재
cf) view 는 create view~~를 통해서 physical은 index를 통해서~
DDL 정보는 data dictionary(system catalog)에 하나의 테이블 형태로 저장이 되게 된다.(DBMS는 모든 정보를 table 형태로 관리하게 된다.)
Data dictionary는 metadata(data of data)를 포함하고 있다.
metadata는 어떠한 데이터를 기술하는 데이터를 말한다. 이러한 metadata에는 다음과 같은 것들이 있다.
Database schema
Integrity constraints (무결성 제약조건)
-> Primary Key(개체 무결성 제약 조건 보장)
-> Referential integrity(참조 무결성 제약 조건 보장)
Authorization(권한)
주체(subject ,사용자) 객체 : 대상 (object)
Role Based Access Control 에 의해 결정
무결성 제약조건은 굉장히 강력한 제약 조건으로 크게 2가지가 존재한다.(모든 DBMS는 이 2가지 반드시 지키도록 되어있다. DBMS 제품에 따라 더 있을 수도 있음.)이러한 제약조건은 DBMS에 의해서 잘못된 데이터가 들어오지 않도록 컨트롤한다.
이러한 조건에 따라 거짓말이 들어오지 않도록 관리되어야 한다.
SQL : widely used non-procedural language
SQL 작성법 요구사항이 왔을 대 처리할 테이블이 어디있는 지확인할 것!
관계를 통해 2개의 테이블을 사용해야할 경우 경우의 수에서 만족 조건을 찾는다. RDBMS 속도 저하하는 단점 가질 수 밖에 없다!
Application programs에서 DataBase에 접근하는 방법은 크게 두가지이다.
Embeded SQL
중간 중간 SQL문을 직접 적음 compile 시 SQL 있는 것을 새로운 소스코드로 바꾸어야 함
API(ODBC, JDBC,...)
SQL을 하나의 함수 파라미터로 넣어서 보내줌
Logical Design(Logical Schema) - Deciding on the database schema. Database design requires that we find a "good" collection of relation schema
Physicla Design (Physical Schema) - Deciding on the Physical layout of the database
다음의 그림은 한 테이블에 여러 주제가 있다. 즉, 정규화가 잘 안된 상태이다. 또한 Data redundancy로 인하여 수정시 DB가 거짓말을 말 할 가능성이 존재하게 된다.
정규화 X시 조회성능은 높아진다. 즉, 편리함이 보장이 된다. 하지만 갱신 작업이 잘못될 가능성이 높아진다. 그래서 Data Design 에서는 good이라는 개념이 필요한다. 즉 engineering으로 결정을 하게 된다.
Normalization Theory 정규화
Entity Relationship Model
Entity : 유일하게 식별되는 개체
Relationship : Entity간 어떠한 관계가 있는 지
entity-relationship diagram
뒷단에서 어떻게 이루어졌는 지 이해, 상상, 예측이 되어야 한다.
ex) SSD HDD에 어떻게 가고 오는 지
SQL은 사람이 잘 이해하기 편한 언어로 DBMS에서는 DBMS가 이해하기 편한 언어(관계 대수)로 바꾸어야 한다.
transaction은 데이터 베이스 application에서 하나의 논리적인 함수를 실행한 연산의 모음을 말한다. 즉, DB에서 거래의 모든 것을 말한다고 보면 된다.