1.1 Intro
DBMS
- Database management system
Relational Model
-
maximal independence
-
Entities : 개체
-
Relationships : 관계
DBMS를 쓰는 이유
- Data independence
- Efficient data access
- 무결성 보안성 생산성 등등
스키마
- 데이터의 구조를 표현한 것
- 각각의 릴레이션은 스키마를 가진다
무결성
3개의 스키마로 나눠서 관리하는 이유
rDBMS
- Logical 데이터 independence가 제공됨
- physical 데이터 independence를 제공한다
Transactions
ACID
- Atomicity
- Consistency
- Isolation
- Durability
repeatable read : 읽을 때마다 값이 바뀌는
Oracle에서는 옛날 꺼랑 오늘 꺼도 보여줌
병행제어(Concurrency Control)로 문제 해결
1.2 relational model
relational Data Model
- Structure
- Operations
- Constraints
Data independence
중복 허용 안 됨
릴레이션
: a set of rows or tuples
- tuples ; row ; records ; cardinality
- attribute ; columns ; fields; degree
- 행과 열의 순서는 중요하지 않다
- primary key는 유니크하다
비어있는 건 null값
DDL
- data definition Language
- students relation
- enrolled table
type이 맞지 않으면 에러냄
m:n의 관계성 → 별도 테이블
m:1, 1:n, 1:1 → 별도 테이블x
DML
- Data manipulation Language
- INSERT INTO
- SET_ORIENTED SEMANTICS (집합 시맨틱)
무결성 제약조건 (ICs)
- 데이타 엔트리 에러
- 만족하는지 DBMS가 체크
- Constraint의 두가지 예시
- Primary key
- entity의 무결성을 보장
- primary key에는 null값 안 됨
- primary key가 아니면 중복 허용 가능 (근데 또 유니크 키면 달라야함)
- primary key에는 자동적으로 인덱스를 만들어서 다른 ex) 9999에 가있는지 빨리 체크할 수 있도록 한다
- foreign key
- 참조 무결성
- 논리적인 포인터
- dangling references 발생하지 않음
- null 값 됨
- 자기를 참조하는 특수 형태의 외부키도 있음
key가 되려면
- 키로 지정된 속성 값이 같으면 두 행은 동일한 행이어야 한다
- 키의 부분 집합으로는 고유성을 유지할 수 없다 (최소성을 가진다)
Candidate key (후보키)
superkey (슈퍼키)
삽입하거나 지울 때
- CASCADE
- NO ACTION
- SET NULL
- SET DEFAULT
업데이트 되는 새로운 값이 parent table에 primary 값으로 존재하면 문제없음
존재하지 않으면 에러
트랜잭션에서 무결성 제약조건
- commit할 때까지 미뤄라
- Base type의 값이 바뀌면 view도 바뀜 (조건 아니면 안 바뀜)
View
- 뷰는 definition만 저장된다
- 가상 릴레이션이다
- 장점
- 간단하게 보고싶은 것만 볼 수 있음
- data independence
- security
- 업데이트에서는 좀 제한적임
- Materialized 뷰
릴레이션