但是,我似乎找不到如何将Post,Story和Comment之间的一般化情况转换为SQL的方法。我的老师建议使用同一张桌子,但是如果我想添加更多功能(例如故事标签),我认为这会限制我。现在,我已经有了两个额外的关系:一个帖子可以包含多个子评论,而一个故事属于特定的频道。
我应该听从老师的建议吗?还是我应该使用3个班级?
答案 0 :(得分:3)
由于您的类层次结构只有两个子类,并且仅具有3个其他属性(title
,channel
和post
),因此您应该使用单表继承方法。即使以后再添加一些属性/方法,这也是最佳选择,因为用多个表实现类层次结构将意味着更大的工作量/开销。
您可以在Representing class hierarchies with SQL database tables部分(有关由我编写的JavaScript前端Web应用程序中处理类层次结构的教程)中了解有关此选择的更多信息。
答案 1 :(得分:1)
一如既往,这取决于。拥有一个表的优点是可以在一个简单的查询中访问相关的帖子信息,并且只需查看列中的标记即可知道您正在处理的对象类型。由于您(如您所注意到的)将对象信息分开,因此拥有单独的表是解决问题的一种“学术性”方法。
在这种情况下,我可能会采用单表方法。但是-YMMV-您也可以坚持使用3表方法。这里可能会有其他意见。只需等待几天来决定:-)