データベースの理論的な部分を
を基に学んでいく。
今日のまとめ
- データベースには、信頼性を担保すべく ①ドメイン制約 ②主キー制約 ③参照整合的制約 ④関数従属性による制約といった制約が求められる。
- テーブルからデータを検索するための演算として、 ①和 ②積 ③差 ④直積 ⑤射影 ⑥選択 ⑦結合 ⑧商といった概念がある。
2. 関係データベースの基本
2.3 整合的制約
データベースには信頼性が肝要である。関係モデルでは信頼性低下を予防するために整合的制約を課している。主な整合的制約として、
- ドメイン制約:タプルが取る各属性の値はその属性のドメインの要素でなければならない。
- 主キー制約:タプルを一意に特定するために、 (1)主キー属性の値が同じであるようなタプルの複数入力を阻止する。 (2)主キー属性に空値()を含む不完全なタプルの入力を阻止する。
- 参照整合的制約:関係スキーマに外部キーが指定されているならば、その外部キーは、空値でなければ、別の関係スキーマの主キー属性の値でなければならない*1。
- 関数従属性による制約:2つの属性の間で片方の値を決定するともう一方の値が一意に決まる。
がある。
2.4 関係代数
2.4.1 テーブルからのデータ検索
はテーブルから必要なデータを検索するための基礎理論として、関係代数および関係論理という2つのデータ操作言語を提案した。ここでは関係代数を説明する。
関係データベースの検索言語が他にあったとして、それが関係代数または関係論理と少なくとも同等な検索能力を持つとき、関係完備であるという。たとえばは関係完備である。
関係代数ではテーブルから必要なデータを検索するためにつの演算が定義されている。つまたはつのテーブルを入力とし、つのテーブルを出力するのが関係代数の演算である。
はそれぞれつの演算からなるつのグループで関係代数の理論を構成した。第一のグループは、通常の集合演算をタプルの集合としてのリレーションに適用するものである。もう1つが関係データベースのテーブルに向けてが独自に定義した演算である。
(1) | 和() | |
(2) | 積() | |
(3) | 差() | |
(4) | 直積() | |
(5) | 射影() | |
(6) | 選択() | |
(7) | 結合() | |
(8) | 商() |
2.4.3 関係代数の独自演算
次に関係代数独自の演算について定義する。
射影は1つのテーブルから縦方向へデータを切り出し、検索に必要な属性の列をつなげて新たなテーブルを作るもので、入力テーブルの関係スキーマをとし、検索したい個の属性をとするとき、テーブルに対して、属性列への射影を
と定義する。
選択は1つの入力テーブルを行の方向に切って、不要なタプルを切り捨て残りのタプルを貼り合わせる。その結果、必要なタプルのみから構成されるテーブルを出力するものである。必要なタプルを選ぶために選択条件式を用いる。選択条件式は入力テーブルの2属性の値を比較する式で演算子を(,,,,,)とすれば、
と書ける。更に論理演算子の否定を組み合わせ、より詳細な条件式も構成できる。
入力テーブルからの選択条件式による選択演算を適用した結果、得られる出力テーブルを
と書く。
結合は2つの入力テーブルからより大きな1つのテーブルを出力する演算である。2つの入力テーブルに結合条件式による結合演算を適用して得られたテーブルをで表す。これをの結合条件式による結合という。すなわち
である。
商は直積演算した結果を元に戻すものである。つのテーブルがそれらの関係スキーマに含まれる全属性について、が成り立つとする。に対する商演算を適用した結果をと書き、をで割った商という。
商演算は他の演算を組み合わせることで表現できる。
2.4.4 実テーブルと導出テーブル、ビューテーブル
一般に関係データベースは複数のテーブルから構成される。そのデータベースを直接構成するテーブルを実テーブルと呼ぶ。一方で関係代数の演算による出力を導出テーブルという。関係代数を適切に用いて複数の実テーブルからユーザーが必要とする部分のみを導出したテーブルをビューテーブルという。