Difference between r1.6 and the current
@@ -1,6 +1,10 @@
#noindex
[[관계데이터연산relationship_data_operation]]([[연산operation]]) 두 가지 중의 하나.원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 절차 언어(procedural language).[* https://terms.naver.com/entry.naver?docId=3431158&cid=58430&categoryId=58430&expCategoryId=58430]
간단히 말해 릴레이션을 처리하는 연산자들의 모임.
수학의 집합 연산자를 차용했음.
'''관계대수'''의 피연산자인 [[릴레이션relation]]에 연산자를 적용한 결과도 릴레이션이라는 폐쇄특성이 있음.[* https://terms.naver.com/entry.naver?docId=3431176&cid=58430&categoryId=58430&expCategoryId=58430]
연산자의 집합으로도 정의할 수 있음.피연산자는 릴레이션. 연산자를 적용한 결과도 릴레이션. (폐쇄 특성, closure property)
즉, '''관계대수'''는 [[릴레이션relation]]을 연산함.
@@ -8,19 +12,159 @@
대표적 연산자 8개는 특성에 따라 두 가지로 분류 가능.
관계 대수 연산자들:
* 일반 집합 연산자 (set operation)
----
[[WpEn:Relational_algebra]]
[[https://terms.naver.com/entry.naver?docId=3431160&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 관계 대수의 개념과 연산자]]
관계 대수 연산자들:
* 일반 집합 연산자 (set operation)
두 [[릴레이션relation]]을 대상으로 연산을 수행.
* 합집합union ∪ 두 릴레이션의 합집합 tuple을 구한다.
* 교집합intersection ∩ 두 릴레이션의 교집합 tuple을 구한다.
* 차집합difference − 두 릴레이션의 차집합 tuple을 구한다.
* Cartesian product × 두 릴레이션의 모든 tuple을 각각 연결하여 생성된 tuple을 구한다.
* 순수 관계 연산자 (relational operation) 릴레이션의 구조와 특성을 이용하는 연산자.
* [[실렉트select]] σ 릴레이션에서 조건을 만족하는 tuple을 구한다.
* [[프로젝트project]] π 릴레이션에서 주어진 [[속성attribute]]들의 값으로만 구성된 tuple을 구한다.
* [[조인join]] ⨝ 공통 속성을 이용해 두 릴레이션의 tuple들을 연결하여 생성된 tuple을 구한다.
* [[디비전division]] ÷ 나누어지는 릴레이션에서 나누는 릴레이션의 모든 tuple과 관련이 있는 tuple을 구한다.
----
Ex.
||SQL ||'''relational algebra'''||
||SELECT <attribute list> ||π <attribute list> ||
||WHERE <condition> ||σ <condition> ||
SQL문
SELECT BDATE, SALARY FROM EMP WHERE FNAME='John';
에 해당하는 관계대수식:
π,,BDATE,SALARY,,(σ,,FNAME='John',,(EMP))
[* 황인준 2022-03-23 44m]
----
[[https://terms.naver.com/entry.naver?docId=3431166&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 순수 관계 연산자]]
{
[[실렉트select]] σ
'''(셀렉트, 실렉트, 선택) 연산'''
[[릴레이션relation]]에서, 주어진 조건을 만족하는 [[튜플tuple]]만 선택하여, 결과 릴레이션을 만든다.
"결과 릴레이션은 주어진 릴레이션을 수평으로 절단한 것과 같아 해당 릴레이션의 수평적 부분 집합(horizontal subset)을 생성하는 것과 같다" 이게 뭐지?
unary operator: relation ↦ relation
형식:
> σ,,조건식,,([[릴레이션relation]])
데이터 언어의 형식:
> 릴레이션 where 조건식
조건식을 비교식 또는 프레디킷(predicate)이라고도 한다. ''([[술어predicate]]?)''
조건식에는 비교연산자(>, ≥, <, ≤, =, ≠), 논리연산자(∧, ∨, ¬) 등이 들어감.
ex. 고객 relation에서 등급이 gold인 tuple을 검색하기
> σ,,등급 = 'gold',,(고객)
> 고객 where 등급 = 'gold'
ex2. 고객 relation에서 등급이 gold, 적립금이 2000 이상인 tuple검색
> σ,,등급 = 'gold' ∧ 적립금 ≥ 2000,,(고객)
> 고객 where 등급 = 'gold' and 적립금 ≥ 2000
특성: commutative.
σ,,조건식1,,(σ,,조건식2,,(릴레이션))
= σ,,조건식2,,(σ,,조건식1,,(릴레이션))
= σ,,조건식1 ∧ 조건식2,,(릴레이션)
> σ,,<select조건>,,(R)
[[릴레이션relation]]에서, selection_condition을 만족하는 튜플의 부분집합을 선택하는 연산.
'horizontal filtering, horizontal selection, horizontal partition'.
unary_operator.
....
결과로 생긴 relation의 [[차수degree]]는 R의 그것과 같다. (당연)
결과로 생긴 relation의 [[튜플tuple]] 수([[카디널리티cardinality]])는 R의 그것 이하이다. (당연)
Selectivity of the condition: the fraction of tuples selected by a selection condition. (뽑힌 비율)
Google:selectivity 하면 '선택도' 라고 보통 번역하는 듯?
[[VG:비율,rate]] [[VG:비,ratio]]
Commutative. ([[VG:교환법칙,commutativity]])
> σ,,<cond1>,,(σ,,<cond2>,,(R))=σ,,<cond2>,,(σ,,<cond1>,,(R))
Select operations의 sequence는 selection_condition들이 AND로 연결된 하나의(single) select operation으로 치환 가능.
> σ,,<C1>,,(σ,,<C2>,,(...σ,,<Cn>,,(R)...)) = σ,,<C1> AND <C2> AND ... AND <Cn>,,(R)
두번째가 비용(time_complexity?)이 훨씬 적게 든다. 따라서 사용자가 첫번째처럼 [[질의query]]를 날리더라도 [[query_optimizer]]가 두번째처럼 변환해 실행한다.
[* KU황인준 2022-04-04 1:04:00]
Up: [[관계데이터연산relationship_data_operation]] > [[관계대수relational_algebra]] 관계연산 관계연산자 relational operation
Ref. [[https://terms.naver.com/entry.naver?docId=3431167&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 셀렉트]]
-----
[[프로젝트project]] π
'''프로젝트 연산'''
[[릴레이션relation]]에서 선택한 [[속성attribute]]에 해당하는 값으로 결과 relation을 구성.
즉, 주어진 relation의 일부 열로만 구성된, 수직적 부분집합(vertical subset)이 결과 relation으로 됨.
unary operator: relation ↦ relation
수학적 표현:
> π,,속성리스트,,(릴레이션)
데이터 언어 형식 표현:
> 릴레이션[속성리스트]
ex. 고객 릴레이션에서 등급을 검색
> π,,등급,,(고객)
> 고객[등급]
ex. 고객 릴레이션에서 고객이름, 등급, 적립금을 검색
> π,,고객이름,등급,적립금,,(고객)
또는
> 고객[고객이름, 등급, 적립금]
''QQQ 이름을 보니... 사영, 프로젝션, [[VG:사영,projection]], [[VG:사상,mapping]] 이런거와 관련이 있나?''
Up: [[관계데이터연산relationship_data_operation]] > [[관계대수relational_algebra]] 관계연산 관계연산자 relational operation
Ref. [[https://terms.naver.com/entry.naver?docId=3431168&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 프로젝트]]
-----
[[조인join]] ⨝
-----
[[디비전division]] ÷
'''디비전 division 연산'''
두 [[릴레이션relation]] R과 S의 '''디비전(division) 연산'''은 R ÷ S로 표현.
릴레이션 S의 모든 [[튜플tuple]]과 관련있는 릴레이션 R의 tuple로 결과 relation이 구성됨.
다만, R이 S의 모든 [[속성attribute]]을 포함하고 있어야 연산이 가능.
binary operator: (relation, relation) ↦ relation
Up: [[관계데이터연산relationship_data_operation]] > [[관계대수relational_algebra]] 관계연산 관계연산자 relational operation
Ref. [[https://terms.naver.com/entry.naver?docId=3431170&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 디비전]] <--- 다시 읽어볼 것!!!
}
= tmp; select and project. 황인준 =
select operation σ
일부 [[튜플tuple]]만 선택 → 'horizontal partition'
commutative
project operation π
일부 [[열column]]만 선택 → 'vertical partition'
not commutative
주의: SQL의 SELECT는 위 둘 중 아래(project)에 더 가깝다.
----
Links ko:
https://chartworld.tistory.com/12 관계대수
Twins:
https://foldoc.org/relational+algebra
[[WpKo:관계대수]] - 내용 빈약[[WpEn:Relational_algebra]]
[[https://terms.naver.com/entry.naver?docId=3431160&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 관계 대수의 개념과 연산자]]
[[https://terms.naver.com/entry.naver?docId=3431171&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 관계 대수를 이용한 질의 표현]]
https://everything2.com/title/relational+algebra (not short)
Up: [[database]]
Compare: [[관계해석relational_calculus]]
Up: [[database]] [[관계데이터연산relationship_data_operation]]
Ref. [[https://terms.naver.com/entry.naver?docId=3431176&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 관계 데이터 연산 요약]]
원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 절차 언어(procedural language).[1]
간단히 말해 릴레이션을 처리하는 연산자들의 모임.
수학의 집합 연산자를 차용했음.
관계대수의 피연산자인 릴레이션relation에 연산자를 적용한 결과도 릴레이션이라는 폐쇄특성이 있음.[2]
연산자의 집합으로도 정의할 수 있음.
피연산자는 릴레이션. 연산자를 적용한 결과도 릴레이션. (폐쇄 특성, closure property)
즉, 관계대수는 릴레이션relation을 연산함.
간단히 말해 릴레이션을 처리하는 연산자들의 모임.
수학의 집합 연산자를 차용했음.
관계대수의 피연산자인 릴레이션relation에 연산자를 적용한 결과도 릴레이션이라는 폐쇄특성이 있음.[2]
연산자의 집합으로도 정의할 수 있음.
피연산자는 릴레이션. 연산자를 적용한 결과도 릴레이션. (폐쇄 특성, closure property)
즉, 관계대수는 릴레이션relation을 연산함.
대표적 연산자 8개는 특성에 따라 두 가지로 분류 가능.
관계 대수 연산자들:
관계 대수 연산자들:
- 일반 집합 연산자 (set operation)
두 릴레이션relation을 대상으로 연산을 수행.
- 합집합union ∪
두 릴레이션의 합집합 tuple을 구한다.
- 교집합intersection ∩
두 릴레이션의 교집합 tuple을 구한다.
- 차집합difference −
두 릴레이션의 차집합 tuple을 구한다.
- Cartesian product ×
두 릴레이션의 모든 tuple을 각각 연결하여 생성된 tuple을 구한다.
- 합집합union ∪
- 순수 관계 연산자 (relational operation)
릴레이션의 구조와 특성을 이용하는 연산자.
- 실렉트select σ
릴레이션에서 조건을 만족하는 tuple을 구한다.
- 프로젝트project π
릴레이션에서 주어진 속성attribute들의 값으로만 구성된 tuple을 구한다.
- 조인join ⨝
공통 속성을 이용해 두 릴레이션의 tuple들을 연결하여 생성된 tuple을 구한다.
- 디비전division ÷
나누어지는 릴레이션에서 나누는 릴레이션의 모든 tuple과 관련이 있는 tuple을 구한다.
- 실렉트select σ
Ex.
SQL문
SQL | relational algebra |
SELECT <attribute list> | π <attribute list> |
WHERE <condition> | σ <condition> |
SQL문
SELECT BDATE, SALARY FROM EMP WHERE FNAME='John';
에 해당하는 관계대수식:πBDATE,SALARY(σFNAME='John'(EMP))
[3]"결과 릴레이션은 주어진 릴레이션을 수평으로 절단한 것과 같아 해당 릴레이션의 수평적 부분 집합(horizontal subset)을 생성하는 것과 같다" 이게 뭐지?
unary operator: relation ↦ relation
조건식을 비교식 또는 프레디킷(predicate)이라고도 한다. (술어predicate?)
조건식에는 비교연산자(>, ≥, <, ≤, =, ≠), 논리연산자(∧, ∨, ¬) 등이 들어감.
조건식에는 비교연산자(>, ≥, <, ≤, =, ≠), 논리연산자(∧, ∨, ¬) 등이 들어감.
ex. 고객 relation에서 등급이 gold인 tuple을 검색하기
σ등급 = 'gold'(고객)
고객 where 등급 = 'gold'
ex2. 고객 relation에서 등급이 gold, 적립금이 2000 이상인 tuple검색
σ등급 = 'gold' ∧ 적립금 ≥ 2000(고객)
고객 where 등급 = 'gold' and 적립금 ≥ 2000
특성: commutative.
σ조건식1(σ조건식2(릴레이션))
'horizontal filtering, horizontal selection, horizontal partition'.
unary_operator.
....
결과로 생긴 relation의 차수degree는 R의 그것과 같다. (당연)
결과로 생긴 relation의 튜플tuple 수(카디널리티cardinality)는 R의 그것 이하이다. (당연)
Selectivity of the condition: the fraction of tuples selected by a selection condition. (뽑힌 비율)
Commutative. (교환법칙,commutativity)
[4]
σ조건식1(σ조건식2(릴레이션))
= σ조건식2(σ조건식1(릴레이션))
= σ조건식1 ∧ 조건식2(릴레이션)
= σ조건식1 ∧ 조건식2(릴레이션)
σ<select조건>(R)릴레이션relation에서, selection_condition을 만족하는 튜플의 부분집합을 선택하는 연산.
'horizontal filtering, horizontal selection, horizontal partition'.
unary_operator.
....
결과로 생긴 relation의 차수degree는 R의 그것과 같다. (당연)
결과로 생긴 relation의 튜플tuple 수(카디널리티cardinality)는 R의 그것 이하이다. (당연)
Selectivity of the condition: the fraction of tuples selected by a selection condition. (뽑힌 비율)
Commutative. (교환법칙,commutativity)
σ<cond1>(σ<cond2>(R))=σ<cond2>(σ<cond1>(R))Select operations의 sequence는 selection_condition들이 AND로 연결된 하나의(single) select operation으로 치환 가능.
σ<C1>(σ<C2>(...σ<Cn>(R)...)) = σ<C1> AND <C2> AND ... AND <Cn>(R)두번째가 비용(time_complexity?)이 훨씬 적게 든다. 따라서 사용자가 첫번째처럼 질의query를 날리더라도 query_optimizer가 두번째처럼 변환해 실행한다.
[4]
Up: 관계데이터연산relationship_data_operation > 관계대수relational_algebra 관계연산 관계연산자 relational operation
Ref. DB개론: 셀렉트
Ref. DB개론: 셀렉트
릴레이션relation에서 선택한 속성attribute에 해당하는 값으로 결과 relation을 구성.
즉, 주어진 relation의 일부 열로만 구성된, 수직적 부분집합(vertical subset)이 결과 relation으로 됨.
즉, 주어진 relation의 일부 열로만 구성된, 수직적 부분집합(vertical subset)이 결과 relation으로 됨.
unary operator: relation ↦ relation
수학적 표현:
π속성리스트(릴레이션)데이터 언어 형식 표현:
릴레이션[속성리스트]
ex. 고객 릴레이션에서 등급을 검색
π등급(고객)ex. 고객 릴레이션에서 고객이름, 등급, 적립금을 검색
고객[등급]
π고객이름,등급,적립금(고객)또는
고객[고객이름, 등급, 적립금]
Up: 관계데이터연산relationship_data_operation > 관계대수relational_algebra 관계연산 관계연산자 relational operation
Ref. DB개론: 프로젝트
Ref. DB개론: 프로젝트
조인join ⨝
디비전 division 연산
두 릴레이션relation R과 S의 디비전(division) 연산은 R ÷ S로 표현.
릴레이션 S의 모든 튜플tuple과 관련있는 릴레이션 R의 tuple로 결과 relation이 구성됨.
다만, R이 S의 모든 속성attribute을 포함하고 있어야 연산이 가능.
릴레이션 S의 모든 튜플tuple과 관련있는 릴레이션 R의 tuple로 결과 relation이 구성됨.
다만, R이 S의 모든 속성attribute을 포함하고 있어야 연산이 가능.
binary operator: (relation, relation) ↦ relation
Up: 관계데이터연산relationship_data_operation > 관계대수relational_algebra 관계연산 관계연산자 relational operation
Ref. DB개론: 디비전 <--- 다시 읽어볼 것!!!
}
Ref. DB개론: 디비전 <--- 다시 읽어볼 것!!!
}
tmp; select and project. 황인준 ¶
select operation σ
project operation π
주의: SQL의 SELECT는 위 둘 중 아래(project)에 더 가깝다.
project operation π
주의: SQL의 SELECT는 위 둘 중 아래(project)에 더 가깝다.
Twins:
https://foldoc.org/relational algebra
관계대수 - 내용 빈약
Relational_algebra
DB개론: 관계 대수의 개념과 연산자
DB개론: 관계 대수를 이용한 질의 표현
https://everything2.com/title/relational algebra (not short)
https://foldoc.org/relational algebra
관계대수 - 내용 빈약
Relational_algebra
DB개론: 관계 대수의 개념과 연산자
DB개론: 관계 대수를 이용한 질의 표현
https://everything2.com/title/relational algebra (not short)
Ref. DB개론: 관계 데이터 연산 요약
----