考虑这些表格:
消息
+-----------+------------+----------+----------------+
| messageId | fromUserId | toUserId | messageContent |
+-----------+------------+----------+----------------+
| 1 | 1 | 2 | Hello |
+-----------+------------+----------+----------------+
用户
+--------+----------+
| userId | userName |
+--------+----------+
| 1 | magnus |
| 2 | fabiano |
+--------+----------+
但是当我必须显示任何消息时,我将需要 userName
,以及消息属性。
最佳方法是什么:
添加列
userName
到消息? (单表查询,但妥协规范化)按照上面的方式保持规范化(并有两个表查询)
谢谢。
最佳答案
对于大多数目的,您应该保持其标准化并在查询中将表连接在一起,并且您可以创建一个为您执行连接的 View ,这样您只需查询该 View 。
从长远来看,采用标准化方法可能会解决您更新/维护数据的问题
一般来说,只有当您开始使用大型数据库和/或商业智能时,您才应该出于性能考虑而担心非规范化,因为与难度和空间使用相比,连接中可能会出现难以忍受的开销非规范化。
关于mysql - sql - 单表查询与规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28455201/