これは説明するのが非常に難しいので、コード抽出がそのほとんどを説明してくれることを願っています。 musicstyle relations http://img190.yfrog.com/img190/2080/musicstylerelations.jpgベストプラクティス:複数のエンティティから単一のエンティティへ
そして、あなたはすべての3つのエンティティ間のmusicstyle関係を修正するための1つの汎用のインターフェイスを構築したい:
は、あなたが次のデータベースの設計を持っているとしましょう。現在、関連するエンティティ(メンバー、イベント、バンド)のタイプを必要とするMusicStyleControllerを作成しました。
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult DeleteMusicStyle(int id, string type, int typeid)
{
if (!(Session["MemberLoggedIn"] is Member)) return Json(string.Empty);
Member member = (Member)Session["MemberLoggedIn"];
switch (type) {
case "member":
_memberService.DeleteMusicStyle(member, id);
break;
case "band":
Band band = _bandService.GetBand(typeid);
_bandService.DeleteMusicStyle(band, id);
break;
case "event":
Event @event = _eventService.GetEvent(typeid);
_bandService.DeleteMusicStyle(@event, id);
break;
}
return SelectedMusicStyles();
}
私は自分自身で病気のようなコードを書いていますが、別のよりエレガントな方法を見つけることはできません。
この関数は、jquery.post()を使用して呼び出されます。
質問
はどのようにこのコードをリファクタリングでしょう、そしてあなたも、より多くのデータベースを正規化するのでしょうか?私はデータモデルとしてEntity Frameworkを使用しています。
何がデータベースを正常化から獲得したいと考えていますか?どのデータ量が期待していますか(I.E.、何千万行か) – Kane
@Kaneこのケースではベストプラクティスを目指していますが、それはまだわかりません。このデータベースはEntity Frameworkとのスムーズな統合を提供し、コード化が容易になります。バンドル、イベント、メンバーがリンクするMusicStyleCollectionテーブルを作成すれば、コードを難しくすることができます。そして、テーブルが非常に大きくなった場合(おそらくそれはおそらく)、それはパフォーマンス・ヒットになるでしょう。 – Peter
私はまだ考えていない方法でdbを正規化する方法があるかもしれないので、私はそれを提案として追加しました。私は自分自身をすべての開発者だとは考えていませんが、私は決してどちらにもなり得ません... – Peter