Database design 分开的桌子还是同一张桌子?

Database design 分开的桌子还是同一张桌子?,database-design,Database Design,所以我基本上有一个评论表,对于评级我有8个以上的因素。因为我的评论表已经有5个字段了,所以对我来说,创建一个完整的新评分表还是将其添加到评论表中更好 更新: 我应该用标准这个词而不是因子。评级1-5-幽默、可读性、客户服务等。。。哦,还有一些是用户输入。例如,谁帮助了你?Max Powers我认为您应该为它创建一个单独的表。这将使您的事情变得清楚,而且不会产生任何开销。我认为您应该为它创建一个单独的表。这会让事情变得清晰,不会产生任何开销。有一种理论叫做。您应该使用创建数据库,该数据库将为您的评

所以我基本上有一个评论表,对于评级我有8个以上的因素。因为我的评论表已经有5个字段了,所以对我来说,创建一个完整的新评分表还是将其添加到评论表中更好

更新:
我应该用标准这个词而不是因子。评级1-5-幽默、可读性、客户服务等。。。哦,还有一些是用户输入。例如,谁帮助了你?Max Powers

我认为您应该为它创建一个单独的表。这将使您的事情变得清楚,而且不会产生任何开销。

我认为您应该为它创建一个单独的表。这会让事情变得清晰,不会产生任何开销。

有一种理论叫做。您应该使用创建数据库,该数据库将为您的评分创建一个单独的表

虽然维基百科的文章确实有点令人困惑,但事实并非如此。

有一种理论称为。您应该使用创建数据库,该数据库将为您的评分创建一个单独的表


虽然wikipedia文章确实有点让人困惑,但事实并非如此。

无需将审查实体划分为多个表,除非您必须支持任意一组因素(在第二种情况下,审查和因素之间的关系为1:N)


例如,如果您的评论总是由8个属性组成,那么这些属性将是同一个表中的不同属性。不同的因素可能有不同的数据类型(服务1-10,照明:“暗/亮”,障碍可访问:“是/否”,烹饪:“中文”)等,因此您不一定能够轻松地将它们移动到sep表中,因为它们不是相同的实体类型。

无需将审查实体划分为多个表,除非您必须支持任意一组因素(在第二种情况下,评审和因素之间的关系为1:N)


例如,如果您的评论总是由8个属性组成,那么这些属性将是同一个表中的不同属性。不同的因素可能有不同的数据类型(服务1-10、照明:“暗/亮”、障碍可访问:“是/否”、烹饪:“中国”)等,因此您不一定能够轻松地将它们移动到sep表中,因为它们不是相同的实体类型。

个人而言,我会有一个单独的评级表,我会进一步考虑——而不是把8个不同的收视率因素列为列,而是将它们作为行来代替。因此,您的表将如下所示:

Rating Table
------------
PrimaryKey
ReviewForiegnKey
RatingTypeForiegnKey
RatingValue

RatingType Table
----------------
PrimaryKey
RatingType

这样,您的评级系统就可以在不更改之前输入的数据的情况下进行扩展-只需在RatingType表中添加另一个RatingType,并开始在RatingType表中为其输入行。

就个人而言,我会为评级设置一个单独的表,我会进一步考虑——而不是把8个不同的收视率因素列为列,而是将它们作为行来代替。因此,您的表将如下所示:

Rating Table
------------
PrimaryKey
ReviewForiegnKey
RatingTypeForiegnKey
RatingValue

RatingType Table
----------------
PrimaryKey
RatingType

这样,您的评级系统就可以在不更改之前输入的数据的情况下进行扩展-只需在RatingType表中添加另一个RatingType,然后开始在RatingType表中为其输入行。

我完全同意Henrik所说的标准化,很棒的链接

简单地说,规范化可以总结为一个笑话:“整个键,只有键,所以帮帮我Codd”(Codd是发明关系数据库的家伙)

每个表都必须有“整键”,这意味着它必须包含关于某个实体的所有信息

它还必须有“除了键之外什么都没有”,这样您就不能在一个表中存储关于两个不同实体的数据

在这种情况下,评级是否应放在单独的表格中取决于其性质。这是收视率的一部分吗?有什么好的理由让你把它放在另一个表中,还是仅仅因为这个表有“太多的字段”


就我个人而言,我看不出有任何理由把它放在一个单独的表中,除非你想遵循“良好实践”并把它放在一个单独的表中以满足第三个标准形式。

我完全同意Henrik所说的规范化,很棒的链接

简单地说,规范化可以总结为一个笑话:“整个键,只有键,所以帮帮我Codd”(Codd是发明关系数据库的家伙)

每个表都必须有“整键”,这意味着它必须包含关于某个实体的所有信息

它还必须有“除了键之外什么都没有”,这样您就不能在一个表中存储关于两个不同实体的数据

在这种情况下,评级是否应放在单独的表格中取决于其性质。这是收视率的一部分吗?有什么好的理由让你把它放在另一个表中,还是仅仅因为这个表有“太多的字段”


就我个人而言,我看不出有任何理由把它放在一个单独的表格中,除非你想遵循“良好实践”并把它放在一个单独的表格中,以满足第三个标准形式。

这是正确的,但你应该在有空的时候阅读它。它为您提供了数据库设计的基本知识。这是正确的,但您应该在有时间的时候阅读它。它为您提供了数据库设计的基本知识。因此,如果一个人对所有8个因素进行评级,那么会有8行,对吗?这是正确的-您可以根据每次审查的需要获得尽可能少或尽可能多的评级。虽然你可能会说“哇,那可能有很多行”,但事实并非如此——你只使用了与实际评分一样多的空间,而且数据库非常擅长处理大量的行:)因此,如果一个人对所有8个因素进行评分,那么会有8行,对吗?这是正确的——你可以在每次审查中获得你想要的最少或最多的评分。虽然您可能会说“哇,那可能有很多行”,但事实并非如此——您只使用了与实际评级相同的空间,而且数据库非常擅长处理大量行