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 개가 나오겠다.
'프로그래밍 > Database' 카테고리의 다른 글
Oracle 데이터베이스 Select문 완전정복 -(2) (0) | 2017.03.23 |
---|---|
Oracle 데이터베이스 Select문 완전정복 -(1) (0) | 2017.03.22 |
PreparedStatement의 사용법 (0) | 2017.01.19 |
MySQL LONG VARCHAR 읽기 (0) | 2017.01.19 |
데이터베이스 기초 (0) | 2017.01.11 |