Download presentation
Presentation is loading. Please wait.
Published byAnja Kähkönen Modified 5년 전
1
5장. 관계대수와 관계 해석 관계 대수 릴레이션들을 다루는 연산들의 집합 검색 요구(질의)를 기술하는 데에 사용
관계 데이터베이스에서 명세할 수 있는 요청들의 유형 이해 및 질의 처리 최적화에 이용 됨
2
[그림 4.6] COMPANY 스키마의 관계 데이터베이스 인스턴스
3
5.1.1 실렉트(SELECT) 연산 SELECT 연산 (σ로 표기)
연산 형식: σ<선택조건>(<릴레이션이름>) <선택조건>: <애트리뷰트이름> <비교연산자> <상수값>, <애트리뷰트이름> <비교연산자> <애트리뷰트이름> 과 논리 연산자 AND, OR, NOT의 조합 * 비교 연산자: ,, ,,, 결과는 애트리뷰트 값들이 <선택조건>을 만족하는 투플들로 구성 된 릴레이션.
4
예제1 : σDno=4 (EMPLOYEE) 예제 2:
Fname Minit Lname Ssn Bdate Address Sex Salary Super_ssn Dno Alicia J Zelaya Castle, Spring, TX F Ahmad V Jabbar Dallas, Houston, TX M Jennifer S Wallace Berry, Bellaire, TX F 예제 2: σ(Dno=4 AND Salary>25000) OR (Dno=5 AND Salary > 30000) (EMPLOYEE)
6
5.1.2 프로젝트(PROJECT) 연산 PROJECT 연산 (로 표기): 테이블로부터 어떤 열들을 선택하는 연산
연산 형식: L(R) 즉 <애트리뷰트 리스트>(<릴레이션이름>) 결과 릴레이션은 L에 명시된 R의 애트리뷰트들만 갖는다. 예제: Lname,Fname,Sslary (EMPLOYEE) PROJECT 연산은 결과 릴레이션이 수학적 집합이므로 중복된 투플들을 제거한다. 예) Sex, Salary (EMPLOYEE)
7
5.1.3 연산의 순서와 이름 변경 연산 몇개의 연산들이 결합되어 관계대수식(질의)을 형성한다.
예) 부서 5에서 일하는 사원들의 이름과 봉급을 검색하라. Fname,Lname,Salary (σDno=5 (EMPLOYEE)) 각 중간 단계의 릴레이션들에 이름을 부여할 수도 있다. DEPT5_EMPS ←σDno=5 (EMPLOYEE) RESULT ← Fname,Lname,Salary (DEPT5_EMPS)
8
Fname John Franklin Ramesh Joyce Lname Smith Wong Narayn English
Fname Minit Lname Ssn Bdate Address Sex Salary Super_ssn Dno Franklin T Wong Voss, Houston, TX M Ramesh K Narayan FireOak, Humble, TX M John B Smith Fondren, Houston, TX M Joyce A English Rice, Houston, TX F Fname John Franklin Ramesh Joyce Lname Smith Wong Narayn English Salary 30000 40000 38000 25000
9
결과 릴레이션에 나타나는 애트리뷰트들의 이름을 재명명(rename)할 수도 있다.
TEMP ←σDno=5 (EMPLOYEE) R(First_name, Last_name, Salary) ← Fname,Lname,Salary(TEMP) 또는 Temp2 ← Fname,Lname,Salary(TEMP) R ← (First_name, Last_name, Salary) (TEMP2)
11
5.2 집합이론과 관계 대수 연산 수학적 집합 이론에서의 이진 연산 합집합: R1∪R2 교집합: R1∩R2 차집합: R1-R2
13
연산 ∪,∩,-에 대하여, 피연산자 릴레이션 R1(A1,A2,. ,An)과 R2(B1,B2,
연산 ∪,∩,-에 대하여, 피연산자 릴레이션 R1(A1,A2,...,An)과 R2(B1,B2,...,Bn)는 애트리뷰트들의 갯수가 같고 대응되는 애트리뷰트들의 도메인이 호환성을 갖아야 한다. 즉, i=1,2,...,n에 대하여 dom(Ai) = dom(Bi)이다. 연산 ∪,∩,-의 결과 릴레이션은 피연산자 릴레이션 R1과 같은 애트리뷰트 이름들을 갖는다.
14
예: 5번 부서에서 일하거나 5번 부서에서 근무하는 사원들을 감독하는 모든 사원들의 주민 등록 번호 검색
DEPT5_EMPS ←σDno=5 (EMPLOYEE) RESULT1 ← Ssn (DEPT5_EMPS) RESULT2(Ssn) ← Super_ssn (DEPT5_EMPS) RESULT RESULT1 ∪ RESULT2
15
카티션 프로덕트 (CARTESIAN PRODUCT)
R1(A1, A2, …, Am) × R2(B1, B2, …, Bn) R(A1, A2, …, Am, B1, B2, …, Bn) R1(A1,A2,...,Am)×R2 (B1,B2,...,Bn)의 결과 릴레이션 R은 R1의 투플과 R2 의 투플의 모든 조합에 대한 투플을 가짐. R1이 n1개의 투플을, R2가 n2개의 투플을 갖는다면, R은 n1*n2 개의 투플을 갖는다.
16
예) DEPARTMENT×EMPLOYEE
DNAME DNUMBER MGRSSN …... FNAME SSN …... DNO Research …... John … Research …... Franklin … …… …… …… …… …… …… …… …… …... Research … James … 1 Administration … John … 5 …… …… …… …… …… …… …… …… …... Administration …… Jennifer …… …… 4 …… …… …… …… …… …… …… …… …... Headquarters … James … 1
17
카티션 프로덕트는 적절한 SELECT 연산과 함께 사용되면 두 릴레이션에서의 관련된 투플들을 조합할 수 있다.
예제: 모든 DEPARTMENT 투플과 그 부서장의 EMPLOYEE 투플을 조합하라. DEP_EMP ← DEPARTMENT×EMPLOYEE DEPT_MANAGER ← σMgr_ssn=Ssn(DEP_EMP)
18
σMgr_ssn=Ssn(DEP_EMP)
Dname Dnumber Mgr_ssn …... Fname Ssn …… Dno Research …... Franklin … Administration …… Jennifer …… …… Headquarters …... James … 1
19
예제: 모든 여자 사원들에 대하여 그들의 부양 가족들의 이름 검색
FEMALE_EMPS ← σSex=‘F’(EMPLOYEE) EMPNAMES ← Fname, Lname, Ssn(FEMALE_EMPS) EMP_DEPENDENTS ← EMPNAMES× DEPENDENT ACTUAL_DEPENDS ← σSsn=Essn(EMP_DEPENDENTS) RESULT ← Fname, Lname, Dependent_name(ACTUAL_DEPENDS)
21
5.3.1 조인(JOIN) 연산 조인 연산은 릴레이션들간의 관계를 처리할 수 있게 해주는 연산
두 릴레이션 R(A1,A2,...,Am)과 S(B1,B2,...,Bn)에 대한 조인 연산의 일반적 형태는 R <조인조건>S 조인 결과는 n+m개의 애트리뷰트들을 순서대로 갖는 릴레이션 Q(A1,A2,...,Am,B1,B2,...,Bn)으로 R과 S의 투플들의 모든 조합 중 조인 조건을 만족하는 투플로 구성
22
예제: 모든 부서의 이름과 그 부서의 관리자의 이름 검색
DEPT_MGR ← DEPARTMENT Mgr_ssn=SsnEMPLOYEE RESULT ← Dname, Lname, Fname(DEPT_MGR) 조인 연산은 실렉트가 따라오는 카티션 프로덕트와 유사 TEMP_DEPT_MGR ← DEPARTMENT× EMPLOYEE DEPT_MGR ← σMgr_ssn=Ssn(TEMP_DEPT_MGR)
24
5.3.2 동등 조인과 자연 조인 조인 조건 <조건> AND <조건> AND … AND <조건> 각 조건의 형태는 Ai θ Bj 이며, Ai 는 R의 애트리뷰트, Bj 는 S의 애트리뷰트임 조인 조건에 사용된 속성 (Ai 와 Bj 를 조인 속성이라고 부름) Theta Join 일반적인 조인 조건(>, =, < 등)을 가진 조인 연산
25
조인 조건에서 동등 비교(equality comparison) 만을 사용하는 조인
EQUIJOIN 조인 조건에서 동등 비교(equality comparison) 만을 사용하는 조인 EQUIJOIN 사용 예제: 모든 DEPARTMENT의 이름과 그 관리자의 이름을 검색하라: T ← DEPARTMENT Mgr_ssn=Ssn EMPLOYEE RESULT ← ΠDname,Fname,Lname(T)
26
자연 조인 (NATURAL JOIN) (*):
EQUIJOIN의 결과에는 두 조인속성의 값이 중복되어 나타남 조인 결과에서 조인 속성 하나를 제거하여 중복된 값이 나타나지 않도록 한 조인을 자연조인이라고 함 표시법 : R ← R1*(R1의 조인 애트리뷰트들),(R2의 조인 애트리뷰트들) R2 예제: 모든 EMPLOYEE의 이름과 그의 DEPARTMENT 이름을 검색하라 T ← EMPLOYEE *(Dno),(Dnumber) DEPARTMENT RESULT ← ΠFname,Lname,Dname(T)
27
두 조인 속성이 동일한 이름을 갖는다면 간단히 R ← R1* R2라고 표시함
예제: 모든 EMPLOYEE의 이름과 그 상급자의 이름을 검색하라: SUPERVISOR(Super_ssn,SFN,SLN) // 속성 이름의 변경 ←ΠSsn,Fname,Lname(EMPLOYEE) T ← EMPLOYEE * SUPERVISOR // 자연조인 RESULT ← ΠFname,Lname,SFN,SLN(T)
28
주의 자연 조인에서는 조인 애트리뷰트들이 양쪽의 릴레이션에서 동일한 이름을 가져야 하며, 그렇지 않는 경우 조인 속성의 이름을 먼저 동일하게 변경해야 함 두 릴레이션에서 하나 이상의 조인 애트리뷰트 쌍이 존재하는 경우 주의가 요망됨
29
예제: “모든 EMPLOYEE의 이름과 그가 일하는 DEPARTMENT의 이름을 검색하라” 에 대한 자연 조인은 다음과 같이 작성함
DEPT ← (Dname, Dnum, Mgr_ssn, Mgr_start_date) (DEPARTMENT) PROJ_DEPT ← PROJECT * DEPT // DUNM이 조인속성임; // MGRSSN은 조인속성이 아님
30
5.3.3 관계대수 연산의 완전집합 최소한의 연산자 집합
지금까지 소개한 모든 연산자는 선택(SELECT), 프로젝트(PROJECT), 합집합(UNION), 차집합(SET DIFFERNECE), 카티션 프로덕트 (CARTESIAN PRODUCT) 연산들 만의 조합으로 표현할 수 있음 연산자 집합 {σ,Π, ∪,-,×}를 관계대수 연산자의 완전 집합(complete set)이라 부름 이 연산자 집합과 동등한 모든 질의 언어들은 관계적으로 완전하다(relationally complete)라고 정의함
31
추가적으로 유용한 연산자들 디비젼(division) 연산 집단 함수(aggregate functions)와 그룹화(grouping) 연산 외부 조인(OUTER JOIN)과 외부 합집합(OUTER UNION)
Similar presentations