【问题标题】:should i separate table different types contents or not?我应该分开表格不同类型的内容吗?
【发布时间】:2013-03-21 03:33:56
【问题描述】:

我正在编写 ASP.Net 网站文档。该网站看起来像 c-sharpcorner.com,允许用户发布文章、问题、工作机会、工作请求。当我在设计网站的 ER 图时,我是否应该将所有用户的帖子类型(文章、任务、滚刀......等)放在一个表中并只创建一个类型属性来区分它们,或者我应该将它们分开,我会感到困惑在单独的实体中发布类型..什么更好?对我来说也是一样,但我需要一位专家来告诉我处理这个问题的最佳方法是什么。谢谢

【问题讨论】:

    标签: sql sql-server database-design entity-relationship normalization


    【解决方案1】:

    您的问题没有开箱即用的答案,因为它是特定于解决方案的。

    问自己以下问题,您自己就会得到答案。

    表中将存在多少个空字段?如果您有仅用于帖子的列,则意味着该列对于所有其他答案类型将为空。如果您的数据库中有很多空值,那么这并不是一个好的设计。

    随着时间的推移,要求发生变化的可能性有多大,您需要自定义或更多的帖子类型?您以后需要自定义的可能性越大,您就越适合为每种帖子类型使用单独的表格。

    每种类型的帖子的相对数量是多少?如果您将获得 90% 的答案是一种类型,而只有 10% 是所有其他类型的答案,那么在使用 10% 时分离表并避免性能问题可能是个好主意...

    同样,这里没有正确或错误的答案。您需要进一步分析您的具体解决方案,以找出最适合您的解决方案。

    【讨论】:

    • 谢谢,会有很多空单元格,我认为分开会更舒服
    【解决方案2】:

    如果您的 ER 图旨在描述概念数据模型,您可以使用泛化/专业化来展示帖子是几种不同类型的帖子之一这一事实。

    如果您的图表旨在描述逻辑数据模型,使用数据的关系模型,您需要做出设计决策。

    此标签下提供了一个替代方案:

    此标签下提供了另一种选择:

    如果您选择第二种选择,并且您希望在一般帖子表和每个专用表之间强制建立一对一的关系,请查看此标记:

    在所有三个标签中,信息选项卡都说明了详细信息。

    【讨论】:

      猜你喜欢
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多