SQL 2不同的评论类型 - 最佳解决方案?

时间:2018-03-14 17:29:52

标签: database-design

我有一个数据库,用户可以在其中发布有关新闻或图片的评论。 这样做的最佳解决方案是什么? 我想出了3个变种

第一个:

glb_mod()

results:
 a, a_np initialized as
 1 [0 1 2 3 4 5 6 7 8 9]
 a, a_np are now
 1 [[0 1 2 3 4]
 [5 6 7 8 9]]

第二个:

Comments
- id (PK)
- userID
- timestamp
- text
- newsID (FK News, can be NULL)
- pictureID (FK Picture, can be NULL)

第三个:

Comments
- id (PK)
- userID
- timestamp
- text

News_Comments
- newsID (PK, FK News)
- commentID (PK, FK Comment)

Picture_Comments
- pictureID (PK, FK Picture)
- commentID (PK, FK Comment)

1 个答案:

答案 0 :(得分:0)

我会排除变体2,因为它表明n:m关系,这不是你想要的。

变体1和2看起来都很好,主要取决于个人喜好。

对于变体1,您认为两者都是评论,如果您曾经同时想要与每条评论一起记录投票,则只需在该表中添加一个投票列。

对于变体3,您认为这两者是对不同事物的评论,如果您曾经想要对语法和写作风格进行投票,您可以在新闻评论表中添加适当的列只有,而在图片评论表中,你可能会有一个艺术评论栏。

如上所述,这部分是个人偏好,但它也是关于你认为这些表在不久的将来会是什么样子的方式: - )

在第3个版本中,您应该从表中删除commentID (PK, FK Comment),因为没有注释表。表格应具有自己的ID(例如news_comment_id (PK)),newsidpictureid只是外键,不再是主键的一部分。