リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性...

30
. . . . . . はじめに リレーショナル代数 計算可能性 おわりに . . リレーショナル代数入門 @htk16 May 24, 2013 @htk16 リレーショナル代数入門

Transcript of リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性...

Page 1: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.

......リレーショナル代数入門

@htk16

May 24, 2013

@htk16 リレーショナル代数入門

Page 2: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 目次

リレーショナル代数タプル関係リレーショナル演算子

計算可能性リレーショナル完備

@htk16 リレーショナル代数入門

Page 3: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. リレーショナル代数?

関係 と 8つのリレーショナル演算子 からなる代数系

RDB の基礎となる論理体型

最初の定義: E.F. Codd, A Relational Model of Data for LargeShared Data Banks [1]

今回は C. J. Date の定義 [2] を元に議論を進める

@htk16 リレーショナル代数入門

Page 4: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. なぜリレーショナル代数を学ぶの?

理論なくして実践に浮かれる者は,舵と羅針盤を持たずして船に乗り込み,どこへ向かうのかも皆目検討のつかぬ操舵手のごとし.実践は十分な理論の上にこそ成り立つ.

レオナルド・ダ・ビンチ (1452-1519)

リレーショナル代数 (理論) を学ぶことで,RDBMS (実践) の理解が深まる (に違いない)

@htk16 リレーショナル代数入門

Page 5: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. タプル

.属性........型名 と 属性名 の組 (T ,A)

.コンポーネント........属性 (T ,A) と T 型の値 v の組 ((T ,A), v)

.タプル..

......

コンポーネントの集合 {((T1,A1), v1), . . . , ((Tn,An), vn)} .ただし,i ̸= j ⇒ Ai ̸= Aj

@htk16 リレーショナル代数入門

Page 6: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. タプルの例

{(ASNO , S1), (ASNAME , ”Smith”), (ASTATUS , 20), (ACITY , ”London”)}

ASNO = (SNO, SNO)

ASNAME = (SNAME ,NAME )

ASTATUS = (STATUS , INTEGER)

ACITY = (CITY ,CHAR)

@htk16 リレーショナル代数入門

Page 7: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 補足

次数 タプルに含まれるコンポーネント数

見出し タプルに含まれる属性の集合

Date はタプルを集合によって定義しているが,Codd は組みによって定義している

タプルのコンポーネントは 順序関係を持たない

文献 [2] では属性名によって属性を表現している箇所があるが,紛らわしいので本発表では明確に区別する

@htk16 リレーショナル代数入門

Page 8: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. タプルの等価性

タプル s, t が等しいとは以下の条件をみたす場合のみをいう

s, t の見出しが等しい

s = {(A1, u1), . . . , (An, ui )},t = {(A1, v1), . . . , (An, vi )} のとき,任意の i (1 ≤ i ≤ n) に関して ui = vi

@htk16 リレーショナル代数入門

Page 9: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 関係

属性の集合 H = {A1, . . . ,An} と,H を見出しとするタプルの集合 {t1, . . . , tm} の組みを 関係 と呼ぶ

見出し H

本体 {t1, . . . , tm}次数 n

濃度 m

@htk16 リレーショナル代数入門

Page 10: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 関係の例

{{(ASNO , S1), (ASNAME , ”Smith”), (ASTATUS , 20), (ACITY , ”London”)},{(ASNO , S2), (ASNAME , ”Jones”), (ASTATUS , 10), (ACITY , ”Paris”)},{(ASNO , S3), (ASNAME , ”Blake”), (ASTATUS , 30), (ACITY , ”Paris”)},{(ASNO , S4), (ASNAME , ”Clark”), (ASTATUS , 20), (ACITY , ”London”)},{(ASNO , S5), (ASNAME , ”Adams”), (ASTATUS , 30), (ACITY , ”Athens”)}}

ASNO = (SNO, SNO)

ASNAME = (SNAME ,NAME )

ASTATUS = (STATUS , INTEGER)

ACITY = (CITY ,CHAR)

@htk16 リレーショナル代数入門

Page 11: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 表的な表現

{(SNO, SNO)} (SNAME ,NAME) (STATUS , INTEGER) (CITY ,CHAR)

