1. 데이타베이스의 개념

Download Report

Transcript 1. 데이타베이스의 개념


"데이타베이스”용어의 기원
◦ 1963.6 제1차 SDC 심포지움
 컴퓨터 중심의 데이타베이스 개발과 관리
 Development and Management of a Computercentered Data Base
◦ 1965.9 제2차 SDC 심포지움
 컴퓨터 중심의 데이타베이스 시스템
 Computer-centered Data Base Systems
◦ 한 조직의 여러 응용 시스템들이 공용(Shared)하기 위해 통합
(Integrated), 저장(Stored)한 운영(Operational) 데이타의 집합

통합된 데이타 (integrated data)
◦ 최소의 중복(minimal redundancy)
◦ 통제된 중복(controlled redundancy)

저장 데이타 (stored data)
◦ 컴퓨터가 접근 가능한 저장 매체에 저장
◦ 테이프, 디스크 등

운영 데이타 (operational data)
◦ 한 조직의 고유 기능을 수행하기 위해 필요한 데이타

공용 데이타 (shared data)
◦ 한 조직의 여러 응용 프로그램이 공동으로 소유, 유지, 이용하는 데이타

실시간 접근성 (real-time accessibilities)
◦ 질의에 대한 실시간 처리 및 응답

계속적인 변화 (continuous evolution)
◦ 갱신, 삽입, 삭제 : 동적 특성

동시 공용 (concurrent sharing)
◦ 여러 사용자가 동시에 사용

내용에 의한 참조 (content reference)
◦ 위치나 주소가 아닌 값에 따라 참조

DBMS
◦ 데이터베이스를 운영하는 시스템
◦ 데이터베이스에 대한 구성, 접금, 관리 유지를 위한 모든
기능을 제공

DBMS의 목적
◦ 데이터의 독립성  데이터의 종속성
 데이터의 논리적 구조나 물리적 구조가 변경되도 응용 프로
그램은 영향 받지 않는 것

데이터 종속성
◦ 응용 프로그램과 데이터간의 상호 의존 관계가 존재한다
는 것으로 데이터의 구성 방법이나 접근 방법의 변경 시
응용프로그램도 같이 변경시켜야 한다는 것을 의미
 (a) 이진탐색 (b)로 변경되면 선형탐색을 해야 함

DBMS의 궁극적 목적
데이타의 독립성 --> 데이터의 종속성 문제 해결
i.논리적 데이타 독립성
 응용 프로그램에 영향을 주지 않고
논리적 데이타 구조의 변경이 가능
 응용 프로그램의 효율적 개발 가능
ii. 물리적 데이타 독립성
 응용 프로그램과 논리적 데이타 구조에 영향을
주지 않고 물리적 데이타 구조의 변경이 가능
 저장 장치의 효율적 개발

데이타 독립성 구현 기법
◦ 사상(mapping)
응용 프로그램 1
A
B
C
응용 프로그램 2
D
B
E
......
......
F
응용 프로그램 n
G
A
C
프로그램의
데이타 구조
논리적 구조 사상
A
B
C
D
E
F
G
H
...
데이타베이스의
논리적 구조
물리적 구조 사상
A
B
C
D
G
E
H
F
...
데이타베이스의
물리적 구조

정의
◦ 데이터베이스를 생성하여 운영하는데 필요한 기능을 제공하는 소프트웨어
(DBMS)

기능
◦ 정의 기능  DDL (Data Definintion Language)
 데이타베이스의 구조를 정의하는 기능
 ex) create, alter, drop
◦ 조작 기능  DML (Data Manipulation Language)
 데이터에 대한 검색, 갱신, 삽입, 삭제를 지원
 ex) select, insert, update, delete
◦ 제어기능  DCL (Data Control Language)
 데이터의 일관성유지를 위한 보안, 권한 등에 대한 기능
 ex) GRANT, REVOKE, COMMIT, ROLLBACK

