関係モデル


関係モデルの特徴

関係モデルでは、対象世界の実体と実体間の関連を数学の集合と関係(リレーション)の概念に基づいたフラットな表(テーブル)を用いて表現する。

●関係

実体が持つ属性を仮にA、Bとする。このA、Bの値の集合(これを属性値集合または定義域という)から直積を作る。作られた直積の部分集合を関係という。
実体の属性値集合のn個の組(タプル)からなる直積の部分集合を関係という。
関係Rのn個組とは、関係Rの一つ一つの行を意味する。

 関係の定義

●候補キー

関係の中でn個組(行)を一意に識別し、冗長性のない1個または1個以上の属性を候補キーという。関係の中に候補キーは複数個あっても良い。

●主キー

候補キーのうちどれか一つの主たるものを主キーという。表内にただ一つ定義できNULLはNG。

●外部キー

表(関係)間に参照関係(参照制約)があるとき、参照する側の項目(列)と外部キーという。参照される側の項目は主キー、または候補キーである。

●属性

関係が持つ性質。属性は値を持ちこれを属性値という。

ex.)関係「社員」は、社員番号、名前の属性を持つ。属性値として社員番号=27032、名前=神山、を持つ。

●定義域

関係が持つ属性の値の集合を属性値集合または定義域という。異なる属性は一つの定義域を共有できる。

ex.)誕生日、採用年月日は、西暦の年月日を定義域として共有できる。


平成7春 DB 問48

関係データモデルに関する記述のうち、正しいものはどれか。

 JIS SQLでは、どの列の値も等しい行が複数存在することはできない。
 関係代数は、集合論の演算のうち和、差、積に加え、射影、結合、商を加えたものである。
 関係データモデルでは、行を追加した順番に意味を持たせている。したがって、関係モデルに基づくDBMSは、この順序関係に従って検索結果を出力することを保証している。
 関係データモデルでは、繰り返し項目を含む表は扱えない。
 第3正規形は、多値属性を含まないように第2正規形を分割したものである。

解答 エ

商用DBMSの中には繰り返し項目を定義できるものもあるが、関係モデルでは扱えない。

ア:JIS SQLの表定義では、一意性制約は必須ではない。
イ:直積、選択も関係代数に含まれる。

平成9春 DB 問30

関係データモデルにおいて属性A、Bを考える。属性Aのドメイン(定義域)はm個の要素からなる集合であり、属性Bのドメインはn個の要素からなる集合であるとする。このとき、関係RをR(A、B)とすると、Rには最大何個のタプルがあるか。

 2m2n
 (m+n)2
 m+n
 mn

解答 エ

Rの最大タプル数は、直積A×Bに等しい。


関係モデルの機能

関係モデルの要素
関係モデルには、データ構造、データ一貫性、データ操作の三つの要素がある。
データ構造部分 定義域、任意の次数の関係(任意の数の属性からなる関係)、属性、組(タプル)、候補キー、主キーからなる。
列および行の順番に意味はない。
同じ行が複数個存在することはできない。
データ一貫性部分 実体一貫性(一意性制約、非ナル制約、検査制約)と参照一貫性(参照制約)の二つの意味制約則からなる。
データ操作部分 選択、射影、結合などの代数的な演算子からなる。

平成8春 DB 問27

関係代数の基本演算は共通、結合、差、射影、商、選択、直積、和の8種類である。この中には多の基本演算の組合せによって同等の機能を実現できるものが三つある。その三つの基本演算を列挙したものはどれか。

 共通、結合、商
 共通、選択、和
 結合、選択、直積
 差、射影、和
 射影、直積、商

解答

関係R、Sの共通(積)は差演算を2回使って、R-(R-S)で表せる。
結合は、RとSの直積の組から、指定された条件の組を選択することにより、新しい一つの関係を作る。すなわちRとSの結合演算は、直積R×SとR×Sに対する選択で表せる。

商R÷Sは、Rの中にSが完全に含まれている場合にその商の組 t を取り出すことを意味する。
R、Sの列数を r、s とする。t の列数は r-s となる。
Sのすべての組を u とすると、商R÷Sは、Rの中に含まれる t×u の組から t の部分を取り出すことを意味する。

R(列数2)

A B
x b
x c
y b
y c
z c

S(列数1)

B
b
c

R÷S(組tの列数は1)

A
x
y

Rは t×u 以外の組も含んでいるので、商 t の組み以外を取り出すことを考える。
Rの先頭から r-s 列分だけの射影とSのすべての組Uの直積をとる。この直積は(t+α)×uの組からなり、t×u 以外のものが含まれる。
この直積とRの差をとると、t×uの組が除かれる。また、α×uの組のうちRと共通の部分が取り除かれる。
すなわち、α×u' の組が得られる。Rの先頭から r-s 列分だけの射影(t+α)と、α×u' の先頭から r-s 列分だけの射影(α)との差を求めると、商の組 t が得られる。


データベーススペシャリスト目次へ