データベースの理論的な部分を
を基に学んでいく。
前回
今日のまとめ
- 「テーブルの各セルに1つのデータが入力された」テーブルを第1正規形と呼ぶ。
- 関係スキーマ
が与えられたとする。その任意のインスタンス
について、属性列
の部分列
が性質
を満たすとき、をこの関係スキーマ
における超キーであるという。 また関係スキーマ
の超キー
は
のインスタンスとなる任意のテーブル
の超キーともいう。
- 関係スキーマ
が与えられたとき、属性列
の部分列
が性質 (1)
は超キーである (2)
のどの真部分列も超キーとならないを満たすとき、
を候補キーという。関係スキーマの属性のうち、候補キーに属するものをキー属性、属さないものを非キー属性という。
- データベース管理上の理由で都合の良いように選ばれた1つの候補キーを主キーという。
2. 関係データベースの基本
関係データベースの基本として、まずはデータの関係モデルを考える。
が提案したデータの関係モデル(
)は数学の集合論における「関係」*1の理論をデータベースに応用したものである。
この議論をするために、まずは直積集合を導入する。
2.2 リレーションのテーブルによる表示
データのリレーションはテーブルの形でユーザに表示させる。テーブルの横の並びを行といい、縦の並びは列という。各データが入力される枠をセルないしフィールドと呼ぶ。
2.2.3 インスタンス
1つの関係スキーマに対して、それと組み合わせてテーブルとなることができるリレーションは複数ある。データは常に更新され得ることため、リレーションは流動的なものである。
一般に関係スキーマに対して直積集合
の有限部分集合はすべてデータのリレーションとして可能な候補であり、関係スキーマのインスタンスという。関係スキーマはその1つのインスタンスと組み合わせて1つのテーブルを構成する。ただし直積集合の部分集合であっても現実の制約からリレーションとして採用できない部分集合があり得る。
2.2.4 タプルからの成分の切り出し
属性をとし、
項リレーション
のタプルを
とする。このとき各属性
に対して
でタプルの
-成分と呼ぶ。すなわち
はタプル
からその
番目の属性
に関するデータを切り出した結果である。
この定義は属性の列に拡張できる。関係スキーマの属性から
個(
)の属性
(
)をこの順番で選んで並べた列
を
の部分列という。タプル
と
の部分列
に対して
と定義し、タプルの
-成分と呼ぶ。全ての属性についてデータを切り出すと、
である。
以下のようにテーブルおよびタプルを定義するとき、
学生名 研究室名 学科名 太郎 知識情報学 知識科学 次郎 データ解析学 データ科学 三郎 データ解析学 データ科学 まず
である。また属性の列
に対して、
である。また全属性
に対して、
である。
2.2.5 第1正規形
これまで用いてきたテーブルは第1正規形と呼ばれる。第1正規形と呼ばれる条件は「テーブルの各セルに1つのデータが入力されること」である。
1セル1データの条件はデータ処理を単純にするためにがテーブルに課した最低の条件である。第1正規形の条件を満たさないテーブルを非正規形という。
関係データベースは一般に複数のテーブルから構成され、それぞれ少なくとも第1正規形でなければならない。
非正規形のテーブルを第1正規形にする手続きを第1正規化という。タプルの1つのセルに個のデータが入力されていれば、そのタプルは
個のタプルにする。更にデータが重複するセルがあるならば、なくなるまで同じ作業を繰り返す。
2.2.6 超キーと候補キー、主キー
データ処理ではテーブルの各行を一意に特定してアクセスする必要がある。テーブルを表示したときのタプル位置は任意であるから、データベースシステムが便宜上、行番号を表示したとしても、それはタプル固有の番号ではなく、データ処理には使えない。そこで各タプルを一意に特定するための仕掛けが必要である。簡単なのは各タプルに属性の1つとして固有の番号を持たせればよい。
タプルを一意に特定できる属性を超キーと呼ぶ。
数学的に一意性を定義する。属性がタプルを1つ特定するならば、任意のタプル
に対して、
が成り立つ。これの対偶を取ることで、
を得る。これは、属性-成分が同一となるタプルが1つしか存在しないことを意味する。
超キー 関係スキーマ
を満たすとき、をこの関係スキーマ
における超キーであるという。
また関係スキーマの超キー
は
のインスタンスとなる任意のテーブル
の超キーともいう。
いずれの関係スキーマにも
自信という超キーを必ず持つ。逆に
の超キー
に対して、
を部分列とする属性列
も
の超キーである。
しかし自体は超キーとしてたいてい、冗長である。そこで新たに候補キーという概念を定義する。
候補キー 関係スキーマ
は超キーである
のどの真部分列も超キーとならない
を満たすとき、を候補キーという。関係スキーマの属性のうち、候補キーに属するものをキー属性、属さないものを非キー属性という。
1つの関係スキーマに候補キーが複数存在する場合、データベース管理上の理由で都合の良いキーを1つ選ぶ。それを主キーという。関係スキーマやテーブルでは主キーに下線を引く約束である。
*1:データベースの分野では「リレーション」と呼称するのが一般的である。