제 6 장 관계대수와관계해석 Fundamentals of Database Systems R. A. Elmasri and S. B. Navathe
내용 6.1 단항관계연산 : 실렉트와프로젝트 6.2 집합이론과관계대수연산 6.3 이항관계연산 : 조인과디비전연산 6.4 추가적인관계연산 6.5 관계대수질의의예 6.6 투플관계해석 6.7 도메인관계해석 2
6.1 단항관계연산 관계대수란 릴레이션들을다루는연산들 검색요구 ( 질의 ) 를기술하는데에사용함 질의결과도릴레이션임 이절의구성 6.1.1 실렉트 (SELECT) 연산 6.1.2 프로젝트 (PROJECT) 연산 6.1.3 연산의순서와이름변경연산 3
6.1.1 실렉트 (SELECT) 연산 SELECT 연산 (σ 로표기 ) 릴레이션 R에서어떤선택조건 c를만족하는투플들을선택함 연산형식 : σ c (R) 조건 c는 R의애트리뷰트들에대한임의의불리언식임 결과릴레이션은 R과동일한애트리뷰트들을가짐 결과릴레이션은 r(r) 의투플중애트리뷰트값들이조건 c를만족하는투플들로구성됨 예제 : σ DNO=4 (EMPLOYEE) σ SALARY>30000 (EMPLOYEE) σ (DNO=4 AND SALARY>25000) OR DNO=5 (EMPLOYEE) 4
6.1.2 프로젝트 (PROJECT) 연산 PROJECT 연산 (Π로표기 ) 릴레이션 R에서애트리뷰트리스트 L에명시된애트리뷰트들만선택함 연산형식 : Π L (R) 결과릴레이션은 L에명시된 R의애트리뷰트들만가짐 예제 : Π FNAME,LNAME,SALARY (EMPLOYEE) PROJECT 연산은결과릴레이션이수학적집합이므로중복된투플들을제거함 예제 : Π SEX,SALARY (EMPLOYEE) 봉급이 1,000,000원인남자사원들이여러명이더라도결과릴레이션에는단지하나의 <M, 1000000> 투플만이포함되며, 나머지는제거됨 5
6.1.3 연산의순서와이름변경연산 다수의연산을결합하여관계대수식 ( 질의 ) 을형성할수있음 예제 : 부서 4 에서일하는사원들의이름과봉급을검색하라. Π FNAME,LNAME,SALARY (σ DNO=4 (EMPLOYEE)) 각중간단계의임시릴레이션에이름을부여할수도있음 DEPT4_EMPS σ DNO=4 (EMPLOYEE) R Π FNAME,LNAME,SALARY (DEPT4_EMPS) 결과릴레이션의애트리뷰트이름은재명명할수도있음 DEPT4_EMPS σ DNO=4 (EMPLOYEE) R(FIRSTNAME, LASTNAME, SALARY) Π FNAME,LNAME,SALARY (DEPT4_EMPS) 6
6.2 집합이론과관계대수연산 수학적집합이론에서의이진연산 합집합 : R 1 R 2 교집합 : R 1 R 2 차집합 : R 1 R 2 카티션곱 : R 1 R 2 연산,,- 에서의호환성 피연산자릴레이션 R 1 (A 1,A 2,...,A n ) 과 R 2 (B 1,B 2,...,B n ) 는애트리뷰트들의갯수가동일하고, 대응되는애트리뷰트들의도메인이호환성을가져야함 ; 즉, i=1,2,...,n에대하여 dom(a i ) = dom(b i ) 이어야함 이조건을합집합호환성 (union compatibility) 이라부름 연산,,-의결과릴레이션은피연산자릴레이션 R 1 과동일한애트리뷰트이름들을가짐 ( 관례적으로 ) 7
a) STUDENT FN Susan Ramesh Johnny Barbara Amy Jimmy Ernest LN Yao Shah Kohler Jones Ford Wang Gilbert INSTRUCTOR FNANE LNAME John Smith Ricardo Browne Susan Yao Francis Johnson Ramesh Shah b) FN Susan Ramesh Johnny LN Yao Shah Kohler c) FN Susan Ramesh LN Yao Shah Barbara Jones Amy Jimmy Ernest John Ricardo Francis Ford Wang Gilbert Smith Browne Johnson (d) FN Johnny Barbara Amy Jimmy Ernest LN Kohler Jones Ford Wang Gilbert (e) FN John Ricardo Francis LN Smith Browne Johnson [ 그림 6.4] 집합연산합집합, 교집합, 차집합 : (a) 합집합호환적인두릴레이션 (b) STUDENT INSTRUCTOR (c) STUDENT INSTRUCTOR (d) STUDENT - INSTRUCTOR (e) INSTRUCTOR - STUDENT 8
6.2 집합이론과관계대수연산 (cont.) 카티션프로덕트 (CARTESIAN PRODUCT) R(A 1,A 2,...,A m,b 1,B 2,...,B n ) R 1 (A 1,A 2,...,A m ) R 2 (B 1,B 2,...,B n ) R의투플t는R 1 의투플t 1 과R 2 의투플t 2 분리됨 ; 즉, t[a 1,A 2,...,A m ] = t 1 그리고 t[b 1,B 2,...,B n ] = t 2 R 1 이n 1 개의투플을, R 2 가n 2 개의투플을갖는다면, R은 n 1 *n 2 개의투플을가지게됨 카티션프로덕트은그자체로는큰의미가없는연산이지만적절한 SELECT 연산과함께사용되면두릴레이션에서서로관련이있는투플들을생성하는데사용됙수있음 예제 : 모든 DEPARTMENT 투플과그부서장의 EMPLOYEE 투플을조합하라. DEP_EMP DEPARTMENT EMPLOYEE DEPT_MANAGER σ MGRSSN=SSN (DEP_EMP) ( 다음 Slide 참고 ) 9
DEPARTMENT DNAME DNUMBER Research 5 Administration 4 Headquarters 1 MGRSSN 333445555 987654321 888665555 MGRSTARTDATE 22-MAY-78 01-JAN-85 19-JUN-71 EMPLOYEE FNAME MINIT LNAME SSN BDATE ADDRESS SEX SALARY SUPERSSN DNO John B Smith 123456789 09-JAN-55 731 Fondren, Houston, TX M 30000 333445555 5 Franklin T Wong 333445555 08-DEC-45 638 Voss, Houston, TX M 40000 888665555 5 Alicia J Zelaya 999887777 19-JUL-58 3321 Castle, Spring, TX F 25000 987654321 4 Jennifer S Wallace 987654321 20-JUN-31 291 Berry, Bellaire, TX F 43000 888665555 4 Ramesh K Narayn 666884444 15-SEP-52 975 Fire Oak, Humble, TX M 38000 333445555 5 Joyce A English 453453453 31-JUL-62 5631 Rice, Houston, TX F 25000 333445555 5 Ahmad V Jabbar 987987987 29-MAR-59 980 Dallas, Houston, TX M 25000 987654321 4 James E Borg 888665555 10-NOV-27 450 Stone, Houston, TX M 55000 null 1 DEP_EMP DEPARTMENT EMPLOYEE DEPT_MANAGER σ MGRSSN=SSN (DEP_EMP) /* 3 * 8 = 24 tuples 생성 /* 3 개의 tuples 만선택 카티젼프로덕트와셀렉션연산의조합예 10
6.3 이항관계연산 : 조인과디비전연산 Join 연산 두릴레이션으로부터관련있는투플을결합하여하나의투플로생성함 관련성의여부를조건으로표시하며, 이를조인조건이라고함 T DEPARTMENT MGRSSN=SSN EMPLOYEE RESULT Π DNAME,FNAME,LNAME (T) DEPARTMENT DNAME DNUMBER Research 5 Administration 4 Headquarters 1 MGRSSN 333445555 987654321 888665555 MGRSTARTDATE 22-MAY-78 01-JAN-85 19-JUN-71 RESULT Research Franklin Wong Administration Jennifer Wallace Headquarters James Borg EMPLOYEE FNAME MINIT LNAME SSN BDATE ADDRESS SEX SALARY SUPERSSN DNO John B Smith 123456789 09-JAN-55 731 Fondren, Houston, TX M 30000 333445555 5 Franklin T Wong 333445555 08-DEC-45 638 Voss, Houston, TX M 40000 888665555 5 Alicia J Zelaya 999887777 19-JUL-58 3321 Castle, Spring, TX F 25000 987654321 4 Jennifer S Wallace 987654321 20-JUN-31 291 Berry, Bellaire, TX F 43000 888665555 4 Ramesh K Narayn 666884444 15-SEP-52 975 Fire Oak, Humble, TX M 38000 333445555 5 Joyce A English 453453453 31-JUL-62 5631 Rice, Houston, TX F 25000 333445555 5 Ahmad V Jabbar 987987987 29-MAR-59 980 Dallas, Houston, TX M 25000 987654321 4 James E Borg 888665555 10-NOV-27 450 Stone, Houston, TX M 55000 null 1 11
조인조건 < 조건 > AND < 조건 > AND AND < 조건 > 각조건의형태는 A i θ B j 이며, A i 는 R 의애트리뷰트, B j 는 S 의애트리뷰트임 조인조건에사용된속성 (A i 와 B j 를조인속성이라고부름 ) Theta Join 일반적인조인조건 (>, =, < 등 ) 을가진조인연산 EQUIJOIN 이항관계연산 계속 조인조건에서동등비교 (equality comparison) 만을사용하는조인 EQUIJOIN 사용예제 : 모든 DEPARTMENT의이름과그관리자의이름을검색하라 : T DEPARTMENT MGRSSN=SSN EMPLOYEE RESULT Π DNAME,FNAME,LNAME (T) 12
6.3 이항관계연산 (cont.) 자연조인 (NATURAL JOIN) (*): EQUIJOIN의결과에는두조인속성의값이중복되어나타남 조인결과에서조인속성하나를제거하여중복된값이나타나지않도록한조인을자연조인이라고함 표시법 : R R 1 * (R1의조인애트리뷰트들 ),(R2의조인애트리뷰트들 ) R 2 예제 : 모든 EMPLOYEE의이름과그의 DEPARTMENT 이름을검색하라 T EMPLOYEE * (DNO),(DNUMBER) DEPARTMENT RESULT Π FNAME,LNAME,DNAME (T) 두조인속성이동일한이름을갖는다면간단히 R R 1 *R 2 라고표시함 예제 : 모든 EMPLOYEE의이름과그상급자의이름을검색하라 : SUPERVISOR(SUPERSSN,SFN,SLN) // 속성이름의변경 Π SSN,FNAME,LNAME (EMPLOYEE) T EMPLOYEE * SUPERVISOR // 자연조인 RESULT Π FNAME,LNAME,SFN,SLN (T) 13
6.3 이항관계연산 (cont.) 주의 자연조인에서는조인애트리뷰트들이양쪽의릴레이션에서동일한이름을가져야하며, 그렇지않는경우조인속성의이름을먼저동일하게변경해야함 두릴레이션에서하나이상의조인애트리뷰트쌍이존재하는경우주의가요망됨 조인애트리뷰트들 EMPLOYEE.SSN = DEPARTMENT.MGRSSN EMPLOYEE.DNO = DEPARTMENT.DNUMBER 관계 EMPLOYEE 가 DEPARTMENT 를관리. EMPLOYEE 가 DEPARTMENT 에서일함. 예제 : 모든 EMPLOYEE의이름과그가일하는 DEPARTMENT의이름을검색하라 에대한자연조인은다음과같이작성함 DEPT(DNAME, DNUM, MGRSSN, MGRSTARTDATE) DEPARTMENT PROJ_DEPT PROJECT * DEPT // DUNM이조인속성임 ; // MGRSSN은조인속성이아님 14
6.3 이항관계연산 (cont.) Self Join 하나의릴레이션에대한조인 Self join은한릴레이션의서로다른두사본을조인하는것으로간주함 이경우, 사본릴레이션에서는원본애트리뷰트이름을재명명 (renaming) 하는것이유용함 예제 : 모든 EMPLOYEE의이름과그의 SUPERVISOR의이름을검색하라 SUPERVISOR(SSSN,SFN,SLN) Π SSN,FNAME,LNAME (EMPLOYEE) T EMPLOYEE SUPERSSN=SSSN SUPERVISOR RESULT Π FNAME,LNAME,SFN,SLN (T) 15
6.3 이항관계연산 (cont.) 관계대수연산의완전집합 지금까지소개한모든연산자는선택 (SELECT), 프로젝트 (PROJECT), 합집합 (UNION), 차집합 (SET DIFFERNECE), 카티션프로덕트 (CARTESIAN PRODUCT) 연산들만의조합으로표현할수있음 연산자집합 {σ,π,,-, } 를관계대수연산자의완전집합 (complete set) 이라부름 이연산자집합과동등한모든질의언어들은관계적으로완전하다 (relationally complete) 라고정의함 추가적으로유용한연산자들 1. 디비젼 (division) 연산 2. 집단함수 (aggregate functions) 와그룹화 (grouping) 연산 2. 외부조인 (OUTER JOIN) 과외부합집합 (OUTER UNION) 16
6.3 이항관계연산 (cont.) 디비전연산 : R(Z) S(X) 은다음과같이정의됨 (X Z 이고, Y = Z X임 ) T1 = Π Y (R) T2 = Π Y (( S T1) R) T = T1 T2 예 R A B S A T B a1 b1 a1 b1 = a2 b1 a2 b4 a3 b1 a3 a4 b1 a1 b2 a3 b2 T1 = Π B (R) a2 a4 b3 b3 a3 a1 b3 b4 T2 = Π B (( S T1) R) T = T1 T2 a2 b4 a3 b4 17
6.4 추가적인관계연산 집단함수 (aggregate functions) SUM, COUNT, AVERAGE, MIN, MAX 함수를의미함 이들은데이타베이스응용에서값들의집합또는투플들의집합에적용되며, 표준관계대수로표현할수없음 다음과같이표현하며, 그룹화애트리뷰트들은선택적임 < 그룹화애트리뷰트들 > F < 함수리스트 > (R) 예제 1: 모든사원의평균봉급을검색하라 ( 그룹화불필요 ) R(AVGSAL) F AVERAGE SALARY (EMPLOYEE) 예제 2: 각부서에대하여, 부서번호와부서별사원수와평균봉급을검색하라 R(DNO,NUMEMPS,AVGSAL) DNO F COUNT SSN, AVERAGE SALARY (EMPLOYEE) 위의예제에서 DNO를그룹화애트리뷰트 (grouping attribute) 라고부름 18
6.4 추가적인관계연산 (cont.) EMPLOYEE FNAME MINIT LNAME SSN SALARY SUPERSSN DNO John B Smith 123456789 30000 333445555 5 Franklin T Wong 333445555 40000 888665555 5 DNO COUNT(*) AVG(SALARY) Ramesh Joyce J S Narayn English 666884444 453453453 38000 25000 333445555 333445555 5 5 5 4 4 3 33250 31000 Alicia K Zelaya 999887777 25000 987654321 4 1 1 55000 Jennifer A Wallace 987654321 43000 888665555 4 Ahmad V Jabbar 987987987 25000 987654321 4 James E Borg 888665555 55000 null 1 (a) DNO 값으로 EMPLOYEE 투플들의그룹화 19
6.4 추가적인관계연산 (cont.) 순환적폐포 (recursive closure) 연산 동일한테이블에서투플들간의순환적관계 (recursive relationship) 를질의하는데사용됨 관계대수로서는표현할수없음 예 : Employee 테이블에서사원과상사간의관계에대하여특정사원의모든상사 ( 직간접상사관계 ) 에있는직원을모두리턴하시오? 이러한질의는루핑을사용하여한단계윗상사들의집합을구하고, 이를바탕으로 2단계위상사를구하며, 이러한과정을더이상의상사집합이없을때까지 ( 사장이나올때까지 ) 구해나가야하므로루핑처리가필요하게된다. 20
6.4 추가적인관계연산 (cont.) 외부조인 (OUTER JOIN) 정규 EQUIJOIN이나자연조인 (NATURAL JOIN) 연산에서조인조건을만족하지않은투플들은결과릴레이션에도나타나지않음 조인에참여하는릴레이션의모든투플들이조인의여부와관계없이결과릴레이션에나타내고싶은경우외부조인을사용함 외부조인에서는상대방릴레이션에대응되는투플이없으면빈애트리뷰트들에 NULL 값을채워서결과에포함시킴 외부조인의종류 왼쪽외부조인 (LEFT OUTER JOIN): R 1 R 2 는R 1 의모든투플들이결과릴레이션이나타나도록한다. 오른쪽외부조인 (RIGHT OUTER JOIN): R 1 R 2 는R 2 의모든투플들이결과릴레이션이나타나도록한다. 완전외부조인 (FULL OUTER JOIN): R 1 R 2 는R 1 과R 2 의모든투플들이결과릴레이션이나타나도록한다. 21
TEMP <- (EMPLOYEE SSN=MGRSSN DEPARTMENT ) RESULT <= Π FNAME, MINI, LNAME, DNAME (TEMP) EMPLOYEE FNAME MINIT John B Franklin T Ramesh J Joyce S Alicia K Jennifer A Ahmad V James E LNAME SSN Smith 123456789 Wong 333445555 Narayn 666884444 English 453453453 Zelaya 999887777 Wallace 987654321 Jabbar 987987987 Borg 888665555 SALARY SUPERSSN DNO 30000 40000 38000 25000 25000 43000 25000 55000 333445555 888665555 333445555 333445555 987654321 888665555 987654321 null 5 5 5 5 4 4 4 1 DEPARTMENT DNAME DNUMBER Research 5 Administration 4 Headquarters 1 MGRSSN 333445555 987654321 888665555 MGRSTARTDATE 22-MAY-78 01-JAN-85 19-JUN-71 RESULT FNAME MINIT LNAME DNAME John B Smith null Franklin T Wong Research Alicia J Zelaya null Jennifer S Wallace Administration Ramesh K Narayan null Joyce A English null Ahmad V Jabber null James E Borg Headquarters 22
6.4 추가적인관계연산 (cont.) 외부유니온 (outer union) 호환성이없는두릴레이션을유니온하는데사용됨 예 STUDENT(Name, SSN, Department, Advisor) 와 FACULTY(Name, SSN, Department, Rank) 의 outer union은 RESULT(Name, SSN, Department, Advisor, Rank) 임 ; RESULT 에서 STUDENT 투플은 Rank 속성의값이 null이고, FACULTY 투플은 Advisor 속성의값이 null이다 23
6.5 관계대수질의의예 질의 1 : Research 부서에서일하는모든사원의이름과주소를검색하라. RESEARCH_DEPT σ DNAME = Research (DEPARTMENT) RESEARCH_EMPS RESEARCH_DEPT DNUMBER=DNO EMPLOYEE RESULT Π FNAME,LNAME,SFN,SLN (T) 질의 2 : Stafford 에위치한모든프로젝트에대하여프로젝트번호와관리부서번호, 부서관리자의성, 주소, 생년월일을나열하라. STAFFORD_PROJS σ DLOCATION = Stafford (PROJECT) CONTR_DEPT STAFFORD_PROJS DNUM=DNUMBER DEPARTMENT PROJ_DEPT_MGR CONTR_DEPT MGRSSN=SSN EMPLOYEE RESULT Π PNUMBER,DNUM,LNAME,ADDRESS,BDATE (PROJ_DEPT_MGR) 24
관계해석 6.6 투플관계해석 어떻게검색할것인가 보다 무엇을검색할것인가 만을기술하는선언적표현법을사용하는비절차적질의어 SQL 을포함한많은상업용관계언어들이관계해석에기반을두고있음 투플관계해석 (tuple relational calculus) 와도메인관계해석 (domain relational calculus) 으로구분됨 관계대수와의차이점 관계해석은하나의선언적 (declarative) 해석식으로검색질의를명시하며, 비절차적인언어임 관계대수에서는연산들을순차적으로사용하므로절차적인성질을가짐 두언어의표현력 (expressive power) 은동등함 25
6.6 투플관계해석 (cont.) 관계적완전성 (relationally completeness) 어떤관계질의어 L 이관계해석또는관계대수로표현가능한 어떤질의도표현할수있으면 L 은 관계적으로 완전 (relationally complete) 하다 라고한다. 대부분의관계질의어들은관계적으로완전하며, 집단함수 (aggregate functions), 그룹화 (grouping), 순서화 (ordering) 등의연산들을제공하므로관계해석보다표현력이강해진다. 26
6.6.1 투플변수와범위릴레이션 투플변수 릴레이션의투플들을범위 (range) 로가지는변수이다. 예제 : 봉급이 $50,000를넘는모든사원을검색하라. {t EMPLOYEE(t) and t.salary > 50000} 여기서, EMPLOYEE(t) 는투플변수 t가릴레이션 EMPLOYEE의투플들을범위로함을나타낸다. 투플 t에대하여 t.salary > 50000을만족하는투플만이검색된다. 투플 t의모든애트리뷰트값들이리턴된다. 프로잭션의표현 t의일부애트리뷰트만을검색하려면다음과같이작성한다. {t.fname, t.lname EMPLOYEE(t) and t.salary > 50000} 이는다음 SQL 질의와동일한의미를가진다. SELECT T.FNAME, T.LNAME FROM EMPLOYEE T WHERE T.SALARY > 50000; 27
6.6.2 투플관계해석의표현과식 투플관계해석의일반식형태 {t 1.A 1, t 2.A 2,..., t n.a n COND(t 1, t 2,..., t n, t n+1, t n+2,..., t n+m )} t 1, t 2,..., t n, t n+1, t n+2,..., t n+m 은투플변수 각 A i 는t i 가범위로하는릴레이션의애트리뷰트 COND는조건또는투플관계해석의식 (formula) 식 (formula) 은다음과같은원자 (atoms) 들로이루어짐 R i (t i ) 는 t i 의범위가 R i 임을명시 (t i.a op t j.b), op는비교연산자 (=, <,,...) (t i.a op c) 또는 (c op t j.b), c는상수 각원자는특정한투플들의조합에대해서참 (true) 또는거짓 (false) 으로계산되며, 계산된결과값을원자의진리값이라부름 식 (formula): and, or, not으로연결된원자들 모든원자들은식이다. F 1 과F 2 가식이면 (F 1 and F 2 ), (F 1 or F 2 ), not(f 1 ), not(f 2 ) 도식이다. 28
6.6.3 존재정량자와전체정량자 정량자 (quantifiers) 가식에사용될수있음 전체정량자 (universal quantifier) ( ) (for all이라읽음 ) 존재정량자 (existential quantifier) ( ) (their exists라읽음 ) 자유 (free) 투플변수와속박 (bound) 투플변수 어떤식 F가원자인경우, 여기에나타난투플변수의어커런스 (occurrence) 는 F에서자유롭다 ( 자유투플변수 ) 식 (F 1 and F 2 ), (F 1 or F 2 ), not(f 1 ), not(f 2 ) 에나타난투플변수 t가자유로운가여부는 F 1 이나 F 2 에서자유로운가에달려있다 F 내의투플변수 t의모든자유어커런스들은 F = ( t)(f) 나 F = ( t)(f) 형태의식에서정량자에속박된다 예제 : F1: d.dname = Research F2: ( t)(d.dnumber = t.dno) d는 F1과 F2 모두에서자유롭다 t는 F2에서 정량자에속박된다 29
6.6.3 존재정량자와전체정량자 정량자가포함된식의진리값계산 F가식이면, ( t)(f) 도식이다. F 내의 t의자유어커런스들에할당된 적어도하나의투플 에대해서 F가참으로계산되면식 ( t)(f) 는참이고, 그렇지않으면거짓이다. F가식이면, ( t)(f) 도식이다. F 내의 t의자유어커런스들에할당된 모든투플 에대해서 F가참으로계산되면식 ( t)(f) 는참이고, 그렇지않으면거짓이다. F가참이되게하는어떤투플 t가 존재 하면 ( t)(f) 가참이므로, 를존재정량자라부른다. 모든 투플들이 F를참이되도록해야 ( t)(f) 가참이므로, 를전체정량자라부른다. 30
6.6.4 존재정량자를이용한질의예 질의 1: Research 부서에서일하는모든사원의이름과주소를검색하라. Q1: {t.fname, t.lname, t.address EMPLOYEE(t) and ( d) (DEPARTMENT(d) and d.dname = Research and d.dnumber = t.dno)} 관계해석식에서자유투플변수들만막대 ( ) 왼쪽에나타낸다. 막대 ( ) 는 such that 이라읽는다 EMPLOYEE(t), DEPARTMENT(d) 는 t와 d의범위릴레이션을명시한다. d.dname = Research 는선택조건 (selection condition) 임 ( 관계대수의 SELECT에해당함 ) d.dnumber = t.dno는조인조건 (join condition) 임 ( 관계대수의 EQUI-JOIN과유사한목적으로사용됨 ) 31
6.6.4 존재정량자를이용한질의예 (cont.) 질의 2: Stafford 에위치한모든프로젝트에대하여, 프로젝트번호, 관리부서의번호와부서관리자의성, 생일, 그리고주소를나열하라. Q2: {p.pnumber, p.dnum, m.lname, m.bdate, m.address PROJECT(p) and EMPLOYEE(m) and p.plocation = Stafford' and (( d)(department(d) and p.dnum = d.dnumber and d.mgrssn = m.ssn))} 질의 8: 각사원에대하여, 그사원의이름과성, 그리고직속상사의이름과성을검색하라. Q8: {e.fname, e.lname, s.fname, s.lname EMPLOYEE(e) and EMPLOYEE(s) and e.superssn = s.ssn} 32
6.6.4 존재정량자를이용한질의예 (cont.) 질의 3 : 부서 5 에의해관리되는프로젝트에참여하는모든사원의이름을찾아라. Q3': {e.lname, e.fname EMPLOYEE(e) and (( x) ( w) (PROJECT(x) and WORKS_ON(w) and x.dnum = 5 and w.essn = e.ssn and x.pnumber = w.pno))} 33
6.6.4 존재정량자를이용한질의예 (cont.) 질의 4: Smith 라는성을가진사원이직원이나관리자로서관여된프로젝트들을나열하라. Q4: {p.pname PROJECT(p) and ((( e)( w)(employee(e) and WORKS_ON(w) and w.pno = p.pnumber and e.lname = Smith and e.ssn = w.essn)) or (( m)( d)(employee(m) and DEPARTMENT(d) and p.dnum = d.dnumber and d.mgrssn = m.ssn and m.lname = Smith )))} AND/OR/NOT 관계대수의 UNION 은관계해석의 or 연결자에대응함 INTERSECTION 은 and 연결자에대응함 not 연결자는전체정량자와존재정량자를동등한식으로변환하는데에사용될수있음 34
6.6.6 전체정량자와존재정량자사이의변환 수학적논리로부터유래된잘알려진변환법 ( x) (P(x)) (not x) (not(p(x))) ( x) (P(x)) not( x) (not(p(x))) ( x) (P(x) and Q(x)) (not x) (not(p(x)) or not(q(x))) ( x) (P(x) or Q(x)) (not x) (not(p(x)) and not(q(x))) ( x) (P(x) or Q(x)) not( x) (not(p(x)) and not(q(x))) ( x) (P(x) and Q(x)) not( x) (not(p(x)) or not(q(x))) 다음식들이성립함 ( 는내포 (implies) 를나타냄 ) ( x) (P(x)) ( x) (P(x)) (not x) (P(x)) not( x) (P(x)) 그러나, 다음은성립하지않음 not( x) (P(x)) (not x) (P(x)) 35
6.6.7 전체정량자의사용 전체정량자를사용할때식이의미를갖도록하기위하여몇가지규칙을따라야함 다음의질의 3을통하여규칙을살펴보자 질의 3: 5번부서에의해관리되는모든프로젝트들에참여하는사원들의이름을찾아라. Q3: {e.lname, e.fname EMPLOYEE(e) and (( x) (not (PROJECT(x)) or (not (x.dnum = 5) or (( w) (WORKS_ON(w) and w.essn = e.ssn and x.pnumber = w.pno)))))} Q3 의기본구성요소들 Q3: {e.lname, e.fname EMPLOYEE(e) and F } F = ( x) (not(project(x)) or F1) F1 = (not(x.dnum = 5) or F2) F2 = ( w) (WORKS_ON(w) and w.essn = e.ssn and x.pnumber = w.pno) 36
6.6.7 전체정량자의사용 Q3의설명 Q3의결과로구해지는사원 e는 5 번부서에서관리하는모든프로젝트에서근무해야한다. 이러한푸플을찾기위하여관심없는모든투플들을전체정량자로부터제외시켜야한다. F 에서, not(project(x)) 는관심있는릴레이션 PROJECT 에없는모든투플들에대해 x를참으로만든다. F1 에서, not(x.dnum = 5) 는관심없는 PROJECT 투플들, 즉 DNUM 이 5 가아닌투플들 에대해 x 를참으로만든다. F2 는나머지에대해만족되어야할조건, 즉 5 번부서에의해관리되는모든 PROJECT 투플들 을명시한다. F = ( x) (not(project(x)) or F1) F1 = (not(x.dnum = 5) or F2) F2 = ( w) (WORKS_ON(w) and w.essn = e.ssn and x.pnumber = w.pno) 37
6.6.7 전체정량자의사용 전체정량자로부터존재정량자로의변환 Q3 : {e.lname, e.fname EMPLOYEE(e) and (not( x) 추가적인예제들 : (PROJECT(x) and (x.dnum = 5) and (not( w) (WORKS_ON(w) and w.essn = e.ssn and x.pnumber = w.pno))))} 질의 6: 부양가족이없는사원들의이름을찾아라. Q6: {e.fname, e.lname EMPLOYEE(e) and (not( d) (DEPENDENT(d) and e.ssn = d.essn))} 전체정량자를사용하기위하여 Q6 를 Q6 으로변환하면 Q6 : {e.fname, e.lname EMPLOYEE(e) and ( ( d) (not(dependent(d)) or not(e.ssn = d.essn)))} 질의 7: 부양가족이적어도한명있는관리자들의이름을나열하라. Q7: {e.fname, e.lname EMPLOYEE(e) and (( d) ( p) (DEPARTMENT(d) and DEPENDENT(p) and e.ssn = e.mgrssn and p.essn = e.ssn))} 38
관계해석에서의안전식 6.6.8 안전식 (safe expression) 결과로서유한개의투플들을생성하는것이보장된식 불안전식은무한개의투플들을생성할수있고, 투플들의타입이서로다를수있음 불안전한식의예제 : {t not(employee(t))} 가능한모든투플들중에서 EMPLOYEE가아닌모든투플들을생성함 이러한투플들은무한개의투플들로구성되며, 투플의타입이상이할수있음 따라서위의식은불안전한식이됨 39
6.7 도메인관계해석 투플변수대신도메인변수 (domain variables) 를사용하는관계해석 도메인변수는한애트리뷰트의도메인을범위로가짐 차수가 n인릴레이션의경우 n 개의도메인변수를사용함예제 : 질의 0: 이름이 John B. Smith 인사원의생일과주소를검색하라. Q0: {uv ( q) ( r) ( s) (EMPLOYEE(qrstuvwxyz) and q = John and r = B and s = Smith )} EMPLOYEE의각애트리뷰트들을위한열개의도메인변수들 : qrstuvwxyz BDATE를위한변수 u, ADDRESS를위한 v 조건에참여하는변수들 q(fname), r(minit), s(lname) 조건에참여하는변수들 (q, r, s) 만존재정량자로속박함 또다른표기법 (QBE에서사용 ): Q0 : {uv EMPLOYEE( John, B, Smith,t,u,v,w,x,y,z)} 40
6.7 도메인관계해석 (cont.) 질의 1: Research 부서에서일하는모든사원들의이름과주소를검색하라. Q1: {qsv ( z) (EMPLOYEE(qrstuvwxyz) and ( l) ( m) (DEPARTMENT(lmno) and l = Research and m = z))} (m = z) 는조인조건 (l = Research ) 는선택조건 질의 2: Stafford 에위치한모든프로젝트에대해서프로젝트번호와부서번호, 그리고부서관리자의성, 생일, 주소를나열하라. Q2: {iksuv ( j) (PROJECT(hijk) and ( t) (EMPLOYEE(qrstuvwxyz) and ( m) ( n) (DEPARTMENT(lmno) and k = m and n = t and j = Stafford )))} 41
6.7 도메인관계해석 (cont.) 질의 6: 부양가족이없는사원들의이름을찾아라. Q6: {qs ( t) (EMPLOYEE(qrstuvwxyz) and (not ( l) (DEPENDENT(lmno) and t = l)))} 질의 7: 적어도한명의부양가족이있는관리자들의이름을나열하라. Q7: {sq ( t) (EMPLOYEE(qrstuvwxyz) and (( j) (DEPARTMENT(hijk) and (( l) (DEPENDENT(lmno) and t = j and l = t)))))} 42
요약 기본관계대수연산 선택 (SELECT), 프로젝트 (PROJECT), 합집합 (UNION), 차집합 (SET DIFFERNECE), 카티션프로덕트 (Cartesion product) 추가적인관계연산 집계함수, 그루핑연산, 외부조인연산 관계대수질의의예 투플 - 관계해석 투플변수와정량자 ( 존재정량자와전체정량자 ) 질의예제 안전식 도메인관계해석 43