問題タブ [3nf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - 簡単な言葉で3NFとBCNFの違い(8歳に説明できる必要があります)
私は引用を読みました: データはキー[1NF]、キー全体[2NF]、そしてキー[3NF]だけに依存します。
しかし、3.5NFまたはBCNFと呼ばれるものを理解するのに苦労しています。これが私が理解していることです:
- BCNFは3NFよりも厳しい
- テーブル内のFDの左側は、スーパーキー(または少なくとも候補キー)である必要があります
では、なぜ一部の3NFテーブルがBCNFにないのでしょうか。つまり、3NFの引用では、「キー以外は何もない」と明示的に示されています。これは、すべての属性が主キーのみに依存することを意味します。結局のところ、主キーは、主キーとして選択されるまでは候補キーです。
これまでの私の理解に誤りがある場合は、私を訂正し、あなたが提供できる助けに感謝します。
database - 関係R(ABCDE)は、3NFのFDの{AB-> CD、AC-> BED、D-> A}のセットと関係がありますか?
関係R(ABCDE)は、3NFのFDの{AB-> CD、AC-> BED、D-> A}のセットと関係がありますか?私はそれを疑っていますが、私が読んでいるメモはそう言っています。誰かがこれがどのように正しいか説明してもらえますか?私の理解では、ABをキーとすると、属性B、E、Dはキーの一部(つまりA)にのみ依存し、2NFプロパティに違反します。
database - 関数従属性が循環している場合はどうなりますか?
次の関係を3NFに分解しようとしています。
そこで、標準的なカバーを取得するために冗長性を排除しました。
そして今、私はこれを3NFに分解しようとしています。
に分解する必要がありr1(A, B, C) r2(B, D), r3(C, D)
ます。それでは私は何をしD -> A
ますか?
私を失望させているという事実A -> B -> D -> A
。
functional-dependencies - 分解の関数従属性をどのように計算しますか?
たとえば、Rには次の属性があります:{A、B、C、D、E}、次の機能依存性があります。
そして、R1(A、B、C)とR2(A、D、E)からなる分解があります。R1とR2の機能従属性を計算するにはどうすればよいですか?
宿題に関する実際の質問では、R1/R2がBCNF/3NF /にないかどうかを尋ねられますが、その部分の実行方法はすでに知っています(FDの左側が候補キーに含まれているかどうかを確認してください)。
functional-dependencies - 機能依存
私はSQLの関数依存性について勉強しています
質問があります。
機能的な依存関係があります
と
それが分解された関係かどうかを理解しようとしていました
たとえば、2 つの関係があります。
1 番目 = CAEB 2 番目 = CDF
と
BCNF または 3NF を使用する場合、これら 2 つの関係は分解されることを知りたいです。
私の考えでは、
最初と 2 番目は BCNF の分解ではありません
なぜなら、まず、
第二に、
そうですか?(BCNF についての概念を検索していたので、この質問に応募しようとしました。)
と
3NF部分はどうすればいいのかよくわかりません....(BCNFとほぼ同じように見えますが、よくわかりません...)
3NF部分のやり方を知っている人はいますか? ありがとう..
mysql - EAVデータを3NFとして表示するSQLクエリ?(Drupal 6プロファイル値)
Entity-Attribute-Valueパターン(EAV)に従ってMySQLデータベースにデータを保存しています。具体的には、Drupal 6のユーザープロファイル値です。データを通常のリレーショナルテーブルとして取得するには、SQLクエリまたはビューが必要です。テーブルのレイアウトは次のとおりです。
そして、私はどういうわけかクエリから次の結果を取得する必要があります:
一般的なケースでは、これを単一のSQLクエリで実行することは不可能であることを理解しました。しかし、これは一般的なケースではなく、2つの利点があります。
- 「profile_fields」テーブルの内容を知っており、このクエリが使用される期間中、このデータが変更されないことを100%確信しています。
- 単一のクエリに含める必要はありません。クエリ、結果を分析するためのPHPコード、そして別のクエリにすることができます。
database-normalization - 正規化 - IDENTYFING 推移的な依存関係
推移的な依存関係を特定するのに問題があります。その背後にあるコンセプトは理解していますが、それらを見て引き出すのは私の問題です。
だから私は知っている
A→B
B→Aというわけではない
べ→べ
次に、A → C は推移的な依存関係です。
このシナリオでは、推移的な依存関係を特定できないようです。
患者ID(PK)
Insurance_Co_ID (PK)
Doctor_ID (PK)
Fname
P_Lname
P_Street
P_City
P_Zip
P_電話
Ins_First_Contact
Ins_Second_Contact
Ins_Phone
Doc_Fname
Doc_Lname
Doc_Beeper
1NF、2NF、ect 図を作成し、部分的な依存関係と行列式を特定する方法を理解していますが、これに問題があります。調査を行った後の私の見解は、推移的な依存関係を 1 つだけ見つけることですが、それでもわかりません。(Doc_Fname) → (Doc_Lname) → (Doc_Beeper) そう (Doc_Fname) → (Doc_Beeper) or (Doc_Fname, Doc_Lname) → (Doc_Beeper)?
助けてください、ありがとう!
database - 3NF正規化
3NF で以下を正規化する必要があります。
正規化後に得たもの:
私が完全に間違った方向に進んでいると思いますか?
database - 3NFでデータベース関係?
私は次の関係を持っています。会社には複数の従業員がいます。各従業員は従業員番号によって定義され、 ZipCodeENr
のある住所に住んでいます。ZipCode を持つ City は、それ以外の場合はテーブル Employee に冗長性があるため、独自のテーブルです。したがって、Employee の外部キーです。EAddress
ZZipCode
ZZipCode
グループはその によって定義されるためGGroupId
、それが主キーになります。各グループには、任意の従業員であるグループ リーダーが 1 人います。したがってENr
、外部キーです。
各従業員は、グループなし、または 1 つ以上のグループで作業できます。このため、GroupMember
タプルが主キーENr
をGGroupID
定義し、両方が外部キーであるテーブルが存在します (太字と斜体の両方を行うことはできません)。
最後に、製品はその製品 ID によって定義されPId
、グループに関連付けられGGroupID
ます。
さて、ここにその記述された説明の関係があります。
Employee( ENr , EName, EGender, EAddress, ZZipCode , ESocNr, ESalery)
Group( GGroupId , GName, GCostNr, ENr )
GroupMember( ENr , GGroupID ) #両方のメンバーも外部キーです!
製品 ( PId、PName、PPrice、GGRoupId )
郵便番号 ( ZZipCode、ZCityName、SStateID )
州 ( SStateID、SStateName)
明確にするために、太字のメンバーは主キーで、斜体のメンバーは外部キーです。
その関係を に入れてみました3NF
。これが正しいことを誰かが確認できますか?
sql - ORの代わりにANDとして機能するIN演算子に相当するSQL?
説明するのではなく、私がやろうとしていることを簡単に示します。3NFに3テーブル。product_badges は結合テーブルです。(exists サブクエリが必要です。)
これで、badge_id が 1 OR 2 OR 3 OR 4 のすべての製品が返されます。私が望むのは、これらすべての値を満たす製品のみを取得することです。pb.badge_id=1 AND pb.badge_id=2 などを実行しようとしましたが、これは何も返しません。これは今では意味があります。また、INTERSECT を使用して複数のクエリを実行しようとしましたが、エラーが発生しました。複数のクエリが重要だと思いますが、UNION は基本的に IN と同じであり、この場合の JOIN の使用方法はわかりません。