대표적인 DBMS
DBMS
개발사
특 징
액세스
Microsoft
윈도우즈 플랫폼으로 중소 규모
데이터베이스를 위한 데스크톱용 DBMS
SQL 서버
Microsoft
저렴한 제품 가격으로 Windows NT
플랫폼에서 최적의 성능을 발휘
인포믹스
IBM
성능이 뛰어나며 병렬처리를 위한
멀티스레드(multithread)를 지원
DB2
IBM
다수 사용자가 다수 관계형
데이터베이스를 동시에 접근할 수 있는
대형 데이터베이스를 위한 시스템
오라클
Oracle
PC급에서 메인프레임급까지 모두 설치할
수 있으며, 분산처리 지원 기능이 우수
MySQL
MySQL AB
다양한 플랫폼과 API를 지원하는 비상업용
DBMS
 DBMS의 장단점

장점

단점
◦
◦
◦
◦
◦
◦
◦
데이타 중복(redundancy)의 최소화
데이타의 공용(sharing)
일관성(consistency) 유지
무결성(integrity) 유지
보안(security) 보장
표준화(standardization) 용이
전체 데이타 요구의 파악 조정
◦
◦
◦
◦
운영비의 오버헤드
복잡한 자료 처리 방법
어려운 백업, 회복
시스템의 취약성

현재 가장 많이 쓰이고 있는 논리적 데이터 모델
◦ 관계형 데이터 모델(Relational Data Model)
◦ 1970년대 E.E Codd 박사에 의하여 제안

관계형 데이터 모델을 사용하는 이유
◦ 모델의 구조가 단순
◦ 집합 이론이라는 수학적 이론에 기반
◦ SQL이라는 간단한 비절차적 언어

데이터 모델 (SOC)
◦ 구조(Structure)
◦ 연산(Operation)
◦ 제약조건(Constraint)
관계형 데이터 모델
데이터 구조
릴레이션
-튜플 집합
-속성 집합
관계 연산
집합 연산
-UNION, INTERSECT
-DIFFERENCE,
PRODUCT
관계 연산
-RESTRICTION,
PROJECTION
-DIVIDE, JOIN
제약 조건
무결성 규칙
-엔터티 무결성 규칙
-참조 무결성 규칙
-도메인 무결성 규칙

릴레이션(relation)
◦ 2차원 테이블 구조
◦ 튜플(tuple)과 속성(attribute)의 집합으로 구성
STUDENT 릴레이션
튜플
속성명
STUDNO
NAME
USERID
GRADE
……
HEIGHT
WEIGHT
DEPTNO
PROFNO
10101
전인하
jun123
4
……
176
72
101
9903
20101
이동훈
Dals
1
……
172
64
201
………
………
………
10203
윤진욱
Samba7
3
……
171
70
102
9905
10107
이광훈
huriky
4
……
175
92
101
9903
………
………
………
속성
……
……
………
………
릴레이션
스키마
인스턴스

릴레이션에 저장된 튜플들은 유일

릴레이션에 저장된 튜플간에는 순서 관계가 없음

릴레이션을 구성하는 속성간에는 순서가 없음

모든 속성 값은 원자 값(atomic value)
◦ 릴레이션은 튜플들의 집합이기 때문에 하나의 릴레이션에는
동일한 튜플이 저장될 수 없음
◦ 하나의 집합내에서 원소간의 순서는 무의미하기 때문에 릴레
이션에 저장된 튜플끼리는 순서 관계가 없다
◦ 주의 할 것은 튜플의 속성간에는 순서가 존재한다.
◦ 학생1(학번, 이름, 주민번호, 사용자ID)과 학생2(학번, 주민번
호, 이름, 사용자ID)는 동일한 릴레이션
◦ 속성 값은 더 이상 나뉘어질 수 없는 논리적인 최소 단위를 의
미
◦ 예 : 이름

릴레이션을 처리하기 위한 연산의 집합

기본 연산

폐쇄성질 (closure property)
◦ 릴레이션 : 투플의 집합
◦ 일반 집합 연산자 : 합집합
교집합
차집합
카티션 프로덕트
◦ 순수 관계 연산자 : 실렉트
프로젝트
조인
디비전
◦ 피연산자와 연산 결과가 모두 릴레이션
◦ 중첩(nested)된 수식의 표현이 가능
◦ 합병가능(union-compatible)한 릴레이션
 ∪, ∩, - 연산의 피연산자들은
