데이터베이스

Download Report

Transcript 데이터베이스

데이터베이스 처리 안내문
By
Seonggyu Kim
1 장 데이터베이스 처리 개요
데이터베이스
파일 시스템 이해
데이터베이스 시스템 이해
데이터 모델
데이터베이스 시스템 개발 단계
데이터베이스(database)
사용자의 실 세계를 사용자의 요구에 맞게 컴
퓨터에 형상화한 서로 연관이 있는 데이터의
모임
파일 시스템의 단점
데이터 중복과 불일치
(inconsistency)
데이터 접근의 어려움
데이터 고립(isolation)
동시 접근(concurrent
access) 시의 이상 현상
보안 문제
무결성(integrity) 문제
데이터베이스 시스템의 목적
데이터 공유(Sharing)
데이터 중복 제어
데이터의 독립(Independence)
객체(Objects)와 관계
(Relationships)의 표현
데이터 무결성(Integrity) 유지
- Consistency
효율적인 물리 데이터베이스
설계
보안
데이터 모델
데이터와 데이터 사이의 관계 그리고 무결성 제약을 기술하기 위
한 개념적인 도구의 모임
ER (Entity relationship) 데이터 모델
계층(Hierarchical) 데이터 모델
Network 데이터 모델
관계(Relational) 데이터 모델
객체지향(Object-oriented) 데이터 모델
ER 다이어그램
거리명
이름
잔고
도시
고객
번호
거래
E-R diagram
계좌
계층(Hierarchical) 데이터베이스
Lowery
Maple
Evanston
Shiver
Hodges
North
SideHill
Bronx
801
900
55
556
647
100000
647
105366
Brooklyn
105366
10533
Network 데이터베이스
Lowery
Shiver
Hodges
Maple
North
SideHill
Evanston
Bronx
Brooklyn
900
55
556
100000
647
105366
801
10533
관계(Relational) 데이터베이스
Name
Street
City
Number
Lowery
Maple
Evanston
900
Shiver
North
Bronx
556
Shiver
North
Bronx
647
Hodges
SideHill
Brooklyn
647
Hodegs
SideHill
Brooklyn
801
Number
Balance
900
55
556
100000
647
105366
MS Access에서의 표현
데이터베이스 시스템
응용 프로그램 또는 쿼리
DBMS
쿼리와 응용 프로그램 처리를 위한 소프트웨어
저장되어 있는 데이터베이스 접근을 위한 소프트웨어
데이터베이스와
Metadata
데이터베이스
시스템
관계 데이터베이스의 구조
Header = 스키마
학생 - 관계 이름
학번
Domain
학번
이름
Domain
이름
전공
Domain
전공
전화번호
Domain
전화번호
속성(Attribute)
Degree of Tuple (= 4)
Cardinality
(= 6)
278123
314182
392044
412181
673040
821688
Set of 6 tuples
데이터베이스 내부구조
Perryridge
Downtown
Brighton
Clearview
Mianus
Redwood
Downtown
Mianus
Branch
Acc No
Balance
Brighton
Downtown
Downtown
.....
A-212
A-101
A-110
.....
750
500
600
.....
Perryridge
차수(order)가 3인 B+-tree 구조
Redwood
Rockport
메타데이터(Metadata)
데이터베이스의 일부분으로 자신의 구조에 대한 설명
테이블 이름
열의 수
기본 키
학생
4
학생번호
지도교수
3
교수이름
교과목
3
과목코드
수강과목
3
학생번호, 과목코드
시스템 테이블
전공 색인
학번
회계학
100, 300, 500, 700
역사학
200, 600
수학
400
색인 테이블
열 이름
테이블 이름
데이터 타입
길이 (Byte)
학생번호
학생
정수
4
이름
학생
문자
10
성
학생
문자
1
전공
학생
정수
4
교수이름
지도교수
문자
10
연락번호
지도교수
문자
11
학과
지도교수
문자
3
과목코드
교과목
정수
4
과목명
교과목
문자
10
시수
교과목
정수
2
학생번호
수강과목
정수
4
과목코드
수강과목
정수
4
학점
수강과목
정수
2
Column 테이블
데이터 추상화(abstraction)
VIEW 1
VIEW 2
VIEW n
논리적 데이터 독립
(Logical Data Independence)
개념 스키마
(conceptual level)
물리적 데이터 독립
(Physical Data Independence)
내부 스키마
(physical Level)
DBMS와 사용자
데이터베이스를 생성하고 관리할 수 있도록 편리한 기능을
제공하는 소프트웨어의 모임 – Oracle, Informix, Access
사용자
SQL(Structured
Query Language)
응용 프로그래머
C, Basic, etc.
Database
Management
System (DBMS)
DB
데이터베이스 관리자
DDL(Data Definition
Language)
데이터베이스 시스템 개발 단계
사용자 세계
요구사항
데이터베이스 설계 단계
분석
능
기
개념적 설계
Conceptual
Schema
응용 프로그램
설계
데이터 모델
변환
트랜잭션 구현
물리적 설계
데이터베이스
시스템
2 장 ER Modeling
데이터 모델링
ER 모델
개체, 속성, 관련성(relationship)
ER Diagram과 검증
ER 모델링 개요
데이터 모델링은 데이터에 대한 사용자의 관
점을 표현하기 위한 과정
ER 모델은 사용자의 데이터 모델, 데이터의
구조와 사용자 작업 환경하에서 데이터들 사
이의 관계를 나타내기 위한 언어
개체, 속성, 인식자, 관련성(relationship)
ER Diagram과 테이블
PART
m
n
SUPPILER
SUPPLY
p
PROJECT
Degree – 관계에 연결된
개체의 수
부품 번호
공급자 번호
프로젝트 번호
25
4
1
25
5
2
10
4
2
17
4
3
17
2
1
17
5
1
관계 Supply의 표현
이진 관계(Binary Relationship)
1:1
1:N
M:N
Cardinality - 관계에 의해 연결될 수 있는 실제 개체의 숫자
(Minimum cardinality, Maximum cardinality)
ER Diagram 1
이름
임대료
학번
위치
기숙사
방수
(0,1)
입주
(1,N)
학생
이름
ER Diagram 2
직원
(1,1)
동거
(0,N)
부양가족
건물
(1,1)
용도
(0,N)
아파트
Weak Entity
ER Diagram 3
N
고객
1
추천
Recursive Relationship
왕호 태권도장
왕호 태권도장은 여러 종류의 개인 혹은 그룹 태권 교습을 하고
있다. 개인 교습은 한 학생 당 한 달에 15만원을 받고 있으며 매일
오전 10 시부터 오후 8시 까지 시간 약속에 의해 행해진다. 개인
교습에는 두 사람 사이의 대련을 많이 지도하고 있다. 그룹 교습은
한 사람 당 8만원을 받는데 학생들을 주 고객으로 하여 하교 시간
이후인 오후 1 시부터 8 시까지 1 시간의 교습을 하고 있다. 왕호
태권 도장에는 전임 사범과 시간 사범이 있는데 전임 사범의 경우
월급을 받으나 시간 사범의 경우 시간 당 수당을 받는다. 또한
왕호 태권도장에서는 태권도의 보급을 위해 한 달에 한번 세 번째
일요일에 태권 대회를 열고 있다. 왕호 태권도장의 관장은 학생과
어떤 종류의 교습을 받으며 각 사범이 어떤 종류의 얼마나 많은
시간을 교습했는지 파악하여 급여를 계산하는 데이터베이스
시스템을 만들고자 한다.
인터뷰를 통한 요구 사항
ER Diagram 4
개인수강
(0,N)
개인교습
(0,N)
(1,2)
고객
개인강의
(0,N)
그룹수강
(0,M)
그룹교습
(0,N)
그룹강의
(1,1)
대련
(1,M)
교습
(1,N)
강사
(1,2)
ER Diagram 5
강사
ISA
전임강사
시간강사
월급
시간 당 강사료
Subtype
ER 데이터 모델의 검증
사용자의 작업 환경하의 데이터 모델을 정확
하게 반영하고 있는지?
사용자의 질의에 답할 수 있는가?
데이터베이스 개발 단계에서 오류 찾아내어
고치는 것이 데이터베이스가 적재되고 나서
고치는 것보다 쉽고 비용이 적게 든다.
3 장 정규화
정규화
함수적 종속(Functional Dependency)
설계 시 고려사항
정규화(Normalization)
함수적 종속(functional dependency) 관계를
이용하여 삽입, 삭제, 변경 시 발생할 수 있는
이상 현상(anomaly) 제거하여 관계 데이터
모델 설계의 질을 높이기 위한 기법
함수적 종속(functional dependency)
속성 X의 값이 속성 Y의 값을 결정하면 Y는 X
에 함수적 종속되었다고 한다. 즉, X의 값을
알면 Y의 값도 알 수 있다.
학번 → 전공
컴퓨터_일련 번호 → 기억_장치_용량
(학번, 과목명) → 점수
함수적 종속
SID
100
150
200
250
300
Building
Randolph
Ingersoll
Randolph
Pitkin
Randolph
Fee
1200
1100
1200
1100
1200
SID → Building → Fee
determinant
정규화(Normalization)
• 함수적 종속 관계를 이용한 좋은 데이터베이스 설계
• 부작용
Domain/Key
Normal
Form
5NF
4NF
BCNF
3NF
2NF
1NF
제 1 정규형 (First Normal Form)
• 각 속성은 하나의 도메인(Domain)을 가지며,
속성의 순서는 중요하지 않다.
• 같은 튜플은 없어야 하고 튜플의 순서도 중요하지 않다.
• 각 셀은 하나의 값만 갖는다.
공급원
주소
ITEM
가격
갑
서울시 강남구
연필
100
갑
서울시 강남구
풀
500
을
안양시 만안구
볼펜
900
을
안양시 만안구
샤프
1000
병
인천시 강화군
클립
50
중복, 삽입, 삭제, 갱신 시 변경이상(Modification Anomaly)
제 2 정규형
Key → Nonkey attributes
STU-ACT(SID, Activity)
Activity(SID, Activity, Fee)
SID
Activity
100
Skiing
SID Activity
Fee
150
Squash
100 Skiing
200
150
Swimming
150 Squash
50
175
Squash
200
Swimming
150 Swimming 50
175 Squash
50
200 Swimming 50
ACT-COST(Activity, Fee)
Activity
Fee
Skiing
200
Swimming
50
Squash
50
제 3 정규형
No Transitive Dependency
SID
Building
SID Building
Fee
100
Randolph
100
Randolph
1200
150
Ingersoll
150
Ingersoll
1100
200
Randolph
200
Randolph
1200
250
Pitkin
250
Pitkin
1100
300
Randolph
300
Randolph
1200
Building → Fee
SID → Building → Fee
Building
Fee
Randolph
1200
Ingersoll
1100
Pitkin
1100
Boyce-Codd 정규형
Every Determinant is a Candidate Key
SID
Fname
SID
Major
Fname
100
Cauchy
100
Math
Cauchy
150
Perls
150
Psychology
Perls
200
Kim
200
CS
Kim
250
Perls
250
Economics
Perls
300
Kim
300
CS
Kim
300
Norman
300
Math
Norman
(SID, Major) → Fname
(SID, Fname) → Major
Fname
Major
Cauchy
Math
Perls
Psychology
Kim
CS
Perls
Economics
Norman
Math
제 4 정규형
BCNF & No Multivalued Dependencies
SID
Major
Activity
SID
MAJOR
100
Music
Swimming
100
Music
100
CS
Swimming
100
CS
100
Music
Tennis
150
Math
100
CS
Tennis
200
Math
150
Math
Jogging
200
Math
Jogging
SID →→ Major
SID →→ Activity
100
Music
Skiing
100
CS
Skiing
SID
ACTIVITY
100
Swimming
100
Tennis
150
Jogging
200
Jogging
손실 조인
전화번호
회사
우편번호
312-392-3864
Edison
60025
313-415-4196
Edison
61136
회사
우편번호
전화번호
회사
Edison
60025
312-393-3864
Edison
Edison
61136
313-415-4196
Edison
전화번호
회사
우편번호
312-392-1864
Edison
60025
312-392-1864
Edison
61136
원래 없던 정보
313-415-4196
Edison
60025
원래 없던 정보
313-415-4196
Edison
61136
조인 결과
비고
무 손실 조인(Lossless Join)
무 손실 조인이란 관계 R이 R1과 R2로 분리
되었을 때 다음을 만족하는 경우를 말한다.
R1 ∩ R2 → R1 또는 R1 ∩ R2 → R2이면 R1,
R2는 무 손실 조인을 만족한다. Ri ∩ Rj는 Ri
와 Rj에 공통되는 속성을 의미한다.
제 5 정규형
Lossless Join
SID
Name
Building
Fee
100
Jones
Randolph
1200
150
Hayes
Ingersoll
1100
175
Jackson
Randolph
1500
200
Jones
Pitkin
1050
215
Turner
Randolph
1200
SIN(SID, Name)
SIBLDG(SID, Building)
SIF(SID, Fee)
도메인/키 정규형
관계에 관한 모든 제약이 도메인과 키의 논리적 산물이다.
STUDENT(SID, GradeLevel, Building, Fee)
Constraints Building → Fee
SID must not begin with digit 1
Domain Definitions
SID
IN
CDDD, where C ¹ 1 digit, D digit
GradeLevel IN
{‘FR’, ‘SO’, ‘JR’, ‘SN’, ‘GR’}
Building
IN
CHAR(4)
Fee
IN
DEC(4)
Relation and Key Definitions
STUDENT(SID, GradeLevel, Building)
BLDG-FEE(Building, Fee)
4 장 관계 데이터 모델
관계 데이터 모델의 표현





