我正在撰写ASP.Net网站文档。该网站看起来像c-sharpcorner.com,使用户能够发布文章,问题,工作机会,工作请求。当我正在设计网站的ER图时,如果我将所有用户的帖子类型(文章,任务,滚刀等)放在一个表中并且只是创建一个类型属性来区分它们或者我应该将每个在一个分离的实体中发布类型..什么更好?这对我来说是一样的,但我需要一位专家来告诉我处理这个问题的最佳方法是什么。感谢
答案 0 :(得分:1)
如果您的ER图旨在描述概念数据模型,您可以使用泛化/专业化来表示帖子是几种不同类型的帖子之一。
如果您的图表旨在描述逻辑数据模型,使用关系数据模型,您需要做出设计决策。
此标记下显示了一个替代方案:single-table-inheritance。
此标记下显示了另一种替代方法:class-table-inheritance。
如果您选择第二种选择,并且希望强制执行常规帖子表与每个专用表之间的一对一关系,请查看此标记:shared-primary-key。
在所有三个标签中,信息标签都会详细说明。
答案 1 :(得分:1)
您的问题没有开箱即用的答案,因为它是特定于解决方案的。
问自己以下问题,你会自己得到答案。
表中将存在多少个空字段?如果您的列仅用于帖子,则表示该列对于所有其他答案类型将为null。如果你的数据库中有很多空值而不是一个好的设计。
需求随时间变化的可能性有多大,您需要定制或更多的帖子类型?您以后需要进行自定义的可能性越大,每个帖子类型的单独表格就越好。
每种类型的相对帖数是多少?如果您将有90%的答案是一种类型,而所有其他类型只有10%,那么在使用10%时,将表分开并避免性能问题可能是个好主意...
同样,这里没有正确或错误的答案。您需要更多地分析您的特定解决方案,以便为您提供最适合您的解决方案。