私はASP.net MVCアプリケーションで使用するデータベースを設計しようとしています。シナリオは次のとおりです。3つのエンティティがあり、ユーザーはこれらの異なるエンティティごとにコメントを投稿できます。私はちょうどコメントのために1つのテーブルを入れ、それに他のすべてのエンティティをどのようにリンクさせるのだろうかと思います明らかに、Commentsテーブルはこれらのテーブルに対して3つの参照(外部キー)を必要としますが、これらの外部キーはnullではなく、各行に1つだけ埋め込むことができます。エンティティのコメントごとに3つの異なるテーブルを実装するよりも良い方法はありますか?SQL Serverで複数の関係を実装する方法は?
答えて
EntityType固有のテーブル
- EntityMaster:実体識別子、FOO、バー
- コメント:実体識別子、CommentID、ユーザーID、... 3エンティティ表のPKは(実体識別子、CommentIDなど)である
、PKは実体識別子であります
- EntityOne:実体識別子、EntityTypeID(チェック制約= 1)、...
- EntityTwo:実体識別子、EntityTypeIDは(チェック制約= 2)、...
- EntityThree:それは、データベース設計の面で間違っている:実体識別子、EntityTypeID(チェック制約= 3)、...
3親のための1件のコメントテーブルを持つにはショートカットや優雅さはありません。個人的に
、私はおそらく反射に、
編集...オプション1のために行くだろう:
時々、あなたはデータの使い方を見ています。 3つのエンティティが別々に使用されている場合
、別々の画面上で、相互にリンクしていない3つのエンティティを使用して一緒に表示されている場合、それは、オプション2は、よりになり、オプション1
だろうデータをより簡単に取り込むことができるためです。
3つのエンティティテーブルをすべて同じコメントテーブルに接続すると、外部キーを使用して参照整合性を保つことができなくなります。このシナリオでは、コメントテーブルに1つの「キー」列と1つの「エンティティタイプ」列があります。 cerainエンティティのコメントを取得するには、entity-typeでフィルタする必要があります。
私はすべてのエンティティのすべてのコメントを取得するために結合によって結合することができます同じ構造を持つ3つのコメントテーブルが好きです。
私は同じ構造提案を持つ複数のコメントテーブルに同意します。 - 列が一貫している限り、コメントをビューに統合するのは簡単です。 – Nikhil
以下の画像のようなdb構造です。 Entity1またはEntity2を作成するときにCommentHistoryを作成する必要があります。
ですから、Entity1のためにすべてのコメントを取得する必要がある場合は、あなただけの必要があります:エンティティタイプごとに1つのコメントテーブルが
または::子コメントと一つのマスターエンティティテーブルのどちらか
Select * from Comment where CommentHistoryId = 5 -- '5' it CommentHistoryId from Entity1
- 1. SQL Serverで複数の条件を実行する方法
- 2. laravelでこの関係を実装する方法は?
- 3. SQL Server 2008 r2でmodパーティショニングを実装する方法は?
- 4. iosコアデータSQLトランザクション関数を実装する方法は?
- 5. spark sql udfを関数として実装する方法は?
- 6. mvcで依存関係注入を実装する方法は?
- 7. ランキング関数で複数の注文方法SQL Server 2014
- 8. SQL Serverで行列の概念を実装する方法
- 9. SQL Serverのビューの依存関係を確認する方法
- 10. C#でデータグリッドの行間にこの関係を実装する方法は?
- 11. SQL Server CE 4.0でIDatabaseInitializerを実装する方法
- 12. SQL Server 2005で高性能ツリービューを実装する方法
- 13. Javaでjaccard係数を実装する方法は?
- 14. Realmで1対多数の関係を実装する適切な方法
- 15. IS-Aの関係を実装する
- 16. Entity FrameworkでSQL Server関数を呼び出して実行する方法は?
- 17. 関数のプログラミング方法でカウンタを実装する方法
- 18. LiquibaseでSQL文を実装する方法(複数行を挿入する)
- 19. MySQLで多対多の関係を実装する最良の方法
- 20. java jdbcでSQL Serverの接続プーリングを実装する方法は?
- 21. 次のコードでspannableを複数回実装する方法は?
- 22. JQueryで複数のif/else文を実装する方法は?
- 23. TreeTableView/TableViewで複数行のドラッグドロップを実装する方法は?
- 24. Cocos2dで複数のCCSpritesにタッチを実装する方法は?
- 25. swift3でuitableの複数選択を実装する方法は?
- 26. laravelで複数のフィールド検索を実装する方法は?
- 27. 複数のREST APIをHTMLで実装する方法は?
- 28. SQL Serverの複数の列をピボットする方法は?
- 29. Ruby on Railsでの嘆願とユーザーモデルの関係を実装する方法は?
- 30. Javaで関数パラメータのタプルアンパックを実装する方法は?
+1チェック制約を使って「分散」キーをどのようにシミュレートできるかを指摘するため。しかし、私は、後者のアプローチが受け入れられる時代(ここではない)があると主張したい。 –
@pst:はい、あります。私の編集をご覧ください – gbn