상세 컨텐츠

본문 제목

Database System Concepts PART2 - Introduction to the Relational Model

데이터베이스(DB) System Concepts

by 앱등개발자IOS 2022. 10. 22. 22:29

본문

# RDB는 simplicity that eases the job of programmer와, 지속적인 new feature incorporating (xml data 지원, complex data type에 대한 지원 등 ) 으로 상업적으로 가장 많이 사용됨

 

# 2.1 Structure of Relational DataBases

 

# 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한 것이 아니다)

 

# 2.2 Database Schema

# Database Schema = logical design of db

# Database instance = snap-shot of the data in given instant time 

 

# 2.3 Keys

# relation에서의 각 tupleUniquely 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)

 

# Foreign Key

r1테이블의 A column가 foreign Key이며, 해당 attribute가 r2테이블의 B를 가리키고있다면,

 

A는 "foreign key from r1 referencing to r2"

r1 is referencing relation

r2 is referenced relation

# Foreign key constraint (중요)

        - referenced attribute(s) must be the primary key of the referenced relation

# Referential integrity constraint (중요) ( 참조 무결성)

    - 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에서 "쌍두 화살표"로 나타낸다.

# 2.4 Schema Diagrams

# 2.5 Relational Query Languages

Query Language는 세가지로 categorize할 수 있다.

1. imperative( 명령적인)

2. functional

3. declarative 

 

-> Relational algebra(관계대수)는 functional query language이며, SQL query language의 이론적 basis이다.

-> SQL은 iperative, functional, declarative적인 모습을 모두 갖고있다.

 

# 2.6 The Relational Algebra

# Relational algebra는 1개 혹은 2개의 relation(table)을 input으로 하여, new relation을 output해준다.

# 이를 unary, binary operation이라고 한다.

 

# 2.6.1 Select operation

sigma가 select를 의미한다.

 

술부에는 다음과 같은 연산자를 사용할 수 있다.

# 2.6.2 Project operation

단어 그대로 원하는 attribute들만 return 해주는 unary operation이다

 

Pi문자가 project operation을 뜻한다.

위 relational algebra 표현에서 salary/12와 같이 계산식을 포함할 수 있다.

 

# 2.6.3 Composition of Relational Operation

## Relation algebra의 결괏값은 Relation이기 때문에, Relation algebra expression은 중첩시킬 수 있다!

 

# 2.6.4 Cartesian-Product operation

Cartesian-product operation은 X 로 표현한다.

r1 X r2는 r1의 모든 tuple과 r2의 모든 tuple을 하나씩 골라서 이어붙인 모든 경우의 수를 담고있다.

 

# 2.6.5 Join operation :: Cartesian(X) + Selection(sigma)

Cartesian Operation 을 하면, 연산의 input으로 들어온 두 relation에서 무엇인가 겹치는 column이 있기 마련이다.

따라서, Cartesian Operation을 실행한 후, Selection 연산을 Composition하는 경우가 많기에, 이 둘을 하나로 합쳐놓은 연산자가 등장했는데 그것이 바로 Join Operation이다.

 

연산 기호는 아래와 같다.

 

# 2.6.6 Set Operations

Union ( )

- input relation들의 arity(number of attributes)가 같아야 가능

- the types of ith attributes of both input relations must be the same

이 두 조건을 만족하는 relation들을 compatible하다고 한다.

 

Intersection, Set-difference ( ∩, - )

- IntersectionSet-difference 연산 모두 relation이 Compatible해야 가능하다!

 

# 2.6.7 Assignment operation ( )

프로그래밍에서 변수를 할당하는 것과 같음  

 

# 2.6.8 Rename operation:: rho ( ρ )

아래와 같이 E relationx라는 이름으로 rename하면서, A1,A2,...An으로 각 attribute의 name도 rename할 수 있다.

 

 

# 2.6.9 Equivalent Queries

Ideltical한 의미를 가지는 Query를 작성하는 방법은 여러가지이다.

Query Optimizer in database systems가 query를 최적화해서 수행해줄 것이다.

 

 

 

 

# 2.7 Summary

- 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 :: 참조무결성을 의미한다

 

 

관련글 더보기