我有一个数据库,用户可以在其中发布有关新闻或图片的评论。 这样做的最佳解决方案是什么? 我想出了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)
答案 0 :(得分:0)
我会排除变体2,因为它表明n:m关系,这不是你想要的。
变体1和2看起来都很好,主要取决于个人喜好。
对于变体1,您认为两者都是评论,如果您曾经同时想要与每条评论一起记录投票,则只需在该表中添加一个投票列。
对于变体3,您认为这两者是对不同事物的评论,如果您曾经想要对语法和写作风格进行投票,您可以在新闻评论表中添加适当的列只有,而在图片评论表中,你可能会有一个艺术评论栏。
如上所述,这部分是个人偏好,但它也是关于你认为这些表在不久的将来会是什么样子的方式: - )
在第3个版本中,您应该从表中删除commentID (PK, FK Comment)
,因为没有注释表。表格应具有自己的ID(例如news_comment_id (PK)
),newsid
和pictureid
只是外键,不再是主键的一部分。