←講義のツボメニューへ
←【ファイルとデータベース】シラバスへ データモデル
【2000.04.28 1限 第3回】
データモデル
- データモデルの必要性と目的:
- データベースは世の中の事象を表現している。
- 世の中をそのまま計算機の中に入れ込むことはできない。
- 何らかの秩序、ルールに従って、世の中を計算機に入れ込める形で表現する必要がある。
- この目的を実現するものとして、種々のデータモデルが提案されている。
ex) 階層モデル、ネットワークモデル、リレーショナルモデル(relational model)(別名、関係モデル)、オブジェクト指向データモデルなどが代表的。- データモデルから各計算機環境に合わせて実装したものがデータベースシステムになる。換言すれば、データモデルは、計算機環境から独立。
- 現在、世界で最も普及浸透しているのが、1970年からE.F.Codd氏によって提案された「リレーショナルモデル」。データベースで何が一番重要かと言ったら、この「リレーショナルモデル」であると言っても過言ではない!!リレーショナルモデルに基づき作られているデータベースが、「リレーショナルデータベース」と呼ばれる。
- 一般にデータモデルとは「データ定義」、「データ操作」、「一貫性制約」の三つからなる。
- データモデルを理解すると、データベース設計を上手に行うためのノウハウがつかめる。逆に言えば、初心者のデータベースユーザ/設計者がデータベースを理解できるか否かの山場がデータモデル。
リレーショナルモデルのデータ定義
- データ定義=データベースの対象世界をどのようなデータの枠組みのもとに表現するか。
- リレーショナルモデルでは、すべてのデータは2次元の表形式であらわす。この表のことを「リレーション(relation)」という。
- 属性=リレーションに含まれる各データ項目のこと。
- タプル=リレーションに属する個々の値の組は、「タプル(tuple)」と呼ばれる。
図:属性、タプルの例
- 「ドメイン」または「定義域」=属性の取りうる値の範囲のこと。属性一つに対応して一つのドメインが定められる。
ex)「性別」という属性に対して「男性」と「女性」、「社員ID」という属性に対して「10000以上40000以下の整数」など。- リレーショナルモデルの取り決めとして、ある行のある列に入れることが出来るのは一つの値のみと定められている。(∵表上の操作を簡易にするため)
- 非正規型リレーション=上記の条件が満たされていないリレーションのこと。リレーショナルモデルの範疇からはずれる。
- 正規型リレーション=上記の条件が満たされているリレーションのこと。
- 正規化(normalization)=非正規型リレーションを正規型リレーションに分解すること。
- 非正規型には、同一の属性で複数の値を取る場合の他に、単一の属性が属性内部で再帰的に構造を持つ場合もある(複合属性という)。このような正規化は、この属性自体を単一の表(リレーション)に格上げすることになる。
リレーショナルモデルの一貫性制約
- 一貫性制約=データモデル一般で言った場合、データベースが正しく世の中を表現するためにデータが満たされるべき性質や条件。
- リレーショナルモデルに特定しての一貫性制約では、リレーション内、およびリレーション間で満たされるべき性質や条件。
- リレーション内の条件:
1.主キーの値は重複してはならない。
2.主キーの値は空ではならない。
主キー=タプルを一意に特定するための属性または属性集合。これらの属性または属性集合についての値が定まると、その他のすべての属性の値が決まる。
ex)学生にとっての学籍番号など。
※1 「名前」は一般に主キーになり得ない。同姓同名があり得るから。一般には、時間に関連づけされた人工のコードが使われることが多い。
※2 第2回では、レコードについての「キー」という概念を扱った。「レコードを一意に特定する場合のフィールド」と、「検索のてがかりとするフィールド」という、異なる2つの意味で使われることがあるので注意が必要と述べた。 主キーは、上記の前者とほぼ等価に考えて良い。リレーショナルモデルでは、「主キー」という用語で呼ばれる。
※3 ラフな対応:
レコードを基調とした概念整理(実装レベル):リレーショナルモデル(データモデルレベル)
・レコード←→タプル
・レコード集合←→リレーション
・フィールド←→属性
・キー(上記前者)←→主キー
・フィールド長←→(なし。ただし、意味的にはドメインに関わってくる)- リレーション間の条件:
1.参照一貫性制約=外部キー(後述)に現れる値は、関連するリレーションの主キーとしてあらわれる値でなければならない。
外部キー=他のリレーションにおいては主キーとして用いられている属性のこと。一例として、単一の属性内に再帰的な構造を持つ非正規型リレーションから、その属性をリレーションに格上げした場合に生じる。 外部キーに空値を許すか否かは、対象世界の意味論による。主キーと違って、すべての場合に空値は認めない、とはいうわけではない。
参照一貫性制約が重要となるのは、タプルの挿入、削除、更新の場合。
1.削除の場合の4つの方法論:2.更新の場合の4つの方法論:
- 参照されているのだから、削除は禁止する。
- 主キーを消すと同時にそれを参照している外部キーを含むタプルも削除する。
- 削除された主キーを参照していた外部キーには代わりに空値を入れる。
- 削除された主キーを参照していた外部キーには代わりにデフォルト値を入れる。
※いずれを選択するかは、これも対象世界の意味論による。
- 参照されているのだから、更新は禁止する。
- 主キーを更新すると同時にそれを参照している外部キーも更新する。
- 更新された主キーを参照していた外部キーには代わりに空値を入れる。
- 更新された主キーを参照していた外部キーには代わりにデフォルト値を入れる。
リレーショナルモデルのデータ操作
1.関係代数(リレーショナル代数)関係代数(リレーショナル代数)の各演算
- (1)和、(2)共通、(3)差、(4)直積、(5)射影、(6)選択、(7)結合、(8)商、の8種類の演算が基本である。
- (1)〜(4)が最初提案され、その後(5)〜(8)が追加された。
- 和(union)∪
ドメインが一致する2つのリレーションR1,R2に含まれるすべてのタプルのことを、R1とR2の「和」という。いわゆる∪(カップ)を求めるもの。
Q1.図1において、R1∪R2を実際にリレーションとして書き出せ。
図1:ドメインが一致する2つのリレーションR1,R2の和、差、共通
R1 品目名 単価 コーヒー 500 紅茶 500 アイスコーヒー 550 ソーダ水 550 カレーライス 900
R2 品目名 単価 カレーライス 900 スパゲティ 950 ピザトースト 800
- 共通(intersection)∩
ドメインが一致する2つのリレーションR1,R2に共通に含まれるすべてのタプルのことを、R1とR2の「共通」という。いわゆる∩(キャップ)を求めるもの。
Q2.図1において、R1∩R2を実際にリレーションとして書き出せ。
- 差(difference)−
ドメインが一致する2つのリレーションR1,R2に置いて、R1にのみ含まれR2には含まれないタプルのことを、R1とR2の「差」という。和、共通と異なり、R1−R2とR2−R1は一般に、同じタプル集合とはならない。
Q3.図1において、R1−R2を実際にリレーションとして書き出せ。
※和、共通、差では、ドメインが一致していれば演算は可能で、例えば「品目名」と「食品名」のように、属性名が異なっても良い。
- 直積(Cartesian product)×
2つのリレーションから一つづつタプルを取り出してきて、すべての組み合わせでつなぐ。これをR1とR2の「直積」と呼ぶ。実際には後述の「結合」が使われることのほうが多い。
- 射影(projection)
あるリレーションの中からいくつかの属性を指定して取り出すのが「射影」。必要な属性のみに絞りたい場合に使われることが多い。
- 選択(selection)
あるリレーションの中に対して条件を指定して、条件を満たすタプルのみ取り出すのが「選択」。
- 結合(join)
直積に置いて、結びつけた2つの属性間である条件を満たすタプルのみを残したものを、「結合」という。図5は、2つの属性の値が等しいタプルについて、重複を排除し属性を一つに絞ったもので、「自然結合(natural join)」と呼ばれる。2つのリレーションを結びつけるために頻繁に使われる。
重複を排除せず、そのまま2つ属性を残した場合は、「凍結号(equi join)」と呼ばれる。また、2つとも残す場合で、属性の値が等しい場合以外に、シータ関係(>、<、≧、または≦や、文字列の大小関係など)が成立するものを残す場合を、「シータ結合(theta join)」と呼ぶ。 換言すると、2つのリレーションの直積の中から、シータ関係が成立するタプルだけを選択するものである。
- 商(division)
2つのリレーションR1,R2があるとき、以下の演算によって導出されるもののことを、R1÷R2、つまり「商」という。ここで実施される演算とは、R2のリレーションのすべてのタプルを含むR1側のタプルを取り出して、そのタプルからR2の属性を除く。 図6の例では、コーヒー500円とトースト200円の両方を注文した人の名前は、大木と後藤です、ということになる。
問1、2、3の答えはここ。
←講義のツボメニューへ
←【ファイルとデータベース】シラバスへ
←鈴木研究室ホームへ