1:1 Relationship
1:N Relationship
M:N Relationship
Recursive Relationship
ISA Relationship
2 단계 설계
개념 스키마 설계
관계 데이터 모델
연구
N
M
작업
P
직원
1
관리
계층 데이터 모델
네트워크 데이터 모델
ER 모델의 관계 데이터베이스로의 변환
이진관계(Binary Relationships)
개체(Entity)
정규화 관계(Normalized Relation)
종속 개체(Weak Entity) ID 종속 관계
1:1 or 1:N Relationships
직원
1
소유
1/N
직원
(1,1)
평가
(1,1)
자동차
인사고과
직원(사번, 이름, 전화번호, 주소)
자동차(차량번호, 차대번호, .., 색상, 사번)
직원평가(사번, 이름, ..., 고과내용)
M:N Relationships
학생
(0,N)
참석
(0,M)
수업
학생(학번, 이름, 전공)
수업(과목번호, 과목이름)
참석(학번, 과목번호)
학번 100
학번 200
학번 300
100
10
100
30
200
10
200
20
200
30
300
30
300
40
데이터베이스
자료구조
네트워크
운영체제
종속 개체 표현
주문
(1,1)
가동
(0,N)
제품라인
주문(주문번호, 고객번호, 주문일, ..)
제품라인(주문번호, 라인번호, 물품번호, 수량, ..)
Recursive Relationships
N
고객
1
추천
고객 번호
100
300
400
추천 고객
200, 400
500
600, 700
고객(고객번호, 고객이름, 전화번호, 피_추천인)
ISA Relationships
강사
ISA
강사(강사번호, 이름, 주소,..)
전임강사(강사번호, 주급)
시간강사(강사번호, 시간급)
전임강사
시간강사
주급
시간급
5 장 관계 대수와 SQL
DML
Relational Algebra
SQL (Structured Query Language)
관계 데이터 연산
절차(Procedural) - how to do
Relational Algebra
선언(Declarative) what to do
Relational Calculus
Structured Query Language
Query By Example
DML Interfaces to DBMS
폼(Forms)의 형태
Query Language
Application Program Interface



