310 likes | 569 Views
1. 데이타베이스의 개념. 데이타베이스의 용어. " 데이타베이스 ”용어의 기원 1963.6 제 1 차 SDC 심포지움 컴퓨터 중심의 데이타베이스 개발과 관리 Development and Management of a Computer-centered Data Base 1965.9 제 2 차 SDC 심포지움 컴퓨터 중심의 데이타베이스 시스템 Computer-centered Data Base Systems. 데이타베이스란 ?.
E N D
데이타베이스의 용어 • "데이타베이스”용어의 기원 • 1963.6 제1차 SDC 심포지움 • 컴퓨터 중심의 데이타베이스 개발과 관리 • Development and Management of a Computer-centered 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)로 변경되면 선형탐색을 해야 함
데이타 독립성(Data Independency) • DBMS의 궁극적 목적 데이타의 독립성 --> 데이터의 종속성 문제 해결 i.논리적 데이타 독립성 • 응용 프로그램에 영향을 주지 않고 논리적 데이타 구조의 변경이 가능 • 응용 프로그램의 효율적 개발 가능 ii. 물리적 데이타 독립성 • 응용 프로그램과 논리적 데이타 구조에 영향을 주지 않고 물리적 데이타 구조의 변경이 가능 • 저장 장치의 효율적 개발 • 데이타 독립성 구현 기법 • 사상(mapping)
...... 응용 프로그램 1 응용 프로그램 2 응용 프로그램 n 프로그램의 데이타 구조 ...... A B C D B E F G A C 논리적 구조 사상 데이타베이스의 논리적 구조 ... A B C D E F G H 물리적 구조 사상 A B C 데이타베이스의 물리적 구조 D E F G H ... 데이타 구조 간의 사상과 데이타 독립성
데이터베이스 관리 시스템 • 정의 • 데이터베이스를 생성하여 운영하는데 필요한 기능을 제공하는 소프트웨어(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의 장단점 • 장점 • 데이타 중복(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릴레이션 속성명 릴레이션스키마 인스턴스 튜플 속성
Relation의 특징 • 릴레이션에 저장된 튜플들은 유일 • 릴레이션은튜플들의 집합이기 때문에 하나의 릴레이션에는 동일한 튜플이 저장될 수 없음 • 릴레이션에 저장된 튜플간에는 순서 관계가 없음 • 하나의 집합내에서 원소간의 순서는 무의미하기 때문에 릴레이션에 저장된 튜플끼리는 순서 관계가 없다 • 주의 할 것은 튜플의 속성간에는 순서가 존재한다. • 릴레이션을 구성하는 속성간에는 순서가 없음 • 학생1(학번, 이름, 주민번호, 사용자ID)과 학생2(학번, 주민번호, 이름, 사용자ID)는 동일한 릴레이션 • 모든 속성 값은 원자 값(atomic value) • 속성 값은 더 이상 나뉘어질 수 없는 논리적인 최소 단위를 의미 • 예 : 이름
관계 연산자 • 릴레이션을 처리하기 위한 연산의 집합 • 릴레이션: 투플의 집합 • 기본 연산 • 일반 집합 연산자 : 합집합 교집합 차집합카티션프로덕트 • 순수 관계 연산자 : 실렉트 프로젝트 조인 디비전 • 폐쇄성질 (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 S } |RS| ≤ |R| ⅳ. 카티션프로덕트(cartesian product,×) R×S = { r·s | r∈R ∧ s∈S } · : 접속(concatenation) |R×S| = |R|×|S| 차수(degree) = R의 차수 + S의 차수
실렉트 (SELECT, )(1) • A, B가 릴레이션 R의 애트리뷰트일 때, Av(R) = { r | r∈R ∧ r.Aθv } AB(R) = { r | r∈R ∧ r.Aθr.B } 조건식(predicate) 단, θ(theta) = { <, >, ≤, ≥, =, ≠ } v : 상수 • 선택 조건을 만족하는 릴레이션의 수평적 부분집합 (horizontal subset)
실렉트 (2) • example 학과 = '컴퓨터' (학생) 학번 = 300 과목번호='C312'(등록) 중간성적<기말성적(등록) • 데이타언어식 표현 R WHERE 조건식 • 조건2(조건1(R)) = 조건1(조건2(R)) = 조건1 조건2 (R) • 선택도(selectivity) : • 선택 조건에 의해 선택된 투플의 비율 • 선택도가 작은 조건부터 먼저 적용
프로젝트 (PROJECT, ) • 릴레이션R(X)에서 Y⊆X 이고 Y={B1,B2, … ,Bm} 이면, Y(R)={ <r.B1, ... , r.Bm> | r∈R } • example • 학생(학번,이름,학년)에서 이름(학생) • 릴레이션의 수직적 부분집합(vertical subset) • 생성된 중복 투플은 제거 • Y(X(R)) = Y(R)
조인 (JOIN, )(1) • 세타조인 (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 ) }
조인 (2) • 자연조인 (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)) 즉 동일조인의 결과 릴레이션에서애트리뷰트의 중복을 제거함
디비전 (DIVISION, ÷)(1) • 릴레이션 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
디비전(2) 학과목(SC) 과목1(C1) 과목2(C2) 과목3(C3) • example 학번 (SNO) 과목번호 (CNO) 과목번호 (CNO) 과목번호 (CNO) 과목번호 (CNO) 100 C413 C413 C312 C312 100 E412 C413 C413 200 C123 E412 300 C312 300 C324 300 C413 SC ÷ C1 SC ÷ C2 SC ÷ C3 400 C312 400 C324 학번 (SNO) 학번 (SNO) 학번 (SNO) 400 C413 400 E412 100 300 400 500 C312 300 400 400
개명 연산 (RENAME, ρ) • 중간 결과 릴레이션에 이름을 지정하거나 애트리뷰트 이름을 변경할 때 사용 • ρS(E) 관계 대수식 E의 결과 릴레이션의 이름을 S로 지정 • ρS(B1,B2, … ,Bm )(E) 관계 대수식 E의 결과 릴레이션의 이름을 S로 지정하면서 애트리뷰트 이름을 각각 B1,B2, … ,Bm으로 변경 • ρ(B1,B2, … ,Bm )(E) 애트리뷰트 이름만 각각 B1,B2, … ,Bm으로 변경
10 PRODUCT DIVIDE a b c x y a b c x y a a b b c c a a b b c c x y x y x y x y x y x y UNION INTERSECT DIFFERENCE RESTRICTION PROJECTION JOIN a1 a2 a3 b1 b1 b2 b1 b2 b3 c1 c2 c3 a1 a2 a3 b1 b1 b2 c1 c1 c2
제약조건 • 키 • 릴레이션의 특성 중 하나가 각 튜플은 같은 릴레이션에 속한 다른 튜플과는 다른 유일성을 만족해야 한다 • 투플을 유일하게 식별할 수 있는 애트리뷰트 집합 • 후보키, 기본키, 대체키, 수퍼키 • 후보키(candidate key) • 릴레이션R(A1, A2, ..., An)에 대한 애트리뷰트 집합K = { Ai , Aj , ..., Ak }로서 아래 성질을 만족하면 후보키 ① 유일성(uniqueness) 각 투플의K (= { Ai , Aj , ..., Ak }) 의 값(< Vi , Vj , ..., Vk >)은 유일 ② 최소성(minimality) K는 투플을 유일하게 식별하기 위해 필요한 애트리뷰트로만 구성
Key • 수퍼키(super key) • 유일성(uniqueness)은 만족하지만 최소성(minimality)을 만족하지는 않는 애트리뷰트의 집합 • 기본키(primary key) • 후보키(candidate key)중에서 데이타베이스 설계자가 지정한 하나의 키 • 각 투플에 대한 기본키 값은 항상 유효(no null value) • 대체키 (alternate key) • 후보키중에기본키를 제외한 나머지 후보키 • 예) 학생테이블에 학번과 주민번호가 있을 경우 • 학번- 기본키 • 주민번호- 대체키
외래키 • 외래키(foreign key) • 릴레이션R1에 속한 애트리뷰트 집합 FK가릴레이션 R2의 기본키일 때 FK는 R1의 외래키이다. • (FK의 도메인) = (R2의 기본키의 도메인) • FK의 값은 R2에 존재하는 값이거나 null이다. • R1과 R2가 반드시 다른 릴레이션일 필요는 없다. • R1을 참조 릴레이션(referencing relation), R2를 참조된 릴레이션(referenced relation)이라 한다.
무결성 제약(Integrity Constraint) • null 값 • 정보 부재를 명시적으로 표현하는 특수한 데이타 값 ① 알려지지 않은 값(unknown value) ② 해당 없음(inapplicable) • 도메인 무결성(Domain integrity) • 릴레이션의 속성이 지켜야할 제약 사항 • 학생의 학년은 1~4의 값만 가져야 한다. • 개체 무결성(entity integrity) • 기본키 값은 언제 어느 때고 null값을 가질 수 없다. • 참조 무결성(referential integrity) • 외래키의 값은 참조된 릴레이션의기본키 값이거나 null이다.