[解決済み] 部分依存性(データベース)
質問
部分依存とは、フィールドが主キーに間接的に依存しているか、部分的に依存しているが、主キーに依存している他のキーにも依存している場合、他のフィールドが依存しているフィールドが削除されても、主キーへの依存のためにそのフィールドは存在する、という定義を作りました。これが正しいかどうかはわかりません。調べてみたところ、どの定義も誤解を招きそうです。私の定義は正しいのでしょうか、正しくない場合はどうすればよいのでしょうか。
解決方法は?
ある関係で成立するFD(関数従属)は、決定属性の一つを取り除くと関係で成立するFDが得られるとき、部分的である。部分的でないFDは完全である。
例:{A,B} → {C}でありながら{A} → {C}でもあるとします。すると、{A,B} → {C}は部分的であり、{C}は{A,B}に部分的に関数従属し、{C}は{A,B}の全部でない部分に関数従属することになる。結果論的な部分FDは ない {A} → {C} です。それが部分的かどうかは、(部分的FDの定義によれば){A}の部分集合が{C}を決定するかどうか、{} → {C}かどうかに依存します。
例:次のような関係です。 値 という条件が成立します。(関係においてFDが成立する 変数 は、発生しうるすべての値において成立する)。
A B C
1 1 1
1 2 1
2 1 1
自明でないFDが成立していること。{A,B} は {C} を決定し、{B,C}, {A,C} & {A,B,C}; {A}, {B} & {} は {C} も決定します。それらのうち {A,B} → {C}は{A} → {C}, {B} → {C} & {} → {C}につき部分的、{A} → {C} & {B} → {C}は{} → {C}につき部分的、他は完全です。
関数従属X → Yは、Xから任意の属性Aを削除すると従属がそれ以上保持されないことを意味する場合、完全関数従属である;すなわち、任意の属性A ε Xに対して、(X - {A})はYを関数的に決定しない。関数従属X → Yは、ある属性A ε XがXから削除でき、従属がまだ保持される場合、部分従属である;すなわち、いくつかのA ε Xに対して、(X - {A})→Yである。
-- データベースシステムの基礎 第6版、ラメス・エルマスリ&ナバテ
FDが完全か部分かは、CK(候補キー)には依存せず、PK(主キー)と呼ばれる1つのCKにも依存しないことに注意しましょう。
(2NFの定義は、すべての非CK属性が、すべてのCKによって完全に関数的に決定されることです。唯一のCKは{A,B}であり、唯一の非CK属性Cはそれに部分的に依存しているので、この値は2NFではありません。実際、それは{A,B} & {A,C}, {A,B} & {B,C} & {A,B} & {C}への成分/投影のロスレス結合です)。
(その教科書の「他動的FD」の定義には、次のようなものがあるので注意が必要です。 ではない の標準的な定義と同じ種類のものを定義しています)。
関連
-
[解決済み] 多くのSQLiteデータベースをマージするにはどうすればよいですか?
-
[解決済み] 機能依存の最小限の根拠
-
[解決済み] Django エラー - 一致するクエリが存在しません。
-
[解決済み] Hibernateです。ManyToOne生成フィールドraw(255)
-
[解決済み] シーケンシャルフラッディングとは何ですか?
-
[解決済み] postgresql pg_dump の出力はどこに行くのでしょうか?
-
[解決済み】データベースの結合はいつ、なぜ高くつくのですか?
-
[解決済み】{merge: true}のあるセットとupdateの違いについて
-
[解決済み】pgadminでherokuのデータベースに接続する。
-
[解決済み] 3NFとBCNFの違いをわかりやすく説明(8歳児に説明できること)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】識別関係と非識別関係の違いとは?
-
[解決済み] データベースの記号は何を表しているのですか?
-
[解決済み] ORMとODMの違いは何ですか?
-
[解決済み] Django エラー - 一致するクエリが存在しません。
-
[解決済み] PostgresqlのSCRAM認証の問題はどうすれば解決できますか?
-
[解決済み] 部分依存性(データベース)
-
[解決済み] Python 3 - JDBCで接続する
-
[解決済み】データベースをgit(バージョン管理)下に置くには?)
-
[解決済み】{merge: true}のあるセットとupdateの違いについて
-
[解決済み】pgadminでherokuのデータベースに接続する。