Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Chapter 6: Formal Relational Query Languages Database System Concepts, 6th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-use Chapter 6: 정규 관계형 질의 언어 Relational Algebra (관계 대수언어) Tuple Relational Calculus (튜플 관계 해석) Domain Relational Calculus (도메인 관계 해석) Database System Concepts - 6th Edition 6.2 ©Silberschatz, Korth and Sudarshan 관계형 대수 (Relational Algebra) 절차식 언어 6 가지 기본 연산자 (Six basic operators) 선택 (select): 추출 (project): 합집합 (union): 차집합 (set difference): – 카티션 곱 (Cartesian product): x 재명명 (rename): 연산자는 입력으로서 하나 이상의 릴레이션을 취해 그 결과로 새로운 릴레이션을 생성한다. Database System Concepts - 6th Edition 6.3 ©Silberschatz, Korth and Sudarshan Select Operation – Example Relation r A=B ^ D > 5 (r) Database System Concepts - 6th Edition 6.4 ©Silberschatz, Korth and Sudarshan Select Operation 표기법 (Notation): p(r) p 를 선택 술어 (selection predicate) 라고 부른다. 다음과 같이 정의된다: p(r) = {t | t r and p(t)} 여기에서 p 는 다음과 같은 유형의 명제 해석식이다. <애트리뷰트> = <애트리뷰트> 또는 <상수> > < (and), (or), (not)으로 연결된다. Example of selection: dept_name=“Physics”(instructor) Database System Concepts - 6th Edition 6.5 ©Silberschatz, Korth and Sudarshan Project Operation – Example Relation r: A,C (r) Database System Concepts - 6th Edition 6.6 ©Silberschatz, Korth and Sudarshan Project Operation Notation: A1 , A2 ,, Ak (r ) 여기서 A1, A2는 애트리뷰트명이고 r은 릴레이션명이다. 결과는 명시하지 않은 열을 제외한 k 열의 릴레이션으로 정의된다. 릴레이션은 집합이기 때문에 중복 행은 결과에서 제거된다. Example: To eliminate the dept_name attribute of instructor ID, name, salary (instructor) Database System Concepts - 6th Edition 6.7 ©Silberschatz, Korth and Sudarshan Union Operation – Example Relations r, s: r s: Database System Concepts - 6th Edition 6.8 ©Silberschatz, Korth and Sudarshan Union Operation Notation: r s Defined as: r s = {t | t r or t s} r s가 가능하려면, 1. r과 s는 같은 항(애트리뷰트의 수가 같음)을 가져야 한다. 2. 애트리뷰트의 도메인은 양립할 수 있어야 한다(즉, r의 두번째 열은 s의 두번째 열의 것과 같은 유형의 값을 다룬다). Example: to find all courses taught in the Fall 2009 semester, or in the Spring 2010 semester, or in both course_id ( semester=“Fall” Λ year=2009 (section)) course_id ( semester=“Spring” Λ year=2010 (section)) Database System Concepts - 6th Edition 6.9 ©Silberschatz, Korth and Sudarshan Set difference of two relations Relations r, s: r – s: Database System Concepts - 6th Edition 6.10 ©Silberschatz, Korth and Sudarshan Set Difference Operation Notation r – s Defined as: r – s = {t | t r and t s} 차집합 연산은 양립할 수 있는 릴레이션 간에만 이루어질 수 있다. - r과 s는 같은 항을 가져야 한다. - r과 s의 애트리뷰트 도메인은 양립해야만 한다. Example: to find all courses taught in the Fall 2009 semester, but not in the Spring 2010 semester course_id ( semester=“Fall” Λ year=2009 (section)) − course_id ( semester=“Spring” Λ year=2010 (section)) Database System Concepts - 6th Edition 6.11 ©Silberschatz, Korth and Sudarshan Cartesian-Product Operation – Example Relations r, s: r x s: Database System Concepts - 6th Edition 6.12 ©Silberschatz, Korth and Sudarshan Cartesian-Product Operation Notation r x s Defined as: r x s = {t q | t r and q s} r(R)과 s(S)의 애트리뷰트가 서로 다르다고 가정하자(즉, RS = ). r(R)과 s(S)의 애트리뷰트가 서로 다르지 않다면, 재명명을 사용해야 한다. Database System Concepts - 6th Edition 6.13 ©Silberschatz, Korth and Sudarshan 복합 연산 (Composition of Operations) 여러 연산을 사용해 표현식을 만들 수 있다. Example: A=C(r x s) rxs A=C(r x s) Database System Concepts - 6th Edition 6.14 ©Silberschatz, Korth and Sudarshan Rename Operation 이름을 줄 수 있도록 하여 관계형 대수 표현식의 결과를 참조하도록 한다. 하나 이상의 이름으로 릴레이션을 참조하도록 한다. Example: x (E) 이름 x라는 이름으로 표현식 E를 리턴한다. 관계형 대수 표현식 E가 n항이면, x (A1, A2, …,An)(E) x라는 이름으로 A1, A2, …,An으로 재명명된 애트리뷰트를 가 진 표현식 E의 결과를 리턴한다. Database System Concepts - 6th Edition 6.15 ©Silberschatz, Korth and Sudarshan 예제 질의 대학에서 가장 높은 급여는 ? Step 1: 임의의 다른 강사보다 적은 급여를 받는 강사 급여를 모두 찾아라. (i.e. not maximum) – using a copy of instructor under a new name d instructor.salary ( instructor.salary < d.salary (instructor x d (instructor))) Step 2: 최대값을 갖는 급여를 찾아라. salary (instructor) – instructor.salary ( instructor.salary < d,salary (instructor x d (instructor))) Database System Concepts - 6th Edition 6.16 ©Silberschatz, Korth and Sudarshan 예제 질의 물리학과 (Physics department)에 소속된 강사 ID와, 이 들 강사가 가르친 모든 course_id 를 찾으시오. Query 1 instructor.ID,course_id (dept_name=“Physics” ( instructor.ID=teaches.ID (instructor x teaches))) Query 2 instructor.ID,course_id (instructor.ID=teaches.ID ( dept_name=“Physics” (instructor) x teaches)) Database System Concepts - 6th Edition 6.17 ©Silberschatz, Korth and Sudarshan 형식적 정의 관계형 대수에서의 기본 표현식은 다음 중 하나 이상으로 구성된다. - 데이터베이스내의 릴레이션 - 상수 릴레이션 E1과 E2를 관계형 대수 표현식이라 하면, 다음은 모두 관계형 대수 표현식이다: - E1 E2 - E1 - E2 - E1 E2 - P(E1), P는 E1내 애트리뷰트 상의 술어이다. - S(E1), S는 E1내 어떤 애트리뷰트로 구성된 리스트이다. - x(E1), x는 E1 의 결과에 대한 새로운 이름이다. Database System Concepts - 6th Edition 6.18 ©Silberschatz, Korth and Sudarshan 추가 연산 관계형 대수에 어떠한 능력도 추가되지 않지만 질의를 단순화하는 추가 연산을 정의한다. 공통 집합 (Set intersection) 자연 죠인 (Natural join) 배정 (Assignment) 외부 조인 (Outer join) Database System Concepts - 6th Edition 6.19 ©Silberschatz, Korth and Sudarshan 공통 집합 연산 Notation: r s Defined as: r s = { t | t r and t s } 가정: - r과 s는 같은 항수를 갖는다. - r과 s의 애트리뷰트는 양립성이 있다. 유의: r s = r - (r - s) Database System Concepts - 6th Edition 6.20 ©Silberschatz, Korth and Sudarshan Set-Intersection Operation – Example Relation r, s: rs Database System Concepts - 6th Edition 6.21 ©Silberschatz, Korth and Sudarshan 자연 조인 연산 Notation: r s r과 s를 각각 스키마 R과 S상의 릴레이션이라 하자. 결과는 r의 튜플 tr과 s의 튜플 ts의 각 쌍을 고려해 얻은 스키마 R S 상의 릴레이션이다. tr 과 ts 가 RS의 애트리뷰트 각각에 같은 값을 가지면, 다음과 같이 튜플 t가 결과에 추가된다. - t 는 r 상에 tr 로서 같은 값을 갖는다. - t 는 s상에 ts 로서 같은 값을 갖는다. Example: R = (A, B, C, D) S = (E, B, D) Result schema = (A, B, C, D, E) r s is defined as: r.A, r.B, r.C, r.D, s.E (r.B = s.B r.D = s.D (r x s)) Database System Concepts - 6th Edition 6.22 ©Silberschatz, Korth and Sudarshan Natural Join Example Relations r, s: r s Database System Concepts - 6th Edition 6.23 ©Silberschatz, Korth and Sudarshan Natural Join and Theta Join Comp. Sci. department에 속한 모든 강사 이름과 이 들 강사가 가르친 모든 코스 명을 찾으시오. name, title ( dept_name=“Comp. Sci.” (instructor teaches course)) Natural join 연산에는 결합법칙이 성립한다. (instructor instructor teaches) (teaches course course) is equivalent to Natural join 연산에는 교환법칙이 성립한다. instruct teaches teaches instructor is equivalent to 세타 조인 (theta join) 연산자 r r s = Database System Concepts - 6th Edition s 는 다음과 같이 정의된다. (r x s) 6.24 ©Silberschatz, Korth and Sudarshan 배정 연산 (Assignment Operation) 배정 연산()은 복잡한 질의를 편리하게 표현하는 방법을 제공한다. 질의를 일련의 배정 연산과 질의의 결과 값이 디스플레이되는 표현식으로 구성된 순차 프로그램으로 작성한다. 배정은 항상 임시 릴레이션 변수로 작성되어야 한다. Database System Concepts - 6th Edition 6.25 ©Silberschatz, Korth and Sudarshan 외부 조인 (Outer Join) 정보 손실을 피하기 위한 조인 연산의 확장. 조인을 계산하고 다른 릴레이션의 튜플과 그 값이 일치하지 않는 어떤 릴레이션의 튜플들을 죠인의 결과에 추가한다. 널 값을 사용한다. - 널은 알려지지 않은 값이나 존재하지 않는 값을 의미한다. - 널을 내포한 모든 비교는 정의에 의해 거짓이다. Database System Concepts - 6th Edition 6.26 ©Silberschatz, Korth and Sudarshan Outer Join – Example Relation instructor name ID Srinivasan Wu Mozart 10101 12121 15151 dept_name Comp. Sci. Finance Music Relation teaches ID 10101 12121 76766 Database System Concepts - 6th Edition course_id CS-101 FIN-201 BIO-101 6.27 ©Silberschatz, Korth and Sudarshan Outer Join – Example Join instructor teaches ID 10101 12121 name Srinivasan Wu dept_name course_id Comp. Sci. Finance CS-101 FIN-201 dept_name course_id Comp. Sci. Finance Music CS-101 FIN-201 null Left Outer Join instructor ID 10101 12121 15151 Database System Concepts - 6th Edition teaches name Srinivasan Wu Mozart 6.28 ©Silberschatz, Korth and Sudarshan Outer Join – Example Right Outer Join instructor teaches ID 10101 12121 76766 name Srinivasan Wu null dept_name course_id Comp. Sci. Finance null CS-101 FIN-201 BIO-101 Full Outer Join instructor teaches ID 10101 12121 15151 76766 Database System Concepts - 6th Edition name Srinivasan Wu Mozart null dept_name course_id Comp. Sci. Finance Music null CS-101 FIN-201 null BIO-101 6.29 ©Silberschatz, Korth and Sudarshan 나누기 연산 (Division Operator) r s “모두에 대한”이라는 구절을 내포한 질의에 적합하다. q = r s라 하자. 그러면 q는 q s r을 만족하는 가장 큰 릴레이션이다. E.g. let r(ID, course_id) = ID, course_id (takes ) and s(course_id) = course_id (dept_name=“Biology”(course ) then r s gives us students who have taken all courses in the Biology department Can write r s as temp1 R-S (r ) temp2 R-S ((temp1 x s ) – R-S,S (r )) result = temp1 – temp2 Database System Concepts - 6th Edition 6.30 ©Silberschatz, Korth and Sudarshan 나누기 연산의 예제 릴레이션 r, s : A B 1 2 3 1 1 1 3 4 6 1 2 rs A Database System Concepts - 6th Edition B 1 2 s r 6.31 ©Silberschatz, Korth and Sudarshan 또 다른 나누기 예제 릴레이션 r, s: rs A B a a a a a a a a C D a a b a b a b b E 1 1 1 1 3 1 1 1 D E a 1 b 1 s r A Database System Concepts - 6th Edition B a a. 6.32 C ©Silberschatz, Korth and Sudarshan 확장 관계형 대수 연산 일반화 추출 (Generalized Projection) 집성 합수 (Aggregate Functions) Database System Concepts - 6th Edition 6.33 ©Silberschatz, Korth and Sudarshan 일반화 추출 추출 리스트에 산술 함수를 사용 하도록 함으로써 추출 연산을 확장한다. F1, F2, …, Fn(E) E는 관계형 대수 표현식이다. F1, F2, …, Fn 각각은 E의 스키마 내에 상수와 애트리뷰트를 내포하고 있는 산술 표현식이다. Given relation instructor(ID, name, dept_name, salary) where salary is annual salary, get the same information but with monthly salary ID, name, dept_name, salary/12 (instructor) Database System Concepts - 6th Edition 6.34 ©Silberschatz, Korth and Sudarshan 집성 함수 Aggregation function: 값의 모임을 취해 하나의 값을 결과로 돌려준다. avg: average value min: minimum value max: maximum value sum: sum of values count: number of values Aggregate operation in relational algebra G1 ,G2 ,,Gn F1 ( A1 ), F2 ( A2 ,, Fn ( An ) (E) E is any relational-algebra expression G1, G2 …, Gn is a list of attributes on which to group (can be empty) Each Fi is an aggregate function Each Ai is an attribute name Database System Concepts - 6th Edition 6.35 ©Silberschatz, Korth and Sudarshan Aggregate Operation – Example Relation r: sum(c) (r) A B C 7 7 3 10 sum(c ) 27 Database System Concepts - 6th Edition 6.36 ©Silberschatz, Korth and Sudarshan 데이터베이스의 수정 데이터베이스의 내용은 다음 연산을 사용해 수정할 수 있다. - 삭제 - 삽입 - 갱신 이들 모든 연산은 배정 연산자를 사용해 표현된다. Database System Concepts - 6th Edition 6.37 ©Silberschatz, Korth and Sudarshan SQL and Relational Algebra select A1, A2, .. An from r1, r2, …, rm where P is equivalent to the following expression in multiset relational algebra A1, .., An ( P (r1 x r2 x .. x rm)) select A1, A2, sum(A3) from r1, r2, …, rm where P group by A1, A2 is equivalent to the following expression in multiset relational algebra A1, A2 Database System Concepts - 6th Edition sum(A3) ( P (r1 x r2 x .. x rm))) 6.38 ©Silberschatz, Korth and Sudarshan Tuple Relational Calculus Database System Concepts - 6th Edition 6.39 ©Silberschatz, Korth and Sudarshan 튜플 관계형 해석 각 질의가 다음과 같은 형식인 비절차식 질의어 { t | P(t) } 술어 P가 t에 대해 참인 모든 튜플 t의 집합이다. t는 튜플 변수이고, t[A]는 애트리뷰트 A에 대한 튜플 t의 값을 의미한다. t r은 튜플 t가 릴레이션 r에 속함을 의미한다. P는 술어 해석의 그것과 유사한 식이다. Database System Concepts - 6th Edition 6.40 ©Silberschatz, Korth and Sudarshan 술어 해석식 1. 애트리뷰트와 상수의 집합 2. 비교 연산자의 집합 : (예를 들어, <, , =, , >, ) 3. 연결자의 집합 : and(), or(), not() 4. 내포() : x y, x가 참이면 y도 참이다. xyxy 5. 한정자의 집합 : t r (Q(t)) 술어 Q(t)가 참인 릴레이션 r내에 튜플 t가 존재한다. t r (Q(t)) 릴레이션 r내의 모든 튜플 t에 대해 Q가 참이다. Database System Concepts - 6th Edition 6.41 ©Silberschatz, Korth and Sudarshan Example Queries 급여가 $80,000 이상인 강사의 ID, name, dept_name, salary 를 찾으시오. {t | t instructor t [salary ] 80000} 앞의 질의에서 ID 속성값만을 찾으시오. {t | s instructor (t [ID ] = s [ID ] s [salary ] 80000)} Notice that a relation on schema (ID) is implicitly defined by the query Database System Concepts - 6th Edition 6.42 ©Silberschatz, Korth and Sudarshan Domain Relational Calculus Database System Concepts - 6th Edition 6.43 ©Silberschatz, Korth and Sudarshan 도메인 관계형 해석 튜플 관계형 해석과 능력이 동등한 비절차식 질의어 각 질의는 다음과 같은 형식의 표현식이다. {<x1, x2, …, x n> | P(x1, x2, …, x n)} - x1, x2, …, x n 은 도메인 변수를 표현한다. - P는 술어 해석의 그것과 유사한 식이다. Database System Concepts - 6th Edition 6.44 ©Silberschatz, Korth and Sudarshan Example Queries Find the ID, name, dept_name, salary for instructors whose salary is greater than $80,000 {< i, n, d, s> | < i, n, d, s> instructor s 80000} As in the previous query, but output only the ID attribute value {< i> | < i, n, d, s> instructor s 80000} Find the names of all instructors whose department is in the Watson building {< n > | i, d, s (< i, n, d, s > instructor b, a (< d, b, a> department b = “Watson” ))} Database System Concepts - 6th Edition 6.45 ©Silberschatz, Korth and Sudarshan Example Queries Fall 2009 semester 혹은 Spring 2010 semester 에 개설된 모든 코스 정보를 찾으시오. {<c> | a, s, y, b, r, t ( <c, a, s, y, b, t > section s = “Fall” y = 2009 ) v a, s, y, b, r, t ( <c, a, s, y, b, t > section ] s = “Spring” y = 2010)} This case can also be written as {<c> | a, s, y, b, r, t ( <c, a, s, y, b, t > section ( (s = “Fall” y = 2009 ) v (s = “Spring” y = 2010))} Fall 2009 semester 와 Spring 2010 semester 에 개설된 모든 코스 정보를 찾으시오. {<c> | a, s, y, b, r, t ( <c, a, s, y, b, t > section s = “Fall” y = 2009 ) a, s, y, b, r, t ( <c, a, s, y, b, t > section ] s = “Spring” y = 2010)} Database System Concepts - 6th Edition 6.46 ©Silberschatz, Korth and Sudarshan End of Chapter 6 Database System Concepts, 6th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-use Figure 6.01 Database System Concepts - 6th Edition 6.48 ©Silberschatz, Korth and Sudarshan Figure 6.02 Database System Concepts - 6th Edition 6.49 ©Silberschatz, Korth and Sudarshan Figure 6.03 Database System Concepts - 6th Edition 6.50 ©Silberschatz, Korth and Sudarshan Figure 6.04 Database System Concepts - 6th Edition 6.51 ©Silberschatz, Korth and Sudarshan Figure 6.05 Database System Concepts - 6th Edition 6.52 ©Silberschatz, Korth and Sudarshan Figure 6.06 Database System Concepts - 6th Edition 6.53 ©Silberschatz, Korth and Sudarshan Figure 6.07 Database System Concepts - 6th Edition 6.54 ©Silberschatz, Korth and Sudarshan Figure 6.08 Database System Concepts - 6th Edition 6.55 ©Silberschatz, Korth and Sudarshan Figure 6.09 Database System Concepts - 6th Edition 6.56 ©Silberschatz, Korth and Sudarshan Figure 6.10 Database System Concepts - 6th Edition 6.57 ©Silberschatz, Korth and Sudarshan Figure 6.11 Database System Concepts - 6th Edition 6.58 ©Silberschatz, Korth and Sudarshan Figure 6.12 Database System Concepts - 6th Edition 6.59 ©Silberschatz, Korth and Sudarshan Figure 6.13 Database System Concepts - 6th Edition 6.60 ©Silberschatz, Korth and Sudarshan Figure 6.14 Database System Concepts - 6th Edition 6.61 ©Silberschatz, Korth and Sudarshan Figure 6.15 Database System Concepts - 6th Edition 6.62 ©Silberschatz, Korth and Sudarshan Figure 6.16 Database System Concepts - 6th Edition 6.63 ©Silberschatz, Korth and Sudarshan Figure 6.17 Database System Concepts - 6th Edition 6.64 ©Silberschatz, Korth and Sudarshan Figure 6.18 Database System Concepts - 6th Edition 6.65 ©Silberschatz, Korth and Sudarshan Figure 6.19 Database System Concepts - 6th Edition 6.66 ©Silberschatz, Korth and Sudarshan Figure 6.20 Database System Concepts - 6th Edition 6.67 ©Silberschatz, Korth and Sudarshan Figure 6.21 Database System Concepts - 6th Edition 6.68 ©Silberschatz, Korth and Sudarshan Deletion A delete request is expressed similarly to a query, except instead of displaying tuples to the user, the selected tuples are removed from the database. Can delete only whole tuples; cannot delete values on only particular attributes A deletion is expressed in relational algebra by: rr–E where r is a relation and E is a relational algebra query. Database System Concepts - 6th Edition 6.69 ©Silberschatz, Korth and Sudarshan Deletion Examples Delete all account records in the Perryridge branch. account account – branch_name = “Perryridge” (account ) Delete all loan records with amount in the range of 0 to 50 loan loan – amount 0 and amount 50 (loan) Delete all accounts at branches located in Needham. r1 branch_city = “Needham” (account branch ) r2 account_number, branch_name, balance (r1) r3 customer_name, account_number (r2 depositor) account account – r2 depositor depositor – r3 Database System Concepts - 6th Edition 6.70 ©Silberschatz, Korth and Sudarshan Insertion To insert data into a relation, we either: specify a tuple to be inserted write a query whose result is a set of tuples to be inserted in relational algebra, an insertion is expressed by: r r E where r is a relation and E is a relational algebra expression. The insertion of a single tuple is expressed by letting E be a constant relation containing one tuple. Database System Concepts - 6th Edition 6.71 ©Silberschatz, Korth and Sudarshan Insertion Examples Insert information in the database specifying that Smith has $1200 in account A-973 at the Perryridge branch. account account {(“A-973”, “Perryridge”, 1200)} depositor depositor {(“Smith”, “A-973”)} Provide as a gift for all loan customers in the Perryridge branch, a $200 savings account. Let the loan number serve as the account number for the new savings account. r1 (branch_name = “Perryridge” (borrower loan)) account account loan_number, branch_name, 200 (r1) depositor depositor customer_name, loan_number (r1) Database System Concepts - 6th Edition 6.72 ©Silberschatz, Korth and Sudarshan Updating A mechanism to change a value in a tuple without charging all values in the tuple Use the generalized projection operator to do this task r F1,F2 ,,Fl , (r ) Each Fi is either the I th attribute of r, if the I th attribute is not updated, or, if the attribute is to be updated Fi is an expression, involving only constants and the attributes of r, which gives the new value for the attribute Database System Concepts - 6th Edition 6.73 ©Silberschatz, Korth and Sudarshan Update Examples Make interest payments by increasing all balances by 5 percent. account account_number, branch_name, balance * 1.05 (account) Pay all accounts with balances over $10,000 6 percent interest and pay all others 5 percent account account_number, branch_name, balance * 1.06 ( BAL 10000 (account )) account_number, branch_name, balance * 1.05 (BAL 10000 (account)) Database System Concepts - 6th Edition 6.74 ©Silberschatz, Korth and Sudarshan Example Queries Find the names of all customers who have a loan and an account at bank. customer_name (borrower) customer_name (depositor) Find the name of all customers who have a loan at the bank and the loan amount customer_name, loan_number, amount (borrower Database System Concepts - 6th Edition 6.75 loan) ©Silberschatz, Korth and Sudarshan Example Queries Find all customers who have an account from at least the “Downtown” and the Uptown” branches. Query 1 customer_name (branch_name = “Downtown” (depositor account )) customer_name (branch_name = “Uptown” (depositor account)) Query 2 customer_name, branch_name (depositor account) temp(branch_name) ({(“Downtown” ), (“Uptown” )}) Note that Query 2 uses a constant relation. Database System Concepts - 6th Edition 6.76 ©Silberschatz, Korth and Sudarshan Bank Example Queries Find all customers who have an account at all branches located in Brooklyn city. customer_name, branch_name (depositor account) branch_name (branch_city = “Brooklyn” (branch)) Database System Concepts - 6th Edition 6.77 ©Silberschatz, Korth and Sudarshan