多値従属性のソースを表示
←
多値従属性
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''多値従属性'''(たちじゅうぞくせい、'''MVD'''、{{lang-en-short|multivalued dependency}})は、[[コンピュータ]]の[[関係データベース]]における[[関係 (データベース)|関係]]([[表 (データベース)|表]])の中の[[属性 (データベース)|属性]]の2つの[[集合]]の間の、完全な制約である。 多値従属性の定義を述べる。 R を関係とし、A, B, C を、R の属性[[集合]]の任意の[[部分集合]]とする。 R のある(A値, C値)対に対応するB値の集合がA値だけに依存し、C値には独立かつそのときに限り、B は A に多値従属しているといい、次のように表す。 {{Indent|A [[ファイル:twoheadrightarrow.gif]] B <ref>[[クリス・デイト|C. J .Date]]、藤原譲ほか、1997年、p.358</ref>}} [[関数従属性]]とは対照的に、多値従属性は関係においていくつかの[[組 (データベース)|組]](タプル、行)を親として必要とする。 それゆえ、多値従属性は組生成従属性とも呼ばれる。 多値従属性は[[関係の正規化|データベースの正規化]]において[[関係の正規化#第4正規形|第4正規形]] (4NF) への正規化で役割を果たす。 多値従属性は関数従属性を一般化した概念と位置づけることができる。 <!-- == 形式的な定義 == ''R'' を関係(表)のスキーマとし、<math>\alpha \subseteq R</math> かつ <math>\beta \subseteq R</math> とする。 多値従属性 <math>\alpha</math> [[ファイル:twoheadrightarrow.gif]] <math>\beta</math> が ''R'' において成立するのは次のような場合である。 どのような妥当な関係 ''r(R)'' においても、<math>t _1[\alpha]=t _2[\alpha]</math> であるような <math>t _1</math> と <math>t _2</math> の全てのペアに対して、''r'' に次のような <math>t _3</math> と <math>t _4</math> が存在する場合である。 <math>t _1[\alpha] = t _2 [\alpha] = t _3 [\alpha] = t _4 [\alpha]</math> <math>t _3[\beta] = t _1 [\beta]</math> <math>t _3[R - \beta] = t _2 [R - \beta]</math> <math>t _4[\beta] = t _2 [\beta]</math> <math>t _4[R - \beta] = t _1 [R - \beta]</math><ref> Silberschatz, Korth, Sudarshan. ''Database System Concepts'', 5th Edition</ref> --> == 例 == この例は、講義コースの関係データベースである。 各コースで推奨されている参考図書がある。 各コースには講義する予定となっている講師がいる。 {| class="wikitable" |+講義コースデータベースの関係 |- !コース !! 参考図書 !! 講師 |- | AHA || Silberschatz || John D |- | AHA || Nederpelt || John D |- | AHA || Silberschatz || William M |- | AHA || Nederpelt || William M |- | AHA || Silberschatz || Christian G |- | AHA || Nederpelt || Christian G |- | OSO || Silberschatz || John D |- | OSO || Silberschatz || William M |} 講師はコースに属している。 参考図書はコースに属している。 講師と参考図書は互いに独立している。 こうしたことから、このデータベース設計には多値従属性が存在すると、述べることができる。 この例の関係(表)は {コース, 参考図書, 講師} を[[候補キー]]とする[[関係の正規化#ボイス・コッド正規形|ボイス=コッド正規形]](BCNF、[[関係の正規化#第3正規形|第3正規形]]の修正版)であるが、[[関係の正規化#第4正規形|第4正規形]] (4NF) ではない。 仮に AHA コースに新しい参考図書を追加しようとする場合、そのコースの各講師のデータに対して参考図書を追加しなければならない。 逆に AHA コースに新しい講師を追加しようとする場合も同様である。 形式的にはこの例の関係には次の2つの多値従属性がある。 * {コース} [[ファイル:twoheadrightarrow.gif]] {参考図書} * {コース} [[ファイル:twoheadrightarrow.gif]] {講師} この例の関係のように、決定項 (多値従属性の左側) が[[候補キー]]ではない多値従属性のある関係では、冗長性がある。 データベースの正規化においては、多値従属性の存在する関係においては決定項が候補キーである場合に限り、第4正規形 (4NF) である。 このとき多値従属性は事実上は[[関数従属性]]である。 多値従属性は関数従属性を一般化した概念と位置づけることができる。 前述の例の関係は、次のように2つの第4正規形 (4NF) の関係に分解して[[関係の正規化|正規化]]することができる。 {| |- style="vertical-align: top;" | {| class="wikitable" !コース !! 参考図書 |- | AHA || Silberschatz |- | AHA || Nederpelt |- | OSO || Silberschatz |} || {| class="wikitable" !コース !! 講師 |- | AHA || John D |- | AHA || William M |- | AHA || Christian G |- | OSO || John D |- | OSO || William M |} |} == 多値従属性の特性 == <math>\alpha</math>、<math>\beta</math>、<math>\gamma</math>、<math>\delta</math> を関係 ''R'' の属性の[[部分集合]]とする。 [[ファイル:twoheadrightarrow.gif]] を多値従属性とする。 * <math>\alpha</math> [[ファイル:twoheadrightarrow.gif]] <math>\beta</math> であるならば、<math>\alpha</math> [[ファイル: twoheadrightarrow.gif]] <math>R - \beta</math> * <math>\alpha</math> [[ファイル:twoheadrightarrow.gif]] <math>\beta</math> かつ <math>\gamma \subseteq \delta</math> であるならば、<math>\alpha \delta</math> [[ファイル:twoheadrightarrow.gif]] <math>\beta \gamma</math> * <math>\alpha</math> [[ファイル:twoheadrightarrow.gif]] <math>\beta</math> かつ <math>\beta</math> [[ファイル:twoheadrightarrow.gif]] <math>\gamma</math> であるならば、<math>\alpha</math> [[ファイル:twoheadrightarrow.gif]] <math>\gamma - \beta</math> 次の特性は[[関数従属性]]を使っている。 → を関数従属性とする。 * <math>\alpha</math> → <math>\beta</math> であるならば <math>\alpha</math> [[ファイル:twoheadrightarrow.gif]] <math>\beta</math> * <math>\alpha</math> [[ファイル:twoheadrightarrow.gif]] <math>\beta</math> かつ <math>\beta</math> → <math>\gamma</math>であるならば、<math>\alpha</math> → <math>\gamma - \beta</math> 前述の規則は広く知られており、完全な規則である。 * ''X'' [[ファイル: twoheadrightarrow.gif]] ''Y'' が関係 ''R'' において成立する場合かつその場合に限り、''R'' を ''(X, Y)'' と ''(X, R-Y)'' に無損失分解できる (情報の損失を伴うこと無く分解することが —— 正規化することができる)。 == 用語の定義 == ; 完全な制約 : データベースにおける全ての属性について何らかのことを表現する制約('''組み込みの制約'''とは異なる)。多値従属性はその定義から完全な制約である。多値従属性の定義では、<math>R - \beta</math> の属性集合について何らかのことを述べている。 ; 組生成従属性 : 関係において存在するためには、明白にいくつかの組を必要とする従属性。 <!-- ; 自明な多値従属性 : ある関係の全ての属性に関わる多値従属性、すなわち<math>R = \alpha \cup \beta</math>。自明な多値従属性は、組 <math>t _1</math> と <math>t _2</math> があり、<math>t _1</math> と <math>t _2</math> に等しい組 <math>t _3</math> と <math>t _4</math> がある。 --> == 参考文献 == * {{Cite book|和書 |last= |first= |author=C. J. Date |authorlink=クリス・デイト |coauthors=藤原譲ほか訳 |year=1997 |title=データベースシステム概論 原著第6版 |publisher=[[丸善]] |location=東京 |id= |isbn=978-4-621-04276-2 }} == 脚注 == {{脚注ヘルプ}} <references/> == 外部リンク == * [http://www.almaden.ibm.com/cs/people/fagin/tods77.pdf Multivalued dependencies and a new Normal form for Relational Databases] (PDF) - Ronald Fagin, IBM Research Lab {{DEFAULTSORT:たちしゆうそくせい}} [[Category:データベース]] [[Category:データモデリング]]
このページで使用されているテンプレート:
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Indent
(
ソースを閲覧
)
テンプレート:Lang-en-short
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
多値従属性
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報