【问题标题】:What is the best approach to represent a generalization case for a forum website代表论坛网站的泛化案例的最佳方法是什么
【发布时间】:2018-11-27 17:47:36
【问题描述】:

我为我们网站的数据库(uni 项目)建模了以下 UML:

但是,我似乎找不到如何将 Post、Story 和 Comment 之间的泛化情况转换为 SQL。我的老师建议使用同一张表,但我认为如果我想添加更多功能,比如故事标签,这会限制我。现在我已经有了两个额外的关系:一个帖子可以有多个子 cmets,一个故事属于一个特定的频道。

我应该听从老师的建议吗?或者我应该使用 3 个类?

【问题讨论】:

    标签: php sql pdo orm uml


    【解决方案1】:

    由于您的类层次结构只有两个子类,并且只有 3 个附加属性(titlechannelpost),您应该使用单表继承方法。即使您以后可能会添加更多属性/方法,这也是最佳选择,因为使用多个表实现类层次结构将意味着更大的工作量/开销。

    您可以在Representing class hierarchies with SQL database tables 部分(我撰写的关于在 JavaScript 前端 Web 应用程序中处理类层次结构的教程)中阅读有关此选择的更多信息。

    【讨论】:

    • 那只是在我的胃里。所以是的。就是这样。
    【解决方案2】:

    一如既往,视情况而定。拥有一个表的优点是可以在一个简单的查询中访问相关的帖子信息,并且只需查看列内的一个标志,告诉你正在处理什么样的对象。拥有单独的表格是一种更“学术”的解决方法,因为您(如您所见)将对象信息分开。

    在这种情况下,我可能会采用单表方法。但是 - YMMV - 你也可以坚持你的 3 表方法。这里可能会有其他意见。等几天再决定:-)

    【讨论】:

      猜你喜欢
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      • 2023-04-02
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 2011-11-18
      相关资源
      最近更新 更多