我有如下所示的Reddit关系。基本思想是,每个用户都可以加入许多社区,并在每个社区中编写许多博客。
有关此用户的社区特定信息,如声誉等。我的问题是,将额外信息放在关联表(即UserCommunities)上是一种好习惯吗?为什么不呢?
谢谢!
答案 0 :(得分:0)
关系数据库设计考虑了两个基本力量:
标准化部分有详细记录。您可以参考wiki或this了解详情。 如果您担心数据增长或者您发现更改一个字段值需要更改多个列值(数据依赖性),那么您一定要考虑这一点。
第二部分对您的要求更为主观。 如果您的查询模式需要跨查询的某些数据,并且将两个数据保存在同一个表中并不是非常昂贵(空间明智),那么可以忽略/弯曲规范化技术。
对于你的例子:
如果用户表具有特定于用户的数据(如首字母,地址,首选项),则可以将其作为单独的表。
类似于“用户社区”表,如果除了声誉之外它还有数据,如帖子数量,喜欢的数量等等。它可以/应该是一个不同的表
为什么不呢?
您可以参考规范化表格获取收益。 :)
但是,如果您的用例/查询模式是"给定用户和博客,请告诉我用户的声誉"或类似的东西,没有额外的数据,你可以保持声誉在同一张表。
为什么
它将简化您的查询。它不是跨表连接,而是直接查询,复杂度较低。