【发布时间】:2014-01-30 05:19:49
【问题描述】:
我正在开发一个 ASP.NET MVC 4 应用程序,其中每个“级别”都有一个添加费用的选项。假设我有一家公司可以有很多活动(一对多),以及有很多产品的活动(一对多)。 [使用 DB 优先设计]
公司、活动和产品都可以有一个与之关联的“费用”列表,并且费用数据是相同的 [名称、价值、FK 等]
我目前正在使用具有关联表的外键的“CompanyFee”、“CampaignFee”和“ProductFee”表。 [除FK关系外的相同表]
是否有一个“费用”表,其中每个表都有一个外键列,可以有费用。所以“FeeTable”将是 [name, value, CompanyID(FK), CampaignID(FK), ProductID(FK), etc]
这意味着如果 ProductID 是唯一具有值的 FK,而其他 FK 为 null,则它将被视为“ProductFee”。
将这些表分开是最佳做法吗?这两种结构的其他含义是什么?
【问题讨论】:
-
欢迎来到多态关联的世界。尝试获取 Bill Karwin 的书“SQL Antipatterns”并阅读他的建议。或者这个:stackoverflow.com/a/2003042/861716。或者这个:stackoverflow.com/q/7000283/861716
标签: database entity-framework database-design