S1 ”Smith” 20 ”London”S2 ”Jones” 10 ”Paris”S3 ”Blake” 30 ”Paris”S4 ”Clark” 20 ”London”S5 ”Adams” 30 ”Athens”

表のように表現しているが 関係は表ではない

タプルのコンポーネントは順序関係を持たない

タプルは順序関係を持たない

@htk16 リレーショナル代数入門

Page 12: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 補足

本体の任意の部分集合は本体

本体は集合なので 重複したタプルを持たない

本体に含まれるタプルは順序関係を持たない

関係は 表ではない,集合である

@htk16 リレーショナル代数入門

Page 13: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. リレーショナル演算子

Codd が定義した 8つのリレーショナル演算子を示す.

交わり

デカルト積

制限

射影

結合

演算結果はすべて 関係 である.

@htk16 リレーショナル代数入門

Page 14: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 和

.和..

......

同じ見出しを持つ関係 r , s に関して和 r UNION s を以下のように定義する

r UNION s = {t | t ∈ r ∨ t ∈ s}

.

......

SELECT DISTINCT R.CITY

FROM R

UNION DISTINCT

SELECT DISTINCT S.CITY

FROM S

.

......

@htk16 リレーショナル代数入門

Page 15: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 差

.差..

......

同じ見出しを持つ関係 r , s に関して差 r MINUS s を以下のように定義する

r MINUS s = {t | t ∈ r ∧ t ̸∈ s}

.

......

SELECT R.CITY

FROM R

EXCEPT

SELECT S.CITY

FROM S

.

......

@htk16 リレーショナル代数入門

Page 16: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 交わり

.交わり..

......

同じ見出しを持つ関係 r , s に関して交わり r INTERSECT s を以下のように定義する

r INTERSECT s = {t | t ∈ r ∧ t ∈ s}

.

......

SELECT DISTINCT R.CITY

FROM R

INTERSECT

SELECT DISTINCT S.CITY

FROM S

.

......

@htk16 リレーショナル代数入門

Page 17: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. デカルト積

.デカルト積..

......

見出しの共通部分が空集合である関係 r , s に関してデカルト積 r TIMES s を以下の様に定義する

r TIMES s = {tr ∪ ts | tr ∈ r ∧ ts ∈ s}

.

......

SELECT

R.SNO, R.SNAME, R.STATUS

R.CITY AS SCITY

S.PNO, S.PNAME

S.COLOR, S.WEIGHT

S.CITY AS PCITY

FROM R, S

.

......

@htk16 リレーショナル代数入門

Page 18: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 商

.商..

......

関係 s の見出しが関係 r の見出しの部分集合であるとき,商 r DIVIDEBY s を以下のように定義する

r DIVIDEBY s = {t ′ | t ∪ t ′ ∈ r ∧ t ∈ s}

.

......

SQL は省略

(r TIMES s) DIVIDEBY s = rなので商と呼ばれる

.

......

@htk16 リレーショナル代数入門

Page 19: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 制限

.制限..

......

関係 r の bx に基づく制限 r WHERE bx を次のように定義する

r WHERE bx = {t | t ∈ r ∧ bx = true}

ただし bx は r の見出しに含まれる属性名からなる論理式である.

.

......

SELECT R.*

FROM R

WHERE R.CITY = ’Paris’

.

......

@htk16 リレーショナル代数入門

Page 20: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 射影

.射影..

......

見出し {A1, . . .Am,B1, . . . ,Bn} を持つ関係 r に関して,射影 r {A1, . . . ,Am} を以下のように定義する

r {A1, . . . ,Am} = {{(A1, v1), . . . , (Am, vm)} |{(A1, v1), . . . , (Am, vm)} ∪ t ′ ∈ r}

.

......

SELECT DISTINCT R.SNAME,

R.CITY, R.STATUS

FROM R

.

......

@htk16 リレーショナル代数入門

Page 21: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 結合

.結合..

......

関係 r の見出しが {A1, . . . ,Am,B1, . . . ,Bn} ,関係 s の見出しが {A1, . . . ,Am, C1, . . . , Cp} の時,結合 r JOIN s を以下のように定義する.

r JOIN s = {tA ∪ tB ∪ tC | tA ∪ tB ∈ r ∧ tA ∪ tC ∈ s}

