Presentation is loading. Please wait.

Presentation is loading. Please wait.

Query-by-Example (QBE)

Similar presentations


Presentation on theme: "Query-by-Example (QBE)"— Presentation transcript:

1 Query-by-Example (QBE)
Chapter 6 The slides for this text are organized into chapters. This lecture covers Chapter 6. Chapter 1: Introduction to Database Systems Chapter 2: The Entity-Relationship Model Chapter 3: The Relational Model Chapter 4 (Part A): Relational Algebra Chapter 4 (Part B): Relational Calculus Chapter 5: SQL: Queries, Programming, Triggers Chapter 6: Query-by-Example (QBE) Chapter 7: Storing Data: Disks and Files Chapter 8: File Organizations and Indexing Chapter 9: Tree-Structured Indexing Chapter 10: Hash-Based Indexing Chapter 11: External Sorting Chapter 12 (Part A): Evaluation of Relational Operators Chapter 12 (Part B): Evaluation of Relational Operators: Other Techniques Chapter 13: Introduction to Query Optimization Chapter 14: A Typical Relational Optimizer Chapter 15: Schema Refinement and Normal Forms Chapter 16 (Part A): Physical Database Design Chapter 16 (Part B): Database Tuning Chapter 17: Security Chapter 18: Transaction Management Overview Chapter 19: Concurrency Control Chapter 20: Crash Recovery Chapter 21: Parallel and Distributed Databases Chapter 22: Internet Databases Chapter 23: Decision Support Chapter 24: Data Mining Chapter 25: Object-Database Systems Chapter 26: Spatial Data Management Chapter 27: Deductive Databases Chapter 28: Additional Topics 1

2 QBE: 소개 질의 표현용 ‘GUI’의 일종. QBE는 IBM의 등록상표. DRC에 기반! 실제로는 GUI 등장 전에 개발.
단순 질의에 매우 편리. 복잡한 질의에는 불편함. QBE는 IBM의 등록상표. 그러나 다른 많은 제품에 영향을 주었다. 특히 Paradox, Access등 PC용 DBMS.

3 QBE의 ‘예제 테이블’ 사용자는 예제 테이블 (example tables)이라는 뼈대 내부를 채움으로써 질의를 표현한다. 3

4 기본 사항 모든 뱃사람의 이름과 나이를 출력하려면: 등급 > 8인 뱃사람의 모든 필드를, (등급,나이) 순으로 출력하라:
QBE는 빈 열마다 고유한 변수를 만들어 넣는다. 앞의 질의를(순서부여 없이) DRC로 표현하면: {<I,N,T,A> | <I,N,T,A> ∈ 뱃사람∧ T > 8} 4

5 And/Or 질의 나이가 30 미만이거나 20을 초과하는 뱃사람들의 이름:
나이가 30 미만이면서 20을 초과하는 뱃사람들의 이름: 나이가 30 미만이고 등급 > 4인 뱃사람들의 이름: 5

6 중복 한 줄짜리 P: 그냥 중복이 없어지지 않는다; UNQ로 중복 제거 가능.
여러 줄짜리 P: 그냥은 중복이 제거된다. 중복을 남기려면 ALL을 사용. 6

7 죠인 질의 8/24/96 에 배를 한척 예약한, 25세를 초과하는 뱃사람들의 이름 (날짜나 문자열 타입은 인용부호로 묶는다):
변수를 반복 사용하여 죠인 효과 달성. 7

8 죠인 질의 (계속) 8/24/96에 배를 한척 예약한, 25세를 초과하는 뱃사람들이 예약한, Interlake라는 배들의 색상 : 8

9 죠인 질의 (계속) 번호가 22인 뱃사람이 예약한 배를 같이 예약한 뱃사람의 이름과 나이: 9

10 이름없는 필드 수식의 결과를 출력하거나, 둘 이상의 테이블로부터 필드를 추출하여 출력할 때.
QBE 에서는 P.가 여러 테이블에 걸쳐 나타날 수 없다! 10

11 부정 테이블 이름 필드에 부정 기호 표기 가능: 부정 테이블의 변수는 긍정 테이블에 모두 나타나야 한다!

12 집단 연산 QBE 는 AVG, COUNT, MIN, MAX, SUM 을 지원 G. 를 넣으면 그룹짓기 필드가 된다.
AVG.UNQ. 등으로 하면 중복 제거됨. G. 를 넣으면 그룹짓기 필드가 된다. .AO는 결과에 순서를 부여. P.가 있는 필드에는 반드시 G.나 집단 연산자가 함께 나와야 한다. 13

13 조건 상자(Conditions Box) 여러 필드에 걸친 조건 표현에 사용. 예) _R/_A > 0.2.
SQL의 HAVING 절처럼, 그룹에 대한 조건 표현에도 사용. AND 와 OR가 포함된 조건. 14

14 모든 배를 예약한 뱃사람들을 구하라. 디비전 질의임. QBE로는 집단 연산자 (또는 갱신 연산자) 가 필요함.
이 질의를 고쳐서, 그러한 뱃사람들의 이름을 구하려면? 15

15 삽입 투플 하나 삽입: 여러 투플 삽입(아래의 예에서는 등급 필드가 널이 됨): 16

16 삭제와 갱신 등급 < 4인 뱃사람들의 예약 사실을 모두 삭제하라: 74번 뱃사람의 나이를 하나 늘여라: 17

17 갱신 명령의 제약점 I., D., U.는 한 예제 테이블에 같이 나타날 수 없고, P. 나 G.와 조합할 수도 없다.
같은 테이블에 있는 다른 투플의 필드 값을 가지고 투플을 삽입, 삭제, 갱신할 수 없다. 이 틀린 갱신의 예 : Joe라는 사람들의 나이를 모두 고치는 것인지? 어떤 John의 나이를 가지고 고치라는 것인지? 18

18 모든 배를 예약한 뱃사람들을 구하라(다시한번!)
뱃사람 _Id가 예약하지 않은 배 _B가 없는, 그러한 _Id를 구한다면: 잘못된 질의! 변수 _B가 긍정 행에 나타나지 않는다. 두 부정행의 적용 순서는? (의미 모호!) 19

19 뷰를 이용한 해결책 임의의 배 _B를 예약하지 않은 뱃사람을 찾는다 :
다음으로, 이 BadSids에 속하지 않는 뱃사람들을 구하면 된다. 20

20 MS Access 맛보기

21 요약 QBE 는 DRC를 기반으로 하는, 세련되고 간편한 질의어이다.
Borland의 Paradox나 Microsoft의 Access 등 그래픽형 질의 인터페이스에 영향을 주었다. 22


Download ppt "Query-by-Example (QBE)"

Similar presentations


Ads by Google