C, Basic 프로그램 내의 subroutine call,
data access commands
DBMS에서 제공되는 프로그래밍 언어
impedance mismatch
관계 대수(Relational Algebra)
단일 연산자(Unary Operator)



Selection
Projection
Rename
Binary Operator – 를 제외하고 논리적인 도메인이 같아야 한다.

Product
Join
Union
Intersection
Difference
Division
SQL - Query
[distinct] attributes [Aggregate functions*]
relations
conditions [in (SQL)]
[EXISTS / NOT EXISTS (SQL)]]
[ORDER / GROUP BY attributes]
[HAVING Aggregate functions*]
SELECT
FROM
[WHERE
Aggregate functions - avg, min, max, sum, count
SQL - insert, delete, update
INSERT
INTO relation [(attributes)]
VALUES [(values) | (SQL)]
DELETE
WHERE
relation
condition [IN (SQL)]
UPDATE
SET
WHERE
relation
new value into attribute
condition
예제 Tables
Student
SID
Name
Major
Grade Level
Age
100
JONES
History
GR
21
150
PARKS
Accounting
SO
19
200
BAKER
Math
GR
50
Student Number
Class Name
Position No
250
GLASS
History
SN
50
100
BD445
1
300
BAKER
Accounting
SN
41
150
BA200
1
350
RUSSEL
Math
JR
20
200
BD445
2
400
RYE
Accounting
FR
18
200
CS250
1
450
JONES
History
SN
24
300
CS150
1
400
BA200
2
400
BF410
1
400
CS250
2
450
BA200
3
Class
Name
Time
Room
BA200
M-F9
SC110
BD445
MWF3
SC213
BF410
MWF8
SC213
CS150
MWF3
EA304
CS250
MWF12
EB210
Enrollment
SQL - Example 1
SELECT
FROM
Major
STUDENT
SELECT
FROM
WHERE
SID, Name, Major, GradeLevel, Age
STUDENT
Major = ‘Math’
WHERE
Major IN [‘Math’, ‘Accounting’]
SQL - Example 2
SELECT
FROM
WHERE
ORDER BY
SELECT
FROM
Name, Major, Age
STUDENT
GradeLevel IN [‘GR’, ‘SO’, ‘SN’]
Name ASC, Age DEC
COUNT(DISTINCT Major)
STUDENT
SQL - Example 3
SELECT
FROM
GROUP BY
HAVING
Major, COUNT(*)
STUDENT
Major
COUNT(*) > 2
SELECT
FROM
WHERE
GROUP BY
HAVING
Major, AVG(Age)
STUDENT
GradeLevel = ‘SN’
Major
COUNT(*) > 1
SQL - Example 4
SELECT
FROM
WHERE
SELECT
FROM
WHERE
AND
DISTINCT ClassName
ENROLLMENT
StudentNumber IN
(SELECT SID
FROM
STUDENT
WHERE GradeLevel NOT = ‘GR’)
DISTINCT ENROLLMENT.ClassName
ENROLLMENT, STUDENT
ENROLLMENT.StudentNumber = STUDENT.SID
STUDENT.GradeLevel NOT = ‘GR’
SQL - Example 5
SELECT
FROM
WHERE
DISTINCT StudentNumber
ENROLLMENT A
EXISTS
(SELECT *
FROM
ENROLLMENT B
WHERE A.StudentNumber = B.StudentNumber
AND A.ClassName NOT = B.ClassName)
SQL - Example 6
INSERT
INTO ENROLLMENT
VALUES (400, ‘BD445’, 44)
DELETE
WHERE
ENROLLMENT
ENROLLMENT.StudentNumber IN
(SELECT STUDENT.SID
FROM
STUDENT
WHERE STUDENT.Major = ‘Accounting’)
UPDATE
SET
WHERE
CLASS
ClassName = ‘BD564’
ClassName = ‘BD445’
6 장 ACCESS
테이블
쿼리
폼과 보고서
내보내기
스위치보드
응용 프로그램 설계
데이터베이스 응용 프로그램의 목적은
데이터베이스의 보안과 무결성을
유지하면서 사용자가 원하는 대로 객체를
보여주고, 생성하고, 갱신하고, 삭제할 수
있게 해주는 것이다.
응용 프로그램은 사용하기 쉬운 인터페이스를 제공해야 한다.
데이터베이스 시스템 구현 1
화랑 - 요구분석
M
N
CUSTOMER
ARTIST
INT
1
1
POSESS
Make
N
N
WORK
데이터베이스 시스템 구현 2
관계 데이터모델 설계
CUSTOMER(CustID, Name, Phone, Address, Zip)
WORK(ArtistName, Title, Copy, Description, CustID)
ARTIST(ArtistName, Nationality, BirthDate, DeceasedDate)
CINTA(CustID, ArtistName)
데이터베이스 시스템 구현 3
데이터베이스 스키마(schema) 생성
1. 새 데이터베이스 생성
2. 테이블과 속성 생성
3. 관계 정의
4. 저장 공간 할당
Query 생성
데이터베이스 시스템 구현 4
폼, 보고서 생성
폼은
• 관계 구조 반영해야 하고
• 데이터의 의미를 명확하게 보여주어야 하며
• 적절한 action이 취해질 수 있도록 해야 한다.
1. 관계를 폼에 연결(Bind)
2. 속성을 Text Box Control에 연결
3. 서브 폼이 있으면 제어
4. 테이블이나 Query를 Combo Box Control에 연결
데이터베이스 시스템 구현 5
응용 프로그램 설계
• 백업과 복구에 사용될 트랜잭션(transaction) 제어
• 변경에 따른 Relationship 제약 점검
• 유일성(Uniqueness), Null 값 제약 점검
• 다른 제약 사항
Schema Definition in SQL
CREATE TABLE RelationName
([AttributeName DataDefinition]+
[integrity constraints]*)
create table account
(account-number
char(10) not null,
branch-name
char(15),
balance
integer,
primary key (account-number),
check (balance >= 0))
화랑 데이터베이스 1
바탕화면에서 Microsoft Access 아이콘을 클릭
또는
시작 -> 프로그램 -> Microsoft Access 선택
화랑 데이터베이스 2
화랑 데이터베이스 3
화랑 데이터베이스 4
화랑 데이터베이스 5
화랑 데이터베이스 6
화랑 데이터베이스 7
화랑 데이터베이스 8
화랑 데이터베이스 9
화랑 데이터베이스 10
화랑 데이터베이스 11
관계 설정
화랑 데이터베이스 12
관계 설정
화랑 데이터베이스 13
관계 설정
화랑 데이터베이스 14
관계 설정
화랑 데이터베이스 15
관계 설정
화랑 데이터베이스 16
SQL
화랑 데이터베이스 17
SQL
화랑 데이터베이스 18
SQL
화가의 이름과 국적
고객의 이름과 연락처
고객 이름과 관심 작가
화가의 작품
고객의 이름, 소장품, 소장품의 작가
화랑 데이터베이스 19
FORM
화랑 데이터베이스 20
FORM
화랑 데이터베이스 21
FORM
화랑 데이터베이스 22
보고서
화랑 데이터베이스 23
내보내기
화랑 데이터베이스 24
스위치보드
화랑 데이터베이스 25
시작
제 7 장 웹과 데이터베이스 연동
웹과 데이터베이스 연동 구조
Scripting Languages
HTML, DHTML, XML
ASP
웹과 데이터베이스 연동
네트워크 상의 데이터베이스 응용 프로그램
인터넷과 인트라넷 상의 데이터베이스 응용
Private Network
Public Network via Firewall
정적 보고서 Publishing
데이터베이스 Query Publishing
3 Tier 구조
Browser
Browser
Web
Server
HTML
DHTML
XML
HTTP
Database
Server
ODBC
ADO
OLE/DB
JDBC
Native Calls
DB
Windows Web Server
JavaScript
VBScript
Active X
HTML
DHTML
XML
IIS
ISAPI
Browser
ASP
DB Server
Custom Program
Windows NT/2000
ODBC
ADO
OLE/DB
Unix Web Server
JavaScript
CGI
HTML
DHTML
XML
Apache/
Netscape
Server
ISAPI
NSAPI
Browser
ASP
Custom Program
DB Server
Perl/Scripting Lan
Custom Program
UNIX
ODBC
JDBC
Native Calls
Scripting Languages
JavaScript, JScript, VBScript


데이터 검증(validation), dynamic materialization
클라이언트와 서버 쪽 ActiveX or COM 활성화
Perl(Practical Extraction and Report Language)

Server side scripting
JAVA


객체지향(Object-oriented) 프로그래밍 언어
Java Virtual Machine에서 수행되는 기계 독립적인
(machine-independent) Java Bytecode
Visual Basic, C++, ActiveX

클라이언트와 서버 쪽 ActiveX (specialized COM) 제어
Markup Languages
웹 페이지의 모습과 behavior 지정
SGML
HTML





www.w3.org
레이아웃과 형식으로부터 내용을 떼어내지 못함
스타일 정의 못함
웹 페이지 구성 요소 제어 못함
Caching과 클라이언트에서 데이터 조작 못함
Markup Languages
D(Dynamic)HTML


Continued
Microsoft implementation of HTML 4.0
Document Object Model(DOM) 서버로부터 내용을
refresh하지 않고 내용 변경 가능


Cascading Style Sheet
Remote Data Service(RD), 서버와 데이터 교환을 가능하
게 해주는 ActiveX objects
XML
XML(eXtensible Markup Language)



내용, 레이아웃 그리고 데이터 구체화
(materialization)의 완벽한 분리
표준이나 개발자에 의해 확장 가능
웹 상의 데이터베이스 구조를 표현하기 위한
표준 도구
데이터베이스 서버로의 접근
데이터베이스 서버 접근을 위한
표준이면서 DBMS 독립적인 인터페이스
• ODBC(Open DataBase Connectivity)
• OLE(Object Linking & Editing) DB
• ADO(Active Data Objects)
Role of ODBC
Native
Interface
DB Server
ODBC
Browser
Browser
RDB
NRDB
File
Web Server
E-mail
Browser
Multimedia
Data
관계 데이터베이스 데이터 처리를 위한 DBMS 독립적인 도구
Role of OLE DB
Native
Interface
DB Server
RDB
ODBC
NRDB
Browser
Browser
Web Server
OLE DB
Browser
File
E-mail
Multimedia
Data
데이터베이스 서버의 기능을 캡슐화
C++, Java 로 접근 가능하나 Visual Basic 으로 접근 불가
Role of ADO
Browser
Browser
Browser
Web Server
DB Server
RDB
ODBC
NRDB
OLE DB
ADO
Native
Interface
File
E-mail
Multimedia
Data
거의 대부분의 프로그래밍 언어로 OLD DB에 접근 가능
원격 데이터 서비스(Remote Data Services) 객체와 연동
JDBC Classes
Statement
executeUpdate
executeQuery
getMoreResults
ResulSet
Commit, rollback
execute
getXXX
Connection
PreparedStatement
getConnection
DataTypes : Date, Time,
DriverManager
CallableStatement
getXXX
TimeStamp, Numeric,
Built-in Java types, etc
JDBC(Java Database Connectivity)
API for JAVA interface to Database
Basic Order
Connection
I.




II.
III.
Type
Type
Type
Type
1
2
3
4
:
:
:
:
JDBC-ODBC bridge driver
Native-API partly-java driver
JDBC-Net pure java driver
Native-protocol pure java driver
Transaction processing
Disconnection
Database Connection
//======= declaration begin===========//
static Connection conn = null;
static String driver = "oracle.jdbc.driver.OracleDriver";
static String url = "jdbc:oracle:thin:@192.1.1.1:1521:orcl";
static String username = "csdb40";
static String passwd = "csdb40";
Driver registration
//========== declaration end ============//
// db connection
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, passwd);
} catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
} catch (SQLException se) {
System.out.println(se.getMessage());
}
For JDBC-ODBC Bridge
Connection con =
DriverManager.getConnection("jdbc:odbc:DSName","user","pw")
createTable.java
import java.sql.*;
public class createTable
{
public static void main(String[] argv)
{
Connection conn;
Statement stmt;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection
("jdbd:oracle:thin:@192.1.1.1:1521:orcl",
"csdb40", "csdb40");
stmt = conn.createStatement();
stmt.executeUpdate(
"CREATE TABLE createTest(" +
"name VARCHAR2(10), " +
"tel VARCHAR2(15))"
);
System.out.println("Table Created!!!");
stmt.close();
conn.close();
}catch(Exception e)
{e.printStackTrace();}
}
}
제 8 장 데이터베이스 관리
데이터베이스
데이터베이스
데이터베이스
데이터베이스
데이터베이스
관리 – 경영, 기술
Query 처리
신뢰도(Reliability)
복구
보안
데이터베이스 관리(Administration)
데이터베이스를 보호하고 효율적으로 사용될 수 있도록
경영 측면
 데이터 표준