ただし tA = {(A1, v1), . . . , (Am, vm)} である

.

......

SELECT

R.PNO, R.PNAME, R.COLOR,

R.WEIGHT, R.CITY, S.SNO,

S.SNAME, S.STATUS

FROM R, S

.

......

@htk16 リレーショナル代数入門

Page 22: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. その他の演算子

.名前変更演算子..

......

関係 r の見出しが {A1, . . . ,An} であるとき,名前変更演算子 r RENAME (Ai as B) は,r の見出し,本体に含まれる属性名 Ai を属性名 B に置き換えて得られる関係を表す.

.半結合 r SEMIJOIN s..

......

r SEMIJOIN s = (r JOIN s) Hs

ただし Hs は s の見出しである.

.半差 r SEMIMINUS s..

...... r SEMIMINUS s = r MINUS (r SEMIJOIN s)

@htk16 リレーショナル代数入門

Page 23: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. プリミティブ演算子

8つの演算子はすべてがプリミティブではない.制限,射影,結合,和,半差 はプリミティブセットの一つである.

@htk16 リレーショナル代数入門

Page 24: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 候補キー

K を見出し H の部分集合とする.H を見出しとする任意の関係 r に関して以下を満たす場合にK を候補キー (キー) と呼ぶ

一意性 ∀t1, t2 ∈ r K に関して t1 ̸= t2

規約性 K のどの部分集合も候補キーでない

@htk16 リレーショナル代数入門

Page 25: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. リレーショナル代数: まとめ

タプル コンポーネント (属性と値の組み) の集合

関係 見出し (属性の集合) と 本体 (タプルの集合) の組み

リレーショナル代数 関係と 8つのリレーショナル演算子からなる代数系

関係は 表ではないタプルのコンポーネントは順序関係を持たないタプルは順序関係を持たない

@htk16 リレーショナル代数入門

Page 26: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 問い合わせ言語の等価性

関係の集合 DB に対して,問い合わせ言語 L の問い合わせを有限回行なって得られる関係全体の集合を L(DB) で表す..問い合わせ言語の等価性..

......

問い合わせ言語 L1, L2 が等価 (L1 ≡ L2) であるとは,任意の関係の集合 DB に関して以下を満たす場合のみをいう.

L1(DB) = L2(DB)

@htk16 リレーショナル代数入門

Page 27: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. リレーショナル完備

.リレーショナル完備..

......

問い合わせ言語 L がリレーショナル完備であるとは,任意の関係の集合 DB に関して以下を満たす場合のみをいう.

L(DB) ⊇ LR(DB)

ただし LR はリレーショナル代数である.

問い合わせ言語 L がチューリング完備ならば,L はリレーショナル完備である.ただし,逆は成り立たない.

@htk16 リレーショナル代数入門

Page 28: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 問い合わせ言語の合流性,停止性

リレーショナル代数と等価な問い合わせ言語 L は型付きラムダ計算でエンコード可能である [3].

型付きラムダ計算の性質から以下が成り立つ.

L は合流性を持つ

L は停止性を持つ

@htk16 リレーショナル代数入門

Page 29: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. おわりに

リレーショナル代数は関係と 8つのリレーショナル演算子からなる代数系

関係は表ではなく集合

リレーショナル代数と等価な問い合わせ言語は,型付きラムダ計算でエンコード可能

@htk16 リレーショナル代数入門

Page 30: リレーショナル代数入門 - Syonboriはじめに リレーショナル代数 計算可能性 おわりに. リレーショナル代数?関係と8つのリレーショナル演算子からなる代数系

. . . . . .

はじめに リレーショナル代数 計算可能性 おわりに

.. 参考文献

[1] E.F. Codd, “A relational model of data for large shared databanks,” Communications of the ACM, vol.13, no.6,pp.377–387, 1970.

[2] C.J.Date著,株式会社クイープ訳,データベース実践講義,O’Reilly Japan,2006.

[3] G.G. Hillebrand and H.G.a. Kanellakis, P.C. Mairson,“Database query languages embedded in the typed lambdacalculus,” Logic in Computer Science, pp.332–343, June 1993.

@htk16 リレーショナル代数入門