![]() |
1
2
使用关系数据库不能以任何其他方式建立多对多关系。也就是说,如果你有一个名为“person”的表,你就不能创建一个列“friends”并期望在其中放置许多friends的用户id。您必须创建一个单独的表来保存关系本身。 |
![]() |
2
4
在关系数据库中,所有关系都只以一种方式表示:关系(关系对应于SQL中的表)。具有两个属性的关系,如R{A,B},表示A和B之间的二进制关系。例如,这种关系可以是一对多或多对多。 如果由R{A,B}表示的关系是多对多的,这意味着A或B都不是候选键(因为如果其中一个是唯一的,那么很明显,该属性的每个值只允许一个元组)。这意味着第三范式的原理要求依赖于A或B的任何属性进入其他表。原因是非键依赖(依赖于A或B的属性)是一种冗余形式,可能导致异常和不正确的结果。 因此,并不是说“多对多关系”与其他关系有什么不同。只是规范化通常会导致一种常见的模式,即表具有复合键,而没有其他非键属性。有些人喜欢将这种模式称为关联表——尽管我个人认为这个术语没有多大帮助。 |
![]() |
3
2
如果不创建第三个表,就没有地方存储关系。 能够 |
![]() |
4
1
让我们用一个例子来理解它。如果你有两张桌子,一张是苹果桌,另一张是人桌,他们有一种多对多的关系;这意味着一个人可以拥有多个苹果,一个苹果可以被多人分享吃掉。
|
![]() |
5
0
维基百科也对此进行了描述。看看吧: http://en.wikipedia.org/wiki/Many-to-many_(data_model)
|
![]() |
6
0
如果DB Server可以为您创建第三个表,这将是不灵活的。如果有这样的解决办法,你就不会对我有多大影响
|
![]() |
developer · 带外键的SQL表设计 5 月前 |
![]() |
relatively_random · 确保两个表之间一致的共同参考 7 月前 |
![]() |
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 1 年前 |
![]() |
robertspierre · 在多对多关系中自动删除未引用的行 1 年前 |
![]() |
Michael Samuel · MYSQL在以下情况下自动创建索引 7 年前 |