ⅰ. 차수가 같아야 함
ⅱ. 대응 애트리뷰트 별로 도메인이 같아야 함
iii. 대응되는 애크리뷰트 별로 의미가 같아여 함
◦ ∪, ∩, × 연산은 결합적(associative)임
A∪B∪C = (A∪B)∪C = A∪(B∪C)
◦ ∪, ∩, × 연산은 교환적(commutative)임
A∪B = B∪A
◦ - 는 비교환적 (non-commutative)
. 합집합 (union,∪)
R∪S = { t | t∈R ∨ t∈S }
|R∪S| ≤ |R| + |S|
ⅱ. 교집합 (intersect,∩)
R∩S = { t | t∈R ∧ t∈S }
|R∩S| ≤ min{ |R|, |S| }
ⅲ. 차집합 (difference,-)
RS = { t | t∈R ∧ t
|RS| ≤ |R|
S}
ⅳ. 카티션 프로덕트 (cartesian product,×)
R×S = { r·s | r∈R ∧ s∈S }
· : 접속(concatenation)
|R×S| = |R|×|S|
차수(degree) = R의 차수 + S의 차수

A, B가 릴레이션 R의 애트리뷰트일 때,
Av(R) = { r | r∈R ∧ r.Aθv }
AB(R) = { r | r∈R ∧ r.Aθr.B }
조건식(predicate)
단, θ(theta) = { <, >, ≤, ≥, =, ≠ }
v : 상수

선택 조건을 만족하는 릴레이션의 수평적 부분집합
(horizontal subset)

example






학과 = '컴퓨터'
학번 = 300
(학생)
과목번호='C312'(등록)
중간성적<기말성적
(등록)
데이타 언어식 표현
R WHERE 조건식
조건2(조건1(R)) = 조건1(조건2(R))
= 조건1  조건2 (R)
선택도(selectivity) :
◦ 선택 조건에 의해 선택된 투플의 비율
◦ 선택도가 작은 조건부터 먼저 적용

릴레이션 R(X)에서
Y⊆X 이고 Y={B1,B2, … ,Bm} 이면,
Y(R)={ <r.B1, ... , r.Bm> | r∈R }

example

릴레이션의 수직적 부분집합(vertical subset)

생성된 중복 투플은 제거

Y(X(R)) = Y(R)
◦ 학생(학번,이름,학년)에서 
이름(학생)

세타조인 (theta-join)
R(X), S(Y), A∈X, B∈Y 에 대하여
R AθB S = { r · s | r∈R ∧ s∈S ∧ ( r.Aθs.B) }
◦ A, B : joining attribute
◦ 결과 차수 = R의 차수 + S의 차수
example

◦

학생
학번=학번
등록
동일조인 (equi-join)
세타조인에서 θ가 "="인 경우
R A=BS = { r·s | r∈R ∧ s∈S ∧ ( r.A=s.B ) }

자연조인 (natural join,
말함
N) 보통 Join 이라면 자연조인을
R(X), S(Y)의 조인 애트리뷰트를 Z(=X∩Y)라 하면
R NS
= {<r · s>[X∪Y] | r∈R∧s∈S∧r[Z]=s[Z] }
= X∪Y(R Z=ZS)
= X∪Y( Z=Z(R×S))
즉 동일조인의 결과 릴레이션에서 애트리뷰트의 중복을 제
거함

릴레이션 R(X), S(Y) 에 대하여
Y X이고 Z =X-Y이면 R(X)=R(Z,Y)
R÷S
={ t | t∈ Z(R) ∧ t · s∈R for all s∈S } //see page 165
의미: S(Y)의 모든 투플에 연관되어 있는 R[Z]의 투플 선택
Note : (R ÷ S) × S ⊆ R
학과목(SC)
example
과목1(C1)
과목2(C2)
과목3(C3)
학번 과목번호
(SNO) (CNO)
100
C413
100
E412
200
C123
300
C312
300
C324
300
C413
400
C312
400
C324
400
C413
400
E412
500
C312
과목번호
(CNO)
C413
과목번호
(CNO)
C312
C413
과목번호
(CNO)
C312
C413
E412
SC ÷ C1
SC ÷ C2
SC ÷ C3
학번
(SNO)
100
300
400
학번
(SNO)
300
400
학번
(SNO)
400

