일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이썬
- 다이나믹 프로그래밍
- SWEA
- DP
- DFS
- 그래프 탐색
- 완전탐색
- 그래프 이론
- 그리디 알고리즘
- 깊이우선탐색
- 자바스크립트
- 데이터베이스
- 브루트포스 알고리즘
- 백트래킹
- 프로그래머스
- Python
- oracle
- 다익스트라
- 너비 우선 탐색
- 백준 알고리즘
- 스택
- 브루트포스
- 구현
- 백준알고리즘
- SW Expert Academy
- javascript
- 오라클
- 너비우선탐색
- 문자열
- BFS
- Today
- Total
민규의 흔적
[오라클 DB] 관계 데이터 모델과 관계 대수의 기본 개념 본문
관계 데이터 모델
관계 데이터 모델에서 지원되는 두 가지 정형적인 언어가 존재한다.
관계 해석 (Relational calculus)
원하는 데이터만 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는 선언적인 언어
관계 대수 (Relational algebra)
원하는 결과를 얻기 위해 어떻게 질의를 수행할 것인가를 명시하는 절차적 언어
관계 대수는 상용관계 DBMS에서 널리 사용되는 SQL의 이론적인 기초 개념이다.
SQL
상용 관계 DBMS들의 표준 질의어이다.
관계 데이터베이스에 릴레이션을 정의하고 ,정보를 검색하고, 또한 갱신할 수 있음.
그리고 여러 가지 무결성 제약조건들을 명시할 수 있음.
관계 대수 또는 관계 해석으로 기술한 질의를 SQL 언어로 기술할 수 있다면 관계적으로 완전(relational complete) SQL 언어가 검증되었음을 판단할 수 있다.
관계 대수
관계 대수란, 릴레이션을 처리하기 위한 기본적인 연산자들의 집합이다.
관계 대수를 통해 기존의 릴레이션으로부터 새로운 릴레이션을 생성하게 되는데, 그 이유는 하나의 관계 연산은 한 개 이상의 입력 릴레이션에 연산자를 적용하여 새로운 릴레이션 하나를 결과로 생성하기 때문이다.
피연산자도 릴레이션, 연산 결과도 릴레이션이다.
위 그림에서, 관계 연산자 1은 한 개의 릴레이션을 입력으로 받으므로 단항 연산자이며,
관계 연산자 2는 두 개의 릴레이션을 입력으로 받으므로 이항 연산자이다.
또한, 결과 릴레이션은 또 다른 관계 연산자의 입력으로 사용될 수 있다. (R1와 R2 두 릴레이션을 연산하여 R3 릴레이션을 도출하였으면, R3 또한 R4와 같은 다른 릴레이션과 연산의 입력값으로 사용될 수 있다.)
관계 대수의 완전성
실렉션, 프로젝션, 합집합, 차집합, 카티션 곱은 관계 대수의 필수적인 연산자이다.
다른 관계 연산자들은 필수적인 관계 연산자를 두 개 이상 조합하여 표현할 수 있다.
임의의 질의어가 적어도 필수적인 관계 대수 연산자들만큼의 표현력을 갖고 있으면 관계적으로 완전(relationally complete) 하다고 말한다.
즉, 관계 대수 연산자들을 새로 제안한 데이터 언어로 기술할 수 있으면 관계적으로 완전하다고 하고 해당 언어가 검증되었다고 판단이 가능하다.
관계 대수의 한계
1. 관계 대수는 산술 연산을 할 수 없다.
2. 집단 함수(aggregate function)를 지원하지 않는다.
예를 들어, 특정 집단에서 특정 속성값이 최대값(MAX)인 튜플을 추출하는 것이 불가능하다.
3. 정렬을 나타낼 수 없다.
4. 데이터베이스를 수정할 수 없다.
5. 프로젝션 연산의 결과에 중복된 튜플을 나타내는 것이 필요할 때가 있는데 이를 명시하지 못한다.
관계 대수의 한계에 따른 추가된 관계 대수
1. 그룹화
2. 집단 함수 (SUM, AVG, MIN, COUNT)
3. 외부 조인
관계 대수 연산자들은 데이터베이스 질의를 표현하는데 충분하지 않기 때문에 관계 DBMS의 표준 질의어인 SQL은 이런 요구사항을 모두 지원한다.
'데이터베이스' 카테고리의 다른 글
[오라클 DB] 관계 대수 연산자 - 순수 관계 연산자 (2) | 2023.10.18 |
---|---|
[오라클 DB] 관계 대수 연산자 - 일반 집합 연산자 (0) | 2023.10.18 |
[오라클 DB] 무결성 제약조건 (도메인, 엔티티, 참조 무결성 제약조건) (0) | 2023.10.18 |
[오라클 DB] 릴레이션의 키(키의 종류) (0) | 2023.10.18 |
[오라클 DB] 릴레이션의 특성 (2) | 2023.10.17 |