Mysql 用户评级/评论的数据库模型

Mysql 用户评级/评论的数据库模型,mysql,database,database-design,Mysql,Database,Database Design,在数据库中建模用户评论和分数的最佳方法是什么 因此,问题描述如下: 想象一下,我们有一些用户可以对项目进行评分(给项目打分),但是 还可以写评论(包括标题、内容和分数),以及 甚至可以提交更多类型的评论,例如视频评论(带有 视频和一个分数(例如) 此外,用户还可以对其他用户的评论进行评分 我为这个问题提出了以下EER图(不包括属性,也不包括允许用户对评论进行评级的评论和用户之间的关系): 在上面的设计中,不同类型的评论(书面评论或视频评论)可以通过使用继承来建模,或者在同一个表中使用属性来区分

在数据库中建模用户评论和分数的最佳方法是什么

因此,问题描述如下:

想象一下,我们有一些用户可以对项目进行评分(给项目打分),但是 还可以写评论(包括标题、内容和分数),以及 甚至可以提交更多类型的评论,例如视频评论(带有 视频和一个分数(例如)

此外,用户还可以对其他用户的评论进行评分

我为这个问题提出了以下EER图(不包括属性,也不包括允许用户对评论进行评级的评论和用户之间的关系):

在上面的设计中,不同类型的评论(书面评论或视频评论)可以通过使用继承来建模,或者在同一个表中使用属性来区分类型,或者每个子类使用一个表

这种设计的另一种选择是考虑评级表另一种类型的评审(一个没有内容或标题,只是一个分数),并使用继承来模拟所有的评审类型(分数,书面评论和视频评论)。不过,我认为这种方法存在的问题是,我需要两种关系来允许用户对评论进行评级(一种是书面评论,另一种是视频评论),这也会增加检索所有用户评论(书面和视频评论)的难度


你认为一种方法比另一种好(我倾向于第一种),还是有更好的方法来模拟这个场景?

你可以有两种以上的评论。你可以有听力评论(播客)。我怀疑评论类型应该是评论的一个属性。@GilbertLeBlanc这是一个很好的观察结果。但是考虑到这一点(其他类型的评论的可能性),我认为最好是对每个评论类型使用一个表(对每个类使用一个表的继承)。通过使用一个新评论的评论属性类型,我们需要修改评论表来调整新评论类型的所有属性。如果每个类都有一个表,那么它将只是层次结构中的一个新表。