在RDBMS中,我相信有几种方法可以设计表之间的关系。因此,我想问一下创建关系与关联表和没有关联表>之间的专业和缺点是什么? STRONG>。是否有正式的解决方案来决定两者?
使用通用表格,下面我演示了我的意思:
示例#1(没有关联表)
用户
+----+-----------------------------+---------+
| id | text | user_id |
+----+-----------------------------+---------+
| 1 | Lorem ipsum dolor sit amet. | 1 |
| 2 | Praesent ultricies libero. | 2 |
| 3 | Donec eget blandit nunc. | 3 |
+----+-----------------------------+---------+
评论
comments
注意:对评论作者的引用存储在+----+-------+
| id | name |
+----+-------+
| 1 | John |
| 2 | James |
| 3 | Jacob |
+----+-------+
。
示例#2(使用关联表)
用户
+----+-----------------------------+
| id | text |
+----+-----------------------------+
| 1 | Lorem ipsum dolor sit amet. |
| 2 | Praesent ultricies libero. |
| 3 | Donec eget blandit nunc. |
+----+-----------------------------+
评论
+----+--------------+-----------+
| id | comment_id | user_id |
+----+--------------+-----------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
+----+--------------+-----------+
comment_user
comment_user
注意:对评论作者的引用存储在{{1}}。
中答案 0 :(得分:5)
您正在使用术语"数据透视表"不正确。中间表有各种术语;常用名称包括联结表和关联表。优点和缺点也很奇怪 - 您正在邀请意见,这在Stack Overflow上是明确禁止的。但是,你的问题是相当误导的。因此,值得回答。
你的两个选择做不同的事情。第一个实现1:n关系。给定用户可以有很多评论。但评论只能属于单个用户。
第二个实现m:n关系。给定用户可以有很多评论。给定的评论也可以有很多用户。
显然,1:n关系可以作为m:n关系的特例来实现。然而,这是过度和低效的。
用户和评论之间的关系通常为1:n,因此第一个结构似乎更自然。
答案 1 :(得分:1)
没有正式的,没有。
优点:
缺点:
另外,comment_user表中的id列似乎毫无意义。