Database System Concepts PART2 - Introduction to the Relational Model
# RDB는 simplicity that eases the job of programmer와, 지속적인 new feature incorporating (xml data 지원, complex data type에 대한 지원 등 ) 으로 상업적으로 가장 많이 사용됨
# RDB는 unique name을 가진 tables로 구성된다.
# relation algebra(관계대수) = RDB model
# relation = table
# tuple = row
# attribute = column
# relation instance : containing a specific set of rows
# Relation 은 Set of tuples 이므로, tuple들이 나타나는 순서는 irrelevant하다!
# 각 attribute의 모든 원소를 포함하는 최소 크기의 집합을 domain 이라 한다.
# domain의 elements가 indivisible unit이라고 여겨지면 이를 atomic이라고 한다.
-> domain그 자체보다, 우리가 이것을 어떻게 이용하냐가 atomic 여부를 결정한다 ( 전화번호를 지역번호, 앞번호, 뒷번 호 이렇게 나눠 쓸거면 atomic한 것이 아니다)
# Database Schema = logical design of db
# Database instance = snap-shot of the data in given instant time
# relation에서의 각 tuple은 Uniquely Identifiable 해야한다!
# SuperKey : "해당 relation에서 row를 uniquely Identifiable 하게 해주는 set of one or more attributes" => relation에서 tuple을 특정지을 수 있게 해주는 1개이상의 atrb
-> K가 SuperKey라면, K의 superset들 모두 해당 relation의 SuperKey이다!
#Candidate Key : "SuperKey 중, no proper subset is superkey인 것들" 즉, minimal한 것들
-> 갯수가 최소인 것들이 아니다! 만약 {ID} 하나로도 identify가 되고, {name, nickname}로도 identify가 된다면, 이들 모두 Candidate Key이다. {name} 혹은 {nickname}과 같은 subset들이 superkey가 될 수 없기 때문.
=> 즉, subset중 그 어느것도 superKey가 될 수 없는 key가 candidate key이다.
# Primary Key: candidate Key중 설계자가 정한 것!
-> primary key는 변하지 않는 것으로 해야한다. ( 주소 (x) , id-number (o) )
#Primary Key constraints
1. primary key는 다른 atrb보다 먼저쓰이고, 밑줄을 긋는다.
ex) classroom(building, room_number, capacity)
r1테이블의 A column가 foreign Key이며, 해당 attribute가 r2테이블의 B를 가리키고있다면,
A는 "foreign key from r1 referencing to r2"
r1 is referencing relation
r2 is referenced relation
- referenced attribute(s) must be the primary key of the referenced relation
- values appearing in specified attributes of any tuple in the referencing relation also appear in specified attributes of at least one tuple in the referenced relation
- 참조 무결성은 foreign key의 referencing relation과 referenced relation사이에서는 당연히 있어야하는 것이고,
foreign Key가 아닌 attribute에서의 참조무결성도 존재한다!!!
- schema diagram에서 "쌍두 화살표"로 나타낸다.
Query Language는 세가지로 categorize할 수 있다.
1. imperative( 명령적인)
2. functional
3. declarative
-> Relational algebra(관계대수)는 functional query language이며, SQL query language의 이론적 basis이다.
-> SQL은 iperative, functional, declarative적인 모습을 모두 갖고있다.
# Relational algebra는 1개 혹은 2개의 relation(table)을 input으로 하여, new relation을 output해준다.
# 이를 unary, binary operation이라고 한다.
sigma가 select를 의미한다.
술부에는 다음과 같은 연산자를 사용할 수 있다.
단어 그대로 원하는 attribute들만 return 해주는 unary operation이다
Pi문자가 project operation을 뜻한다.
위 relational algebra 표현에서 salary/12와 같이 계산식을 포함할 수 있다.
Cartesian-product operation은 X 로 표현한다.
r1 X r2는 r1의 모든 tuple과 r2의 모든 tuple을 하나씩 골라서 이어붙인 모든 경우의 수를 담고있다.
Cartesian Operation 을 하면, 연산의 input으로 들어온 두 relation에서 무엇인가 겹치는 column이 있기 마련이다.
따라서, Cartesian Operation을 실행한 후, Selection 연산을 Composition하는 경우가 많기에, 이 둘을 하나로 합쳐놓은 연산자가 등장했는데 그것이 바로 Join Operation이다.
연산 기호는 아래와 같다.
- input relation들의 arity(number of attributes)가 같아야 가능
- the types of ith attributes of both input relations must be the same
이 두 조건을 만족하는 relation들을 compatible하다고 한다.
- Intersection과 Set-difference 연산 모두 relation이 Compatible해야 가능하다!
프로그래밍에서 변수를 할당하는 것과 같음
아래와 같이 E relation을 x라는 이름으로 rename하면서, A1,A2,...An으로 각 attribute의 name도 rename할 수 있다.
Ideltical한 의미를 가지는 Query를 작성하는 방법은 여러가지이다.
Query Optimizer in database systems가 query를 최적화해서 수행해줄 것이다.
- Schema of relation :: logical design
- instance of relation :: contents at a point in time
- superkey :: one or more attributes that guarantee to identiry tuples in the relation uniquely
- candidate key:: minimal superkey ( indivisible ), that is "none of whose subsets is a superkey"
- One of the candidate keys of a relation is chosen as its primary key
- foreign-key constraint :: 참조무결성을 의미한다
Database System Concepts PART3 - Introduction to SQL (0) | 2022.10.23 |
---|---|
Database System Concepts - 1장 Introduction (0) | 2022.09.25 |