반응형
관계형 쿼리 언어
데이터베이스에서 데이터를 조작하고 검색할 수 있게 해줍니다
관계 대수를 사용합니다
관계 대수
선언적(SQL) 쿼리를 정확하고 최적화 가능한 표현으로 변환할 수 있게 해줍니다
하나 또는 두 개의 관계를 입력으로 받아 새로운 관계를 생성하는 연산 집합입니다
- 한 관계: 단항 연산
- 선택, 투영, 이름 변경 등
- 두 관계: 이항 연산
- 카티션 곱, 집합 차이
- 결과 관계의 스키마는 입력 관계와 쿼리에 의해 결정됩니다
- 다른 쿼리의 입력으로 사용될 수 있습니다 → 서브쿼리 (Subquery)!
반응형
관계 대수 연산자
핵심 5가지 연산자
선택 σ Selection
선택 연산자 σ(시그마)는 입력 관계에서 유지할 행을 지정합니다
- 조건은 부울 표현식입니다
투영 π Projection
투영 연산자 π(파이)는 입력 관계에서 유지할 열을 지정합니다
Selection과 Projection의 특성
- 선택과 투영은 중복을 제거합니다
하지만 관계는 이미 집합 아닌가요?
- 투영은 열을 제거합니다 → 중복을 초래할 수 있습니다
- 실제로 데이터베이스 시스템은 bag semantics을 구현합니다 (↔ 집합 semantics)
- 중복 제거는 시간이 많이 소요됩니다
- 스키마
- 선택이나 투영의 결과 스키마는 입력과 동일합니다
- 교환 법칙
- "firstName" 속성만 남기면 결과 관계에 "birth" 속성이 없어 선택을 수행할 수 없기 때문입니다 따라서 이와 같은 쿼리가 동등한 쿼리가 되어야 합니다
- 그러면 둘이 같다면, 어느 쿼리가 더 좋을까요?
- DBMS의 유형과 테이블 저장 전략에 따라 다릅니다
- 행 지향 저장: Selection 먼저
- 열 지향 저장: Projection 먼저
728x90
집합 연산자
op = (∪) 합집합, (∩) 교집합, (-) 차집합
- A와 B는 호환 가능해야 합니다 → 같은 수의 필드(속성)
- 각 관계 스키마의 i번째 필드는 같은 도메인과 이름을 가져야 합니다
차집합 Set Difference
대부분의 연산자는 단조증가입니다 → 입력의 크기가 증가하면 출력도 증가합니다
하지만! 차집합은 비단조적입니다
교집합
다른 핵심 연산자를 사용하여 표현할 수 있습니다
→ 교집합은 핵심 연산자가 아닙니다
카티션 곱 (교차 곱)
A가 m개의 레코드를 포함하고 B가 n개의 레코드를 포함한다면, R_결과는 m X n개의 레코드를 포함할 것입니다
추가 연산자
이름 변경 (ρ)
관계 대수 쿼리의 결과에 이름을 할당하는 것이 유용할 때가 있습니다
관계의 이름을 새 이름 s로 변경합니다
관계와 그 속성의 이름을 변경합니다
지정된 속성의 이름을 변경합니다
예시: 카티션 곱을 사용하여 최대값 찾기
계좌가 있다고 가정해 봅시다
Account={accNumber, type, balance, branchName}
- 다른 계좌보다 잔액이 적은 계좌 찾기
- 차집합을 사용하여 가장 큰 잔액을 가진 계좌 찾기
반응형
'컴퓨터공학 > 데이터베이스 DB' 카테고리의 다른 글
외부 조인과 내부 조인 Inner Join and Outer Join (2) | 2024.10.20 |
---|---|
기초 SQL문 정리 SFW, HAVING, GROUP BY ... (8) | 2024.10.19 |
데이터베이스 SQL DDL과 DML (5) | 2024.10.18 |
관계형 데이터베이스 모델, Relational Data Models (0) | 2024.10.13 |
DB 입문, 데이터베이스 기초 (10) | 2024.10.12 |