프로그래밍/Database

관계형 데이터베이스 와 Relational Algebra

Jay Tech 2017. 3. 15. 21:05
반응형


Database (DB) 한 조직의 여러 응용 시스템들이 공용(Shared)하기 위해 통합(Integrated), 저장(Stored)한 운영 데이터(Operational data)의 집합


특징 : 컴퓨터 시스템과 무관, 컴퓨터 프로그램이라고하면 틀린말이 된다.

데이터의 구조적 집합(종이 ,장부 등도 DB라고 할 수 있다)


Database Management System (DBMS)

DB관리를 위한 컴퓨터 시스템


- 전사적인 정보 관리

- 데이터에 접근하는 프로그램 집합


목적 : 데이터베이스를 공용할 수 있도록 관리하는 시스템


Data Model

데이터를 어떤 형태로 표현할지를 결정


Relational Model 관계형 모델

말그대로 관계라고 생각하지 말고 수학적 개념으로 생각한다. (=테이블)

- 가장 널리 이용됨. 대표적 Data Model

- Relation(Table)에 기반한 모델, 사용 편리, 성능 우수

- SQL 제공 : High Level Language



Relational Model의 주요개념


Domain : Attribute 가 가질 수있는 값의 집합 = type

Attribute = column

Tuple : set of values for arrtibutes (어트리뷰트의 집합) = row, record

Relation : set of tuples (튜플의 집합, row, record의 집합) = table 이것이 테이블이다.

Database : set of relations (테이블의 집합)



그림으로 보면 이런식이다. 밑에 Domain은 어떤 attribute가 가질 수 있는 모든 집합. 도메인 안의 값은 atomic 해야 한다. atomic이란 더 이상 쪼갤 수 없다는 의미를 가지고 있다. 즉 하나의 값만이 들어갈 수 있다. 예를들어 학년은 1학년 또는 2학년 이런식으로 들어가야 한다. 1학년,3학년 이렇게 ,를 찍으며 2개가 들어갈 수 없다는 의미이다.


Schema 


- the logical structure of database 데이터베이스의 논리적 구조


Key


key : tuple을 구별하기 위한 attribute의 집합. 서로 구별이 되야 함. Relation은 동일한 tuple이 있을 수 없음.


Superkey (슈퍼키) : Relation에서 Tuple을 식별할 수 있는 Unique한 Attribute의 집합


Candidate Key (후보키) : superkey중에서 minimal(하나의 attribute라도 빼면 더 이상 key가 아님)한 key. 예를들어 (학번,이름,성별)은 키가 되는데 최대한 attribute를 줄이면 (학번)이 남을 수 있다. 줄인다는 것은 구별할 수 있을 정도까지 줄인다는 것이다. 그렇다면 학번이 minimal한 키가 된다. 단, 한 학교기준의 데이터베이스에서 해당되는 내용이다. 즉, 학번이 같은 사람은 존재할 수 없다는 조건이다.


Primary Key (기본키, PK) : Candidate Key 중 하나. 즉, 후보키들중 선택하는 것이다. Entity Integrity : null이 될 수 없음 (개체의 무결성)


Foreign Key (참조키, FK) : 타 relation을 참조하는 attribute. 참조하는 relation에서 key는 아니지만, 참조되는 relation에서 primary key임. 자기자신도 참조 가능



Relational Algebra 


6개의 기본/원시 연산자





Select

p는 selection predicate이라고 조건을 나타낸다. 즉, p(t)라는 조건을 만족하는 t(튜플)들의 집합이라고 할 수 있다.



Project



선택한 (A1, A2 ...) Attribute들만 뽑는 것이다. 즉 내가 선택한 column만 보이게 하고 싶을 때 쓴다.



Union


합집합이다. 단 attribute의 갯수가 같아야 한다. column수가 같아야 한다는 말이다. 그래야 둘이 합쳐서 쓸 수 있다.




Set-Difference


차 집합이다.



Rename



그냥 이름을 바꾸는 것이다. 쿼리문 중 AS과 비슷하다.




Cartesian-Product



각각의 튜플을 뽑아서 합친다. M개짜리와 N개 짜리가 X되면 M * N 개가 나오겠다.







반응형