여러 데이터 자료 형(data type)
동일 데이터에 다른 이름
여러 형식(format)
 데이터 정책 - 보안, 권한, 데이터 공표 범위
 데이터 Conflict 해결
데이터베이스 관리
데이터베이스 구조 관리 및 유지 - Change
데이터 활동 관리 - Standards, Rights, Recovery
DBMS 관리 - Monitor & Tune
데이터베이스 신뢰성 제공
데이터베이스 보안 제공
문서의 발간 및 유지
데이터베이스 Query 처리
Query
Parser &
Translator
Relational
Algebra
Query
Output
Evaluation
Engine
Optimizer
Database
Statistics
about Data
데이터베이스 신뢰성
트랜잭션의 원자성 – 트랜잭션으로 정의된 모든
명령이 수행되든지 아니면 하나도 수행되지 않는 것
동시 제어 문제 – 두 사람 이상의 사용자가 같은 데이터에
동시에 쓰려고 할 때 생기는 문제
Lock
implicit lock, explicit lock,
exclusive lock, shared lock,
lock 크기(granularity)
트랜잭션의 원자성
하나의 트랜잭션이 다음 세가지 action으로 구성되었을 때:
1. Change the customer record with the new order data
2. Change the salesman record with the new order data
3. Insert a new order record into the database.
ORDER 테이블에 새 주문 레코드를 입력하자
“disk full”과 같은 장애가 발생하면 어떤 일이 일어날까?
If all can be done, then apply all changes.
Implicit Locking
User B
User A
1. Read item 100.
2. Reduce count of item by 5.
3. Write item 100.
1. Read item 100.
2. Reduce count of item 100 by 3.
3. Write item 100.
1. Lock item 100 for A
2. Read item 100 for A
3. Lock item 100 for B - can not be done
4. Reduce item count by 5 for A
5. Release Lock for A
6. Lock item 100 for B
7. Read item 100 for B
8. Reduce item count by 3 for B
9. Release Lock for B
Two-Phase Locking
Serializability of Transactions
TL
Growing Phase
Locks
OK
Release
NO
Shrinking Phase
New Locks
NO
Release
OK
1.
2.
3.
4.
5.
6.
7.
8.
9.
Lock A
Read A
Reduce A by 3
Write A
Unlock A
Lock B
Read B
Add 5 to B
Write B
10. Unlock B
TR
1.
2.
3.
4.
5.
6.
7.
8.
9.
Lock A
Read A
Reduce A by 3
Write A
Lock B
Read B
Add 5 to B
Write B
Unlock A
10. Unlock B
교착상태(Deadlock)
User A
User B
1. Lock item 100.
2. Set item 100 to 5.
3. Lock item 200.
1. Lock item 200.
2. Write item 200 to 8.
3. Lock item 100.
1. Lock item 100 for A
2. Lock item 200 for B
3. Set item 100 to 5 for A
4. Set item 200 to 8 for B
5. Put A in wait state for item 200
6. Put B in wait state for item 100
데이터베이스 복구(Recovery)
1. Reprocessing을 통한 복구
- 데이터베이스의 주기적 저장
- 저장 이후의 모든 트랜잭션의 레코드 기록
2. Rollback / Rollforward를 통한 복구
- 데이터베이스의 주기적 저장
- 저장 이후의 트랜잭션에 의해 변화된 내용을
로그 파일에 저장
매 15분 에서 20분 마다 Checkpoint 명령
Rollback / Rollforward
Database with
Changes
UNDO
Before
Images
Before Images -
After Images -
Database
without
Changes
Rollback
변화되기 전의
데이터베이스 레코드
변화가 일어난 후의
데이터베이스 레코드
Database
Save
REDO
After
Images
Database with
Changes
Rollforward
Transaction Log
Reverse, Forward
Pointer
1
2
3
4
5
6
7
8
...
Type of Operations
OT1
0
2
11:42
START
OT1
1
4
11:43
MODIFY
OT2
0
8
11:45
START
OT1
2
5
11:47
INSERT
OT1
5
0
11:48
COMMIT
CT1
0
7
11:49
START
CT1
6
9
11:50
MODIFY
OT2
3
0
11:55
COMMIT
Transaction ID
Time
CUST 100
Old Value
400
ORDER 11
SP 15
Record
500
10
A
B
New Value
데이터베이스 보안
SUBJECT
OBJECT
ACTION AUTHORIZATION CONSTRAINTS
P QE15
ORDER
Insert
<= $500,000
Sally
ORDER
Read
None
EMPLOYEE
Read
Hourly workers
EMPLOYEE
Modify
Hourly workers
EMPLOYEE
Insert
Hourly workers
EMPLOYEE
Delete
Hourly workers
Payroll
Dept
Payroll
Dept
Payroll
Dept
Payroll
Supv
Payroll
Supv
Read
Permission of Grant
EMPLOYEE
To Payroll Personnel
E.B. Fernando, R.C. Summers, and C. Wood, A Model of Security
데이터베이스 보안
GRANT <권한> ON <테이블 또는 view 이
름> TO <사용자 그룹>
REVOKE <권한> ON <테이블 또는 view 이
름> FROM <사용자 그룹>
CREATE VIEW
SELECT
FROM
외부사람 AS
이름, 직급, 구내_번호
사원
제 9 장 데이터베이스 경향
분산 데이터베이스
객체 지향 데이터베이스
Temporal 데이터베이스
멀티 데이터베이스
Active 데이터베이스
Main Memory 데이터베이스
공간(spatial) 데이터베이스
데이터 웨어하우스
Standalone Database System
AP 1
USER 1
OScc
AP 2
DBMS OSdm
Database
AP 3
USER 2
OScc = Communication control portion of OS
OSdm = Data Management portion of OS
USER n
Client Server Database System
AP 1
Client 1
AP2
OSnet DBMS OSdm
Database
Client 2
Local Area
network
Database Server
AP2
AP3
Client n
OSnet = Network Communications portion of OS
Resource Sharing Database System
AP1
DBMS
Client 1
AP2
OSnet OSdm
Database
DBMS
Client 2
Local Area
network
AP2
AP3
DBMS
Client n
File Server
SELECT Name, Address
FROM CUSTOMER
WHERE ZIP = 98033
 전체 CUSTOMER 테이블
