관계대수와 SQL
1. "관계 해석" 과 "관계 대수"
위 2개는 관계 데이터 모델이 지원되는 2가지 정형적인 언어이다.
1) 관계해석
관계해석은 원하는(What) 데이터만을 명시하고 어떻게 수행할것인가에(How)
대한 명시가 없는 선언적인 언어이다.
2) 관계대수
관계대수는 어떻게 수행할 것인지에 대해 명시가 되어있는 절차적 언어이다.
관계대수는 사용관계 DBMS들에서 널리 사용되는 SQL의 이론적인 기초이다.
2. SQL이란
SQL이란 상용관계 DBMS들의 사실상의 표준 질의어 이다.
* 사용자는 SQL을 사용하여 관계 데이터베이스에 다음과 같은 일들을 할 수 있다.
1) DB에 릴레이션 정의
2) 정보 검색
3)관계데이터베이스 갱신(Update)
4) 여러 무결성 제약조건들을 명시
3. 관계 대수
1) 관계 대수는 기존의 릴레이션들로부터 새로운 릴레이션을 생성한다.
2) 릴레이션이나 관계 대수식에 연산자들을 적용하여 보다 복잡한 관계 대수식을 점차적으로 만들 수 있다.
3) 관계 대수는 기본적인 연산자들의 집합으로 이루어져있다.
4) 산술 연산자와 유사하게 단일 릴레이션이나 2개의 릴레이션을 입력으로 받아 하나의 결과 릴레이션을 생성할 수 있다.
5) 결과 릴레이션은 또다른 관계 연산자의 입력으로 사용될 수 있다.
⇒ 관계 연산자들의 종류
1. 필수 연산자
: 셀렉션, 프로젝션, 합집합, 차집합, 카티젼 곱
2. 편의에 의해 유도된 연산자
: 교집합, 조인, 디비전(나누기)
등이 있다.
4. 관계대수의 연산자들
1. 셀렉션(Selection) 연산자
한 릴레이션에서 셀렉션 조건을 만족하는 튜플들의 부분집합을 생성한다.
- 결과 릴레이션의 차수는 입력 릴레이션의 차수와 같다.
- 결과 릴레이션의 카디널리티는 항상 원래 릴레이션의 카디널리티보다 작거나 같다.
- 셀렉션 조건은 일반적으로 릴레이션의 임의의 어트리뷰트와 상수, 비교연산자, AND, OR 과 같은 부울 연산자를 포함할 수 있따.
👍 카디널리티 (cardinality) : 하나의 릴레이션에서 투플의 전체 개수
👍 어트리뷰트 (Attribute) : 릴레이션의 속성
2. 프로젝션 연산자
한 릴레이션의 어트리뷰트(속성)들의 부분집합을 구한다.
- 결과로 생성되는 릴레이션은 <Attribute List'> 에 명시된 속성만을 가진다.
- 셀력션의 결과 릴레이션에서는 중복 튜플들이 존재할 수 없지만,
- 프로젝션은 중복 튜플이 존재 할 수 있다.
3. 합집합 연산자
말 그대로 두 릴레이션의 합집합으로 이루어진 릴레이션을 구한다.
결과 릴레이션에서 중복된 튜플들은 제외한다.
4. 교집합 연산자
두 릴레이션에 모두 속한 튜플들로 이루어진 릴레이션
5. 차집합 연산자
R과 S 릴레이션이 있다고 가정할때 R-S는 R,S의 교집합을 제거한 릴레이션이다.
6. 카디젼 곱 연산자
릴레이션 R과 S가 있을 때 R과 S의 튜플들의 모든 가능한 조합으로 이루어진 릴레이션을 말한다.
7. 조인 연산자
두개의 릴레이션으로부터 연관된 튜플들을 결합하는 연산자이다.
- 세타조인, 동등조인, 자연조인, 외부조인, 세미조인 등이 있다.
5. 관계대수의 한계
1) 관계 대수는 산술연산을 할 수 없다.
2) 집단함수를 지원하지 않는다.
3) 정렬을 나타낼 수 없다.
4) 데이터베이스를 수정할 수 없다.
'DataBase > Mysql' 카테고리의 다른 글
Mysql Workbench로 import/ export 하기 (데이터 내보내기, 데이터 가져오기) (0) | 2021.07.22 |
---|---|
Python 이용하여 Mysql에서 Json 데이터 Insert하기 (json 데이터 삽입) (3) | 2021.05.18 |
[MySQL]"DB" 제약 조건, 뷰, 트랜젝션 (0) | 2021.05.07 |
[MySQL] "DB" 조인(Join)과 다중 테이블 연산 (0) | 2021.05.07 |
[MySQL] "DB" SQL 이란 (0) | 2021.05.07 |