2012-02-14 19 views
1

エンティティがデータベースに独自のテーブルを持っている必要があります...エンティティは独自のデータベーステーブルにマップする必要がありますか?

を私はアズールとアイデアブレード效率を使用して、いくつかの仕事をしていると私は最善のアプローチは、データベーステーブルにマッピングするエンティティの面では何か思ったんだけど?これに何らかのパフォーマンス上の利点/損害がありますか?

「注文」エンティティ、「商品」エンティティ、「顧客」エンティティ、「住所」エンティティがあるとします。これらを1つの表に混在させることの利点/欠点は何ですか?明らかに、データベースを分離しなければ、データベースは3番目の正規形にはなりませんでしたが、MEF/DevForceを使用する場合は問題になりますか?

「アカウント」エンティティと「ユーザー」エンティティがあった場合の2番目の(考えられない)例として、アカウントは多くのユーザーを持つことができますが、ユーザーは1つのアカウントにしか所属できません。そのようにして、すべてを1つのテーブルにまとめることはユーザーデータを複製しませんが、私は(個人的に)このアプローチは間違っていると思います。それが利益になる理由はありますか?

+0

保守性などの他のものに興味があるかどうかです。 – Fen

+0

いいえ、私は完全に保守性にも関心があります!私たちは、既存のアイテムを完全に破壊しないモデルに変更を加える必要があります。 – Siyfion

答えて

2

データを複製する度合いと、誰かが真剣に開発者としてあなたを連れて行きたいかどうかによって異なります。すべてをヒープに投げることは、私が考えることができる最悪のアンチパターンです。

たとえば、2つの顧客に対して4つの注文を作成し、それぞれの注文に5つの製品が含まれているとします。お客様の顧客データだけが顧客1回につき10回繰り返されます。

EDIT:私の質問に対する答えは強調して「はい」です。私は代替案の意見を聞くことに興味があるでしょう...

+0

これは私の考えですが、他の開発者が現在やりたいことではないので、パフォーマンスの損失や柔軟性の損失がないことを確認したかったのです。 – Siyfion

+0

2つ目の例を追加しましたが、パフォーマンスコストが発生しない限り、それらをすべて1つのテーブルに入れる理由はまだわかりません。 MySQLまたはAzureは、FYIの背景にあるストレージメカニズムです。 – Siyfion

+0

その永続オブジェクトを使用しているアクティブなアプリケーションがあると、パフォーマンスの問題に遭遇する可能性があります。私はこの種の設定をしたレガシーテーブルに取り組んできましたが、述語に多くのフィールドを入れずにユニークなレコードを特定しようとするのは苦労しましたが、それは私の個人的な経験です。 –

関連する問題