Database Applications - 멀티미디어 데이터베이스 – 제6장...

59
- 데이터베이스 시스템 3관계 모델 2013. 09. 02 가천대학교 IT대학 컴퓨터미디어융합학과

Transcript of Database Applications - 멀티미디어 데이터베이스 – 제6장...

- 데이터베이스 시스템 –

제3장 관계 모델

2013. 09. 02

가천대학교 IT대학

컴퓨터미디어융합학과

목 차

3.1 관계 자료 모델

3.2 무결성 제약조건

3.3 관계 모델 설계

3.4 관계 연산

3.5 관계 대수

3.6 관계 해석

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장 관계 모델

16

3.2 무결성 제약조건 키 제약조건:

제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장 관계 모델

22

3.3 관계 모델 설계 요구분석: 업무흐름도(전자상거래회사)

업무흐름도:

제3장 관계 모델

23

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장 관계 모델

59

3.6 관계 해석 “사과”를 구매한 고객의 이름은? name(customer.cid=order.cid and order.items = “사과”) SQL: select C.name from customer as C, order as O where C.cid = O.cid and O.items = ‘사과’ select name from customer where cid = (select cid from order where items = ‘사과’)

제3장 관계 모델