중간 결과 릴레이션에 이름을 지정하거나 애트리
뷰트 이름을 변경할 때 사용
① ρS(E)
관계 대수식 E의 결과 릴레이션의 이름을 S로 지정
② ρS(B1,B2, … ,Bm )(E)
관계 대수식 E의 결과 릴레이션의 이름을 S로 지정하면서 애
트리뷰트 이름을 각각 B1,B2, … ,Bm 으로 변경
③ ρ(B1,B2, … ,Bm )(E)
애트리뷰트 이름만 각각 B1,B2, … ,Bm 으로 변경
UNION
INTERSECT
DIFFERENCE
10
PRODUCT
a
x
a
x
a
x
b
y
a
y
a
y
b
x
b
x
b
y
b
y
c
x
c
x
c
y
c
y
c
RESTRICTION
DIVIDE
x
a
y
b
c
PROJECTION
JOIN
a1
b1
b1
c1
a1
b1
c1
a2
b1
b2
c2
a2
b1
c1
a3
b2
b3
c3
a3
b2
- 27 - c2

키
◦ 릴레이션의 특성 중 하나가 각 튜플은 같은 릴레이션에 속한
다른 튜플과는 다른 유일성을 만족해야 한다
◦ 투플을 유일하게 식별할 수 있는 애트리뷰트 집합
◦ 후보키, 기본키, 대체키, 수퍼키

후보키(candidate key)
◦ 릴레이션 R(A1, A2, ..., An)에 대한 애트리뷰트 집합
K = { Ai , Aj , ..., Ak }로서 아래 성질을 만족하면 후보키
① 유일성(uniqueness)
각 투플의 K (= { Ai , Aj , ..., Ak }) 의 값(< Vi , Vj , ..., Vk >)은 유일
② 최소성(minimality)
K는 투플을 유일하게 식별하기 위해 필요한 애트리뷰트로만 구성

수퍼키 (super key)

기본키 (primary key)

대체키 (alternate key)
◦ 유일성(uniqueness)은 만족하지만 최소성(minimality)을 만
족하지는 않는 애트리뷰트의 집합
◦ 후보키(candidate key)중에서 데이타베이스 설계자가 지정한
하나의 키
◦ 각 투플에 대한 기본키 값은 항상 유효(no null value)
◦ 후보키중에 기본키를 제외한 나머지 후보키
◦ 예) 학생테이블에 학번과 주민번호가 있을 경우
 학번- 기본키
 주민번호- 대체키

외래키(foreign key)
◦ 릴레이션 R1에 속한 애트리뷰트 집합 FK가
릴레이션 R2의 기본키일 때 FK는 R1의 외래키이다.
◦ (FK의 도메인) = (R2의 기본키의 도메인)
◦ FK의 값은 R2에 존재하는 값이거나 null이다.
◦ R1과 R2가 반드시 다른 릴레이션일 필요는 없다.
◦ R1을 참조 릴레이션(referencing relation), R2를 참조된
릴레이션(referenced relation)이라 한다.

null 값
◦ 정보 부재를 명시적으로 표현하는 특수한 데이타 값
① 알려지지 않은 값(unknown value)
② 해당 없음(inapplicable)

도메인 무결성(Domain integrity)
◦ 릴레이션의 속성이 지켜야할 제약 사항
 학생의 학년은 1~4의 값만 가져야 한다.

개체 무결성(entity integrity)
◦ 기본키 값은 언제 어느 때고 null값을 가질 수 없다.

참조 무결성(referential integrity)
◦ 외래키의 값은 참조된 릴레이션의 기본키 값이거나 null이다.