Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
3
3.1 관계 자료 모델 관계 데이터베이스
IBM 연구소의 Ted Codd가 1970년 관계 DB 논문 발표.
집합론 기반의 관계로 만든 데이터베이스.
제품: DB2 계열, Oracle, Informix, Sybase, SQL/Server, Paradox
관계 자료 모델
관계를 이용하여 가상으로 데이터베이스를 만드는 도구.
관계란?
Why relation?
reflexive, symmetric, transitive,,
제3장 관계 모델
4
3.1 관계 자료 모델 관계 모델
데이터베이스: 관계들의 집합
관계: 투플(행 row)들의 집합
투플: 속성(열 column)들의 집합
ER 모델
행: 엔티티에 해당하는 사실을 표현
열: 속성들을 표현
관계 스키마: 관계 이름과 속성 이름들의 집합과 제약조건.
관계 인스턴스: 테이블
제3장 관계 모델
5
3.1 관계 자료 모델 File, Entity, Table & Relation
급여 파일, 급여 엔티티, 급여 테이블, 급여 관계
제3장 관계 모델
cid name addr creditCUSTOMER
1 Kim seoul 1
2 Lee inchon 3
3 Park seoul 1
4 Lee suwon 2
Attributes
Relation name
tuples
Columns
Table name
rows
Entity name
instance
Data FieldsFile name
record
Entity type
entity
6
3.1 관계 자료 모델 Relation: a mathematical abstraction for a table. can be viewed as a table of values.
제3장 관계 모델
Informal Terms Formal Terms Table Relation
Column Header Attribute
All possible Column Values Domain
Row Tuple
Table Definition Schema of a Relation
Populated Table State of the Relation
7
3.1 관계 자료 모델 Relational Database Schema:
- 관계 스키마 집합 : S{R1,R2,…,Rn}
- 제약조건의 집합
* relational database : a set of relations {r1,…rn} such that
- each ri is a relation Ri,
- ri satisfies the constraints in IC
bookstore = {customer, order, order_book, book, 구매, 구성,출고}
관계 데이터베이스 상태
관계 상태들의 집합.
제3장 관계 모델
cid name addr credit
CUSTOMER
1 Kim seoul 1
2 Lee inchon 3
3 Park seoul 1
4 Lee suwon 2
8
3.1 관계 자료 모델 Domain: 속성에 포함될 수 있는 자료 값들의 범위.
a set of atomic values: data type으로 명시.
Relation Schema R(A1,…,An) describes a relation.
관계 이름,
관계의 차수(속성의 수),
속성 Ai: 열이나 역할 의 이름,
domain(A1) = Di: 속성 Ai가 가질 수 있는 값들의 집합
ex. customer (cid: integer, name: string, address: string)
제3장 관계 모델
9
3.1 관계 자료 모델 관계의 특성
관계: n-tuple들의 집합
관계 r = r(R) = {t1, t2,…,tn}
n-tuple t: n 개 값의 순서 리스트
t = <v1,v2,…,vn>
vi: dom(Ai)의 원소이거나 null 값 (1<= i <= n)
t[Ai] : tuple t에서 속성 Ai에 대응되는 i 번째 값
관계:
r(R)은 도메인 dom(A1),…,dom(An)의 카티션 곱의 부분집합
제3장 관계 모델
10
3.1 관계 자료 모델 Relation schema:
R(A1, A2) dom(A1) = {0, 1}, dom(A2) = {a, b, c}
dom(A1) X dom(A2) is all possible combinations: {<0,a> , <0,b> , <0,c>, <1,a>, <1,b>, <1,c> }
Relation state: r(R) ⊂ dom(A1) X dom(A2) example: r(R) could be {<0,a> , <0,b> , <1,c> }
three 2-tuples: <0,a> , <0,b> , <1,c>
제3장 관계 모델
11
3.1 관계 자료 모델 Relation schema: customer(cid, name, addr, tel,credit) order(oid, cid, date, rbooks, Qty, amount) order_book(oid, bid, Qty, price, amount) book(bid, title, authors, publisher, price, onhand) Relation schema diagram:
제3장 관계 모델
cid cname address telCUSTOMER
oid date rbooks QtyORDER
cid amount
oid pricebid QtyORDER_BOOKS
amount
title pricebid authorBOOK
publisher onhand
credit
12
3.1 관계 자료 모델 ER diagram: E-Commerce for Bookstore
제3장 관계 모델
구성ORDER 교 수구성
oid oid priceamount
ORDER_BOOK1 n
CUSTOMER
구매
cid name1
n
cid
addr
items amountqtybidqty
BOOK
bid title1
onhand
출고
n
authors year
13
3.2 무결성 제약조건 Integrity Constraint IC: conditions that must hold on all valid relation states. - Database를 설계 목적대로 사용하기 위해 속성, 투풀, 테이블 간에 부여하는 조건
- 비효율적이거나 부정확한 정보의 입력, 갱신, 삭제 방지 수단
- 스키마 정의 시 IC 명시, 집행 시 제약조건 검사. Integrity Types
Domain constraints Entity integrity constraints Key constraints Referential integrity constraints Semantic integrity constraints
제3장 관계 모델
14
3.2 무결성 제약조건 도메인 제약조건
- vi belongs to dom(Ai)
* part of schema definition
- Domain map to standard data types
속성의 값들은 속성의 도메인에 속하는 원자값이어야
엔티티 무결성 제약조건
- 기본 키는 null 값이 아니어야
- 속성은 null 값이 아니어야
제3장 관계 모델
15
3.2 무결성 제약조건 키 제약조건:
개체를 고유하게 식별할 수 있는 속성
후보 키
- 두 터플은 키에 속하는 필드 전체가 동일한 값을 갖지 못한다.
- 키의 부분집합이 터플에 대한 유일한 식별자가 되지 못한다.
기본 키: 후보 키 중에서 대표로 선정된 키
수퍼 키: super key
한 관계에서 투플을 고유하게 식별하는 속성들의 최소 집합
대체 키: 기본키가 아닌 후보키
제3장 관계 모델
17
3.2 무결성 제약조건 키 제약조건:
외부 키: foreign key. 자신 또는 다른 관계의 기본키가 되는 속성
보조 키: secondary key 중복을 허용하는 키
ex. 학과, 부서, 취미
CREATE TABLE customer ( EID char(10), name char(30),
… mEID char(10), PRIMARY KEY(EID), FOREIGN KEY (mEID) REFERENCES customer(EID));
제3장 관계 모델
eid 부서
33 인사
36 영업
35 총무
name
김
박
이
관리자
20
36
30
33 영업최 36
18
3.2 무결성 제약조건 Referential integrity constraints 외부키: 목 표: 두 관계의 터플들 사이에서 일관성 유지. 다른 테이블에서 기본키로 사용되는 속성.
* 한 속성이 수정되면 다른 테이블의 속성도 점검해야…
ex. 학생이 수강 신청하려면, 그 학생이 등록 테이블에 존재해야,,,
제3장 관계 모델
cid name
cid
addr
oid date items qty
bid
amount
oid qty price amount
authorsbid title publisher year onhand
creditCUSTOMER
ORDER
ORDER_BOOK
BOOK
19
3.2 무결성 제약조건 Semantic integrity constraints
명시하지 않지만 지켜야 하는 제약조건
Ex. 나이: 생년월일과 일치해야
졸업일자: 입학일자보다 늦어야,
복학일자: 휴학일자보다 늦어야
사원의 급여는 상사의 급여를 초과 할 수 없다.
사원의 근무 시간은 주당 58 시간 미만이어야
제3장 관계 모델
20
3.3 관계 모델 설계 설계 절차
- 요구분석: 업무현황 + 요구사항
업무 흐름도: 업무를 수행하기 위하여 조직(원)간에 유통되는 정보의 흐름을 표기한 그림. 상자, 파일, 문서, 화살표 등으로 작성.
- 관계 데이터베이스 스키마 : 관계 리스트와 제약조건
- ER Diagram :
- 관계 스키마 : 테이블 작성
- 관계 스키마 diagram
- 무결성 제약조건 : 기술
제3장 관계 모델
21
3.3 관계 모델 설계 요구분석: 업무흐름도(전자상거래)
업무흐름도: 조직(원) 간의 정보의 흐름과 처리과정을 표현한 그림.
작성법: 맨 위에 조직(원)을 그리고 위에서 아래로 정보가 이동하고 처리되는 순서대로 작성. 상자는 처리, 종이는 정보(서류), 화살표는 이동, 디스크는 파일을 의미.
제3장 관계 모델
24
3.3 관계 모델 설계 ER을 관계모델로 변환
개체집합을 테이블로 생성 CREATE TABLE student ( sid integer, name char(25), addr char(100), PRIMARY KEY(sid));
제3장 관계 모델
학 생
sid addrname
sid name addr
0804411 Kim 서울
0804415 Lee 인천
0804419 Park 성남
25
3.3 관계 모델 설계 ER을 관계모델로 변환
관계집합을 테이블로
CREATE TABLE sukang ( sid integer, cid integer, when char(4), PRIMARY KEY (sid, cid) FOREIGN KEY (sid) REFERENCES 학생(sid), FOREIGN KEY (cid) REFERENCES 과목(cid));
과 목 학 생 수강
sid cidwhen
제3장 관계 모델
sid cid when
0804411 18 08-1
0804415 20 09-20804411 25 09-2
0804419 35 07-1
26
3.3 관계 모델 설계 관계집합을 테이블로 CREATE TABLE manage ( manager_eid integer, worker_eid integer, PRIMARY KEY (manager_eid, worker_eid ), FOREIGN KEY (manager_eid) REFERENCES 직원(eid), FOREIGN KEY (worker_eid) REFERENCES 직원(eid));
제3장 관계 모델
직 원
eid addrname
보고1
지시n
seid meid
관리
27
3.3 관계 모델 설계 키 제약조건 : 관계집합을 테이블로 CREATE TABLE Manager ( eid integer, did integer, from DATE, PRIMARY KEY (did), //(eid,did)?? FOREIGN KEY (eid) REFERENCES Employee(eid), FOREIGN KEY (did) REFERENCES Department(did));
제3장 관계 모델
사원 부서관리
eid name didaddr title Locfrom
사원 관리
EID name DIDaddr title Loc from
외부 키로 관계 설정
mEID
외부 키
...
부서
28
3.3 관계 모델 설계 키 제약조건 : 관계집합을 개체집합 테이블로 통합 CREATE TABLE DeptMgr ( DID integer, title char(30), Loc char(15), mEID integer NOT NULL, from DATE, PRIMARY KEY (DID), FOREIGN KEY (mEID) REFERENCES Employee(EID) ON DELETE NO ACTION);
제3장 관계 모델
사원
1
부서
관리
근무
1
n
1
eid name titledid
from
from
29
3.3 관계 모델 설계 참여 제약조건 : 관계집합을 개체집합에 통합
CREATE TABLE Works ( EID integer, DID integer, from DATE, PRIMARY KEY (EID,DID) FOREIGN KEY (EID) REFERENCES Employee(EID), FOREIGN KEY (DID) REFERENCES DEPARTMENT(DID), ON DELETE NO ACTION);
제3장 관계 모델
30
3.3 관계 모델 설계 약개체 제약조건:
관계집합을 개체집합 테이블로 통합
CREATE TABLE Dependents (
dName char(30), DOB date, cost REAL, eid integer, PRIMARY KEY (eid, dName), FOREIGN KEY (eid) REFERENCES Employee(eid), ON DELETE CASCADE);
제3장 관계 모델
관리
부서
사 원
1
n부양자
부양
DOBdName
cost
eid name address
eid
31
3.3 관계 모델 설계 순환 관계집합의 변환 조선소에서 부품을 관리하고자 한다. 한 부품은 다른 부품의 부품이 될 수 있다. 어떻게 구현할 것인가? CREATE TABLE com_part ( subpart integer, superpart integer, PRIMARY KEY (subpart, superpart), FOREIGN KEY (subpart) REFERENCES Part(pid), FOREIGN KEY (superpart) REFERENCES Part(pid)); 부품의 순환 관계를 다른 방법으로 표현하라.
제3장 관계 모델
Part
n1 포함
Madeup_of Consist_of
pid pName price
Role
subpidsuperpid
eid pid
Department
소속
did
1
n
Employee Project
보고
지원
1
n
from32
3.3 관계 모델 설계 다대다 관계집합의 변환 본사 직원들은 부서에 소속되어 있다. 현장 프로젝트는 부서에 소속되어 있다. 직원들은 현장을 직무별로 지원한다. ex. 인사, 장비, 경리, 공정관리, 현장은 여러 직원들의 지원을 받는다. 직원과 현장과의 관계는? 지원 관계집합은 어떻게 구현?
제3장 관계 모델
33
3.3 관계 모델 설계 뷰 개요 View: 필요할 때 계산되는 가상의 테이블.
Create VIEW Bonus (eid, name, base, salary) as select eid, name, base, salary from payroll where performance_rate >80; 추상화: 자료독립, Base table이 바뀌어도 보안: base table은 감춘다
* Access 에서는 지원하지 않는다.
제3장 관계 모델
34
3.3 관계 모델 설계 View:
개념 스키마 중에서 사용자에게 접근이 허용되는 부분 = 외부 스키
마
View 갱신: 필요할 때 허용. SQL-92: 집단 연산을 사용하지 않는 뷰에만 갱신 허용. 삽입도 가능하나, 기본 키가 null이면 삽입 불가. 삭제: view를 통하여 삭제 가능 CREATE VIEW goodEmployee (eid, name, rate) as select eid, name, rate from Employee where rate > 80;
제3장 관계 모델
35
3.4 관계 연산 Query: 사용자가 관계에게 정보 조작을 요청하는 문장.
관계 연산:
주어진 관계에서 새 관계를 만드는 것. 입•출력 : 모두 관계
관계 대수 + 관계 해석
관계? 연산?
두 사물의 연결? 테이블 조작?
관계 질의
관계에서 원하는 인스턴스를 추출하는 문장.
관계 연산을 통하여 원하는 결과를 추출하는 문장.
제3장 관계 모델
36
3.4 관계 연산 관계 표기
관계 스키마 R의 관계 인스턴스 r은 n-tupe의 집합.
터플 t는 n개의 속성 값들의 순서 리스트.
각 vi(1<=i<=n)는 도메인 Dom(Ai)의 원소.
R = {A1,A2, … , An} n: 속성의 수 r = {t1,t2, … , tm} m: 터플의 수 t = {v1,v2, … , vn}
제3장 관계 모델
37
3.4 관계 연산 Tuple:
속성 값들의 순서 리스트 : entity, row, record
투플의 순서:
집합이므로 순서가 없으나, 디스크에는 저장 순서?
테이블에도 행을 순서로?
속성의 순서:
집합이므로 투플 안에서의 순서는 무의미,,,
(<속성>,<값>) 쌍들의 집합
제3장 관계 모델
38
3.4 관계 연산 연산: 집합 연산, 레코드 연산
파일 연산
레코드 단위로 read, write, update, seek,,,
디스크에서는 레코드 단위로,,,
관계 연산
집합 단위로 select, insert, delete, update,,
메모리에서는 집합 단위로,,,
사용자 요구
레코드 단위 + 집합 연산
제3장 관계 모델
39
3.4 관계 연산 관계 연산: 관계 대수 + 관계 해석
관계 대수: 관계 모델의 절차적 연산. 기계의 내부 처리용
관계 해석: 관계 질의를 위한 선언적 연산. 사람의 집합 처리용
제3장 관계 모델
40
3.4 관계 연산 대수? Algebra 代數 procedural mathematics in which letters are used to represent quantities. -숫자를 대표하는 일반적인 문자를 사용하여 수를 연구
- 처리 절차를 기술하는 연산기법 - 연산자, 피연산자, 연산 규칙들의 집합체 순서가 중요 대수계의 실례 A = (C, Ω, E) C = (0,1,2,3) Ω = (+, -,*,/) E(+) = ((X,Y), Z) | Z is the sum of X and Y)
제3장 관계 모델
41
3.4 관계 연산 해석? Calculus 解析 declarative
함수의 연속성에 관한 성질을 연구하는 학문. 미분,적분
연산 결과를 정의. 선언적
명제 해석
명제: 진위를 가릴 수 있는 문장
기존의 명제로 새 명제의 진위를 결정
술어 해석
술어: 변수 값에 의하여 진리 값이 결정되는 문장
술어를 이용하여 명제의 성질과 관계를 결정. 추론
제3장 관계 모델
42
3.4 관계 연산 명제와 술어 실례 - 형수는 학생이다. - 창수는 학생이다. - 꽃은 아름답다. - 열심히 공부해라 - 만수는 베짱이다. - 영수는 프로그래머다.
추론: 기존의 명제로부터 새로운 지식을 얻는 논리기법
삼단논법: 두 개의 전제에서 새로운 판단을 얻는 추론기법 - 사람은 죽는다. - 철수는 사람이다. - 철수는 죽는다.
제3장 관계 모델
43
3.5 관계 대수 관계 대수 Relational algebra
관계 모델을 위한 기본적인 연산들의 집합.
2가지 관계 모델용 형식 질의어 중 하나.
- 관계 인스턴스를 매개변수로 받아서 관계 인스턴스를 반환.
관계에서 검색할 정보를 얻는 방법을 절차(대수)로 표현
관계 대수식: 관계를 단항 또는 이항 대수 연산자로 정의
연산자:
관계 연산자: select, project, 집합 연산자: union, intersection, difference, cartesian product, join,,
피연산자: 관계 연산 규칙: 집합론
제3장 관계 모델
44
3.5 관계 대수 관계 연산자: 단항 연산자
제3장 관계 모델
12
5678
34
12
5678
34
Deposit
σselect π
project
12
5678
34
selection &project
Deposit Deposit
45
3.5 관계 대수
Select σ : 관계에서 투플들을 추출하는 연산자
Project ∏: 관계에서 속성들을 추출하는 연산자
질의: “성남”에 사는 학생은?
학생들이 거주하는 주소는?
성남에 사는 학생들의 이름은?
STUDENT sid name addr
0804411 Kim 서울
0804415 Lee 인천
0804419 Park 성남
0704419 Kim 성남
제3장 관계 모델
sid name addr
0804419 Park 성남
0704419 Kim 성남
addr
서울
인천
성남∏
σ
name
Park
Kim
46
3.5 관계 대수 select σ STUDENT
관계에서 행을 선택
σ addr = ‘성남’ (student) ?
project ∏
관계에서 열을 선택.
∏ addr (student) ?
Select & project
∏ name σ addr = ‘성남’ (student)
제3장 관계 모델
sid name addr
0804411 Kim 서울
0804415 Lee 인천
0804419 Park 성남
0704419 Kim 성남
47
3.5 관계 대수 집합 연산자: 이항 연산자
합집합, 교집합, 차집합
제3장 관계 모델
12
5678
34
9101112
5678
Borrow
Deposit
D ∩ B
D - B
D U Bunionintersection
difference
Deposit Borrow
D
B – D ?
B
D – B ?
D ∪ B ?
D ∩ B ?
48
3.5 관계 대수 집합 연산자
합집합, 교집합, 차집합, 조인, 카티션 프로덕트
합집합 ∪
저축이나 대출한 고객의 이름?
∏ name (deposit) U ∏ name (borrow)
단 두 테이블의 속성과 순서가 동일해야
교집합 ∩
저축하고 대출한 고객의 이름?
∏ name (deposit) ∩ ∏ name (borrow)
cid name amount
110 Kim 100
115 Lee 150
120 Park 200
133 Kim 50
deposit
제3장 관계 모델
cid name amount
005 Cha 100
110 Kim 500
120 Park 50
077 Yoon 150
borrow
49
3.5 관계 대수 차집합 -
저축하고 대출하지 않은 고객의 이름?
∏ name (deposit) - ∏ name (borrow)
대출하고 저축하지 않은 고객의 이름?
∏ name (borrow) - ∏ name (deposit)
제3장 관계 모델
50
3.5 관계 대수 집합 연산자: 이항 연산자
Join, Cartesian Product
제3장 관계 모델
OC
3
123
34
1
2
3
34
12
3
34
34
OC
CO
CO
3
(a) cartesian produect 연산
(b) join 연산
123
34
cid cid
cid oid cid oid
cid cid
51
3.5 관계 대수 Cartesian product: ×
실례
두 테이블의 연결
(공통 속성이 없을 때)
제3장 관계 모델
cid name addr
005 Cha 서울
077 Yoon 인천
Customeroid items
33 사과
36 귤
35 배
cid
005
077
005
Order
amount
100
500
150
cid name addr
005 Cha 서울
077 Yoon 인천
oid items
33 사과
36 귤
35 배
cid
005
077
005
amount
100
500
150
077 Yoon 인천
077 Yoon 인천
005 Cha 서울
005 Cha 서울
33 사과
36 귤
35 배
005
077
005
100
500
150
52
3.5 관계 대수 Join
두 테이블의 연결(공통 속성 기준)
∏D.name ((borrow) D.cid = B.cid (deposit))
실례
“사과”를 구매한 고객의 이름은?
∏ nameσ O.items = ‘사과’ ((customer) (order))
“성남”에 사는 고객이 주문한 상품은?
제3장 관계 모델
53
3.5 관계 대수
Join
cid name addr
005 Cha 서울
110 Kim 성남
120 Park 성남
077 Yoon 인천
Customer
제3장 관계 모델
oid items
33 사과
36 귤
40 감자
35 배
cid
005
077
120
005
Order
41 귤
43 사과
077
120
amount
100
500
250
150
100
250
005 Cha 서울 33 사과005 100
005 Cha 서울 35 배005 150
077 Yoon 인천
077 Yoon 인천
36 귤
40 감자
077
120
41 귤077
500
250
100
120 Park 성남
120 Park 성남 43 사과120 250
cid name addr oid itemscid amount
CustomerOrder
54
3.5 관계 대수 Equi-Join
조인 조건이 D.name1 = B.name2와 같이 등호로 구성되는 조인.
이 경우 결과에 두 속성이 모두 들어간다. select D.CID, D.name from deposit AS D, borrow AS B where D.CID = B.CID ; Natural-Join
동일한 이름의 모든 필드에 대해 동일성으로 연결하는 조인.
조건을 생략하지만 묵시적을 공통 필드로 조인한다. select D.CID, D.name, B.addr from deposit AS D NATURAL JOIN borrow AS B;
제3장 관계 모델
55
3.5 관계 해석 관계 해석 Relational calculus
관계 질의를 표현하기 위한 고급의 선언적 표기법
2가지 관계 모델용 형식 질의어 중 하나.
- 관계 인스턴스를 매개변수로 받아서 관계 인스턴스를 반환.
관계에서 검색하여 얻을 정보를 기술
선언적, no 방법론
관계 해석 언어: 비절차적
종류: 기준 = 변수
투플 관계해석: SQL
도메인 관계해석 Q l
제3장 관계 모델
비절차언어 : 원하는 결과를 기술(선언) : 절차언어:
원하는 결과와 얻는 방법 기술(절차).
56
3.6 관계 해석 3.6.1 Tuple relational Calculus
{ T | p(T) }
T: tuple variable.
특정 관계 스키마의 투플들을 값으로 갖는 변수
p(T): T를 기술하는 식
질의 결과: p(T)가 참이 되는 모든 투플 t의 집합
Query:
“amount가 1000이 넘는 주문을 찾아라?”
{ T | T order and order.amount > 1000}
제3장 관계 모델
57
3.6.1 Tuple relational Calculus “amount가 1000이 넘는 주문의 item과 qty는?” { P | T order(T.amount > 1000 P.item=T.item P.qty=T.qty} {P.item, P.qty| T order(T.amount > 1000 )} P는 item과 qty라는 두 필드만 가진 투플 변수로 간주된다. “amount가 1000이 넘는 주문을 한 고객의 이름과 주소?” { P | T order C customer (T.id=C.id T.amount > 1000 P.name=C.name
P.addr=C.addr)} {P.name, P.addr| O order C customer (O.id=C.id O.amount > 1000 )}
제3장 관계 모델
58
3.6 관계 해석 3.6.2 Domain relational Calculus
{ X | p(X) } : {<x1,x2,…,xn> | p(<x1,x2,…,xn>}
X:도메인 변수: 어떤 속성의 도메인에 있는 값들을 취하는 변수
p(X): X를 기술하는 공식
p(<x1,x2,…,xn>에서 xi는 도메인 변수이거나 상수로, 1<= i <= n
식 p(X)가 참이 되는 모든 도메인 x의 집합
Query: “사과”를 구매한 고객의 이름은? name(customer.cid=order.cid and order.items = “사과”)
제3장 관계 모델