분산(Distributed) Database System
AP1
DDBMS
OSnet OSdm
DB2
DB1
AP1
DDBMS
OSnet OSdm
Computer 3
DB1
Computer 1
DB3
AP3
DDBMS
OSnet OSdm
Computer n
Installation cost
Communication cost
Reliability
Availability
AP2 AP3
DDBMS
OSnet OSdm
Computer 2
DB4
Network
Two servers
can have the
same database.
분산 데이터베이스의 유형
AP1
AP2
AP1
AP2
DBMS / OS
W
X
Y
Z
DBMS / OS
Comm Line
AP3
Nonpartitioned, Nonreplicated
W
X
Y
Z
DBMS / OS
Nonpartitioned, Replicated
W
X
Y
Z
분산 데이터베이스의 유형
AP1
DBMS / OS
W
X
AP1
DBMS / OS
W
X
Y
DB1
Comm Line
AP2
DBMS / OS
Y
Z
AP2
DBMS / OS
DB2
Partitioned, Nonreplicated
Partitioned, Replicated
R(C1, C2, C3, C4)
Vertical Partition RA(C1, C2), RB(C1, C3, C4)
Horizontal Partition R1-k(C1, C2, C3, c4), Rk+1-n(C1, C2, C3, c4)
Y
Z
분산 데이터베이스 비교
Distributed
Database
Standalone
Database
Single
Nonpartitioned
Nonreplicated
Partitioned
Nonreplicated
Nonpartitioned
Replicated
Partitioned
Replicated
병렬성(Parallelism) 증가
독립성(Independence) 증가
유연성(Flexibility) 증가
가용성(Availability) / 신뢰성(Reliability) 증가
비용과 복잡성 증가
제어하기 어려워 짐
보안 위험 증가
객체 지향 데이터베이스
데이터와 그 데이터를 조작하는 연산 명령
(method)가 하나의 캡슐로 만들어진 객체 캡슐화(encapsulation)
추상화(abstraction)
고유한 객체 식별자(Object identifier)
상속(inheritance)
다형성(polymorphism) 또는 연산자 오버로
딩(operator overloading)
Temporal 데이터베이스
현재 데이터뿐만 아니라
과거의 데이터를 갖고 있는 데이터베이스
Branch
No
Balance
From
To
Downtown
A-101
500
2003/1/1
2005/1/24
Downtown
A-101
100
2005/1/24
*
Mianus
A-215
700
1999/6/2
2001/8/8
Mianus
A-215
900
2001/8/8
2005/9/5
Mianus
A-215
700
2005/9/5
*
Brighton
A-217
750
2000/7/26
2001/8/5
병렬 처리(Parallel) 데이터베이스
여러 개의 프로세서를 두어 데이터베이스 처리를 병
렬
단위 시간 당 할 수 있는 일의 양인 처리량
(throughput)이 향상
결과를 얻기까지의 시간인 응답시간(response time)
감소
서로 다른 쿼리를 병행하여 수행시키는 방식
(interquery)
하나의 쿼리를 여러 프로세서를 사용하여 병렬로 수
행시키는 방식(intraquery)
멀티 데이터베이스
서로 다른 하드웨어와 소프트웨어를 사용하
는 여러 곳에 분산되어 있는 데이터베이스를
물리적으로 통합하지 않고 논리적으로 하나
의 데이터베이스
Active 데이터베이스
데이터뿐만 아니라 데이터 입력 혹은 변경 시 취해야 하는 절차
까지도 담고 있는 데이터베이스
DEFINE TRIGGER employee-sal
IN INSERT employee
IF employee.salary >
(SELECT E.salary
FROM employee AS E
WHERE E.name = employee.manager)
THEN abort
공간(Spatial) 데이터베이스
공간 정보의 저장 및 추출
3
0
3
.
.
.
.
.
B
A
.
C
2
3
G
1
.
.
.
.
3
.
1
.
2
H
.
.
E
. .
2
I
D
F
3
K-d Tree
Quadtree
R-Tree
0
1
ABC
2
D EF
3
GH I
데이터 웨어하우스
여러 소스(source)에서 모은 정보를 한 곳에 통일
된 하나의 통합된 스키마로 저장해 놓은 것
여러 형태의 데이터를 차원 모델링(dimensional
modeling)을 통해 정보화하여 기업활동의 효율성
을 증대시키기 위한 의사 결정을 지원
다차원(Multidimensional), 주제지향적(Subjectoriented), 통합된(Integrated), 시간에 따른(Timevariant), 불 휘발성(Nonvolatile) 데이터
하나의 주제 – 데이터 마트
Relational Source Data
Category
Type
City
State
Date
Sales Price
Asking
Price
New
Single
Los Angeles
CA
1/1/1998
679,000
685,000
Existing
Condo
San Francisco
CA
3/5/1999
327,989
350,000
Existing
Single
Elko
NE
7/17/1999
105,675
125,000
New
Condo
San Diego
CA
12/2/1998
375,000
375,000
Existing
Single
Paradise
CA
11/9/1999
425,000
449,000
Existing
Single
Las Vegas
NE
1/19/1999
317,000
325,000
New
Single
San Francisco
CA
1/1/1998
679,000
685,000
Existing
Condo
Los Angeles
CA
3/5/1999
327,989
350,000
Existing
Condo
Las Vegas
NE
6/19/1999
297,000
305,000
Existing
Single
Los Angeles
CA
4/1/1998
579,000
625,000
New
Condo
Los Angeles
CA
8/5/1999
321,000
320,000
OLAP Cube
Average Sales Price of
Singles
1998
1999
Existing Structure
CA
New Structure
NE
SF
LA
SD
Jan
408
465
375
Feb
419
438
Mar
427
Q2
CA
NE
SF
LA
SD
179
418
468
371
190
382
180
429
437
382
185
477
380
195
426
471
387
198
433
431
382
188
437
437
380
193
Q3
437
437
380
190
438
439
382
190
Q4
435
439
377
193
432
434
370
198
Jan
452
454
368
198
450
457
367
197
Feb
450
467
381
187
457
464
388
191
Mar
432
444
373
188
436
446
371
201
Q2
437
437
368
190
444
432
363
196
Q3
436
436
388
196
447
455
385
199
Q4
441
455
355
198
449
455
355
202
Q1
Q1