thumbnail|right|540px|関係 (relation) を含む関係モデルの概念関係(かんけい、リレーション、)とは関係モデル(リレーショナルモデル)において、一つの見出しと0以上の同じ型の組 (タプル、行) の順序づけられていない集合からなるデータ構造のことである。 値としての関係を関係値 (relation value) といい、関係値を値としてもつ変数を関係変数 (relvar, relation variable) という。
関係データベースのデータベース言語であるSQL では、関係変数とほぼ同じ意味で表 (テーブル) という用語が使われている。文脈によって、関係変数を関係と呼ぶこともあり、また関係値を関係と呼ぶこともある。
その他、データベースにおける関係には以下のことが言える。 関係変数が値としてもつ関係値は、時間とともに変化する。 関係変数はデータ定義言語 (DDL) を使って定義することができる。 見出し (heading) は、特定の属性 (列、カラム) の順序づけられていない集合である。 関係値を構成する組の集合を本体 (body) という。 すなわち関係値は、見出しと本体から構成されている。 組は、0以上の属性の集合からなるデータ構造である。 属性は、属性名と定義域の名称のペアである。 定義域は、データ型と同じ意味と考えてよい。 属性は、その定義域に適合するなんらかの属性値をもつ。 属性値は、スカラ値もしくはより複雑な構造をもつ値である。 見出しを構成する属性の数を、次数 (degree) という。 関係値の次数は、0もしくは正の整数である。 次数が n である関係値を n 項関係 (n-ary relation) という。 関係値を構成する組の数を濃度 (cardinality) という。 関係値の濃度は、0もしくは正の整数である。 関係値では、重複する組は存在しない。 関係値を構成するおのおのの組は特定の一つ以上の属性の集合で識別される。 この属性集合を候補キー (candidate key) という。
例
複数の属性 (列、カラム) から構成される一つの見出しの例を示す。
+ 3つの属性から構成される見出しの例 属性名 : 定義域名 ID : 整数型 氏名 : 文字列型 住所 : 文字列型
この見出しとこの見出しに適合する複数の組 (タプル、行) から構成される一つの関係値の例を示す。 この例では、便宜的に関係値を視覚的に表 (テーブル) で示している。
+ 同じ型の組から構成される実際の関係値の例 ID : 整数型 氏名 : 文字列型 住所 : 文字列型 102 "ヒュー・ダーウェン" "沖縄県那覇市" 202 "エドガー・F・コッド" "宮城県仙台市" 104 "クリス・デイト" "熊本県熊本市" 152 "マイケル・ストーンブレーカー" "沖縄県沖縄市"
この例の関係値には、同じ型の組が4つ含まれている。 先述したように、見出しを構成する属性は順序づけられていない。 つまり、この例の見出しで「氏名の右側に住所がある」と述べることはまちがいであり、「住所は3番目の属性である」と述べることもまちがいである。 同じく先述したように、関係を構成する組は順序づけられていない。 つまり、この例の関係値で「 "マイケル・ストーンブレーカー" の組の前に "クリス・デイト" の組がある」と述べることはまちがいであり、「 "エドガー・F・コッド" の組は2番目の組である」と述べることもまちがいである。
基底関係変数と導出関係変数
関係変数には、基底関係変数と導出関係変数の、2つの種類がある。 関係変数に、関係代数あるいは関係論理の式を適用すると、新たに一つの関係値を導出することができる。
基底関係変数 (base relation variable) は、どの関係変数からも導出されていない、元になる関係変数をいう。 関係データベースのデータベース言語 SQL では、基底関係変数とほぼ同じ意味で基底表 (基底テーブル) という用語が使われている。 基底関係変数は、データ定義言語 (DDL) を使って定義することができる。 SQL では、CREATE TABLE 構文で基底関係変数を次のように定義することができる。
CREATE TABLE 人名録 ( ID INTEGER, 氏名 CHAR(40), 住所 CHAR(200), PRIMARY KEY (ID) )
導出関係変数 (derived relation variable) は、一つもしくは複数の関係変数を元にして関係代数あるいは関係論理の式を適用して導出された、関係変数をいう。 導出関係変数とほぼ同じ意味でビューという用語が使われている。 導出関係変数は、データ定義言語 (DDL) を使って定義することができる。 SQL では、CREATE VIEW 構文で導出関係変数を次のように定義することができる。
CREATE VIEW 沖縄県人名録 AS ( SELECT ID, 氏名, 住所 FROM 人名録 WHERE 住所 LIKE '沖縄県%' )
関連項目
二項関係 定義域 (ドメイン、型) 属性 (列、カラム) 組 (タプル、行) データ管理 データモデル データモデリング データベース データベース設計 関係の正規化 (リレーションの正規化、データベースの正規化) 一意性制約 候補キー (candidate key) 主キー (primary key) 代理キー (alternate key) スーパーキー (super key) 関係モデル (リレーショナルモデル) 関係データベース (RDB) 関係データベース管理システム (RDBMS) データベース言語/問い合わせ言語 データ定義言語 (DDL) SQL Tutorial D
参考文献