関係 (データベース)
From Wikipedia, the free encyclopedia

関係(かんけい、リレーション、英: relation)とは関係モデル(リレーショナルモデル)において、一つの見出しと0以上の同じ型の組 (タプル、行) の順序づけられていない集合からなるデータ構造のことである。
値としての関係を関係値 (relation value) といい、関係値を値としてもつ変数を関係変数 (relvar, relation variable) という。
関係データベースのデータベース言語であるSQL では、関係変数とほぼ同じ意味で表 (テーブル) という用語が使われている。文脈によって、関係変数を関係と呼ぶこともあり、また関係値を関係と呼ぶこともある。
その他、データベースにおける関係には以下のことが言える。
- 関係変数が値としてもつ関係値は、時間とともに変化する。
- 関係変数はデータ定義言語 (DDL) を使って定義することができる。
- 見出し (heading) は、特定の属性 (列、カラム) の順序づけられていない集合である。
- 関係値を構成する組の集合を本体 (body) という。
- すなわち関係値は、見出しと本体から構成されている。
- 組は、0以上の属性の集合からなるデータ構造である。
- 属性は、属性名と定義域の名称のペアである。
- 定義域は、データ型と同じ意味と考えてよい。
- 属性は、その定義域に適合するなんらかの属性値をもつ。
- 属性値は、スカラ値もしくはより複雑な構造をもつ値である。
- 見出しを構成する属性の数を、次数 (degree) という。
- 関係値の次数は、0もしくは正の整数である。
- 次数が n である関係値を n 項関係 (n-ary relation) という。
- 関係値を構成する組の数を濃度 (cardinality) という。
- 関係値の濃度は、0もしくは正の整数である。
- 関係値では、重複する組は存在しない。
- 関係値を構成するおのおのの組は特定の一つ以上の属性の集合で識別される。
- この属性集合を候補キー (candidate key) という。
複数の属性 (列、カラム) から構成される一つの見出しの例を示す。
| 属性名 : 定義域名 |
|---|
| ID : 整数型 |
| 氏名 : 文字列型 |
| 住所 : 文字列型 |
この見出しとこの見出しに適合する複数の組 (タプル、行) から構成される一つの関係値の例を示す。 この例では、便宜的に関係値を視覚的に表 (テーブル) で示している。
| ID : 整数型 | 氏名 : 文字列型 | 住所 : 文字列型 |
|---|---|---|
| 102 | "ヒュー・ダーウェン" | "沖縄県那覇市" |
| 202 | "エドガー・F・コッド" | "宮城県仙台市" |
| 104 | "クリス・デイト" | "熊本県熊本市" |
| 152 | "マイケル・ストーンブレーカー" | "沖縄県沖縄市" |
この例の関係値には、同じ型の組が4つ含まれている。 先述したように、見出しを構成する属性は順序づけられていない。 つまり、この例の見出しで「氏名の右側に住所がある」と述べることはまちがいであり、「住所は3番目の属性である」と述べることもまちがいである。 同じく先述したように、関係を構成する組は順序づけられていない。 つまり、この例の関係値で「 "マイケル・ストーンブレーカー" の組の前に "クリス・デイト" の組がある」と述べることはまちがいであり、「 "エドガー・F・コッド" の組は2番目の組である」と述べることもまちがいである。