我正在开发一个新项目,我需要设置一个数据库'Comments'表。 在我的项目中,可以在“页面”,“帖子”或“论坛主题”或其他内容上发表评论。 现在我想知道考虑到速度和可操作性,在Laravel环境中我的“评论”表的最佳设置是什么
创建一个包含多个外键的表,其中一个键将始终填充,另一个键将为NULL
id(int) - 评论(文字) - 帖子(FK) - 主题(FK) - 页面(FK)
或创建一个没有外键的表,但只创建一个id和一行来表示这样的评论类型
id(int) - comment(text) - type(varchar - 'post'或'topic') - type_id(int - 'post'或'topic'的id) < / p>
答案 0 :(得分:2)
对于Scalability factor,您应该创建一个表格,其中包含评论所在的帖子类型,以便您以后可以添加其他类型的帖子。
所以评论表的结构应该是这样的:
id(int) - comment(text) - parent_type(int) - parent_id
parent_id(int) - parent_name(varchar)
根据类型,您可以决定要与之合作的表格。
答案 1 :(得分:1)
如果采用第二种方法会更好。
如果稍后再引入一个来源接受评论,那么如果您遵循第一种方法,则需要修改该表。此外,同一用户可以再次就同一主题提供评论。这种存储方式(第二种方法)有帮助。
获取记录仍然是有效的,因为无论是一行(第一种方法)还是几行(第二种方法),与总大小相比,特定主题的记录仍然具有非常高的选择性(并且非常有效)该表。
答案 2 :(得分:0)
我认为第二种方法更好,因为它会最小化表格中的空单元格,也会更容易查询。