我试图理解“一对多关系”。我们假设我有两个表:Person
和Vehicle
。
在Person
表格中,我有两列:personid
和personame
。 personid
是primary key
。我在Person
表中有两行:
personid | personname
---------+-----------
1 | Rajesh
2 | Suresh
在Vehicle
表格中,我有两列:vehicleid
和vehiclename
。我在Vehicle
表
vehicleid | vehiclename
----------+------------
1 | Car
现在,根据“一对多关系”,每个人可以拥有零,一或多辆车。
那么,Rajesh
和Suresh
都可以映射到Car
吗?
例如:
Rajesh -+- Car
Suresh -/
在“一对多关系”中,2个不同的Person
是否可以引用相同的Vehicle
?或者每个Vehicle
是否只应映射到一个Person
?
在“多对一关系”中,Vehicle
表中唯一的汽车可以映射到Person
表中的多个人,对吗?
答案 0 :(得分:1)
你需要多对多的关系"。它实际上是2-One-to-many关系的组合。在sql中执行此操作的唯一方法是使用第三个表。
<强>人强> 是PersonID 名称
一对多(一个人可以拥有多辆车)
所有权(或标题?) 是PersonID VehicleID
多对一(车辆可以有很多车主)<强>车辆强> vehicleid vehiclename
所有权表具有任何用户/车辆组合的潜在行(并且应该使该组合成为主键或至少是唯一约束)。
其他字段可以放在所有权表中,例如购买日期和金额,销售日期和金额等。因为这些属于车辆的所有权而不是所有者或车辆本身的财产。
答案 1 :(得分:0)
你的问题不一致,你说“每个人可以拥有零,一个或多个车辆”,但是你问“现在可以将Rajesh和Suresh都映射到Car ?“,这意味着每辆车可以拥有多个车主,不每个人可以拥有多辆车......
假设想要将每辆车的所有权限制为一个人(实际上,车辆可以由多个人拥有),并且允许个人拥有多辆车,只需添加PersonId
到{{ 1}}表,用于表示或指向拥有该车辆的个人。
那么你的车辆表就是
vehicle
答案 2 :(得分:0)
如果Rajesh和Suresh都有相同的车辆,并且每辆车可能拥有超过1辆车,那么你就拥有多对多的关系。
但如果一辆车只能由一个人拥有,那么你就拥有从人到车的一对多关系。
在一对多的关系中,2个不同的人可以参考汽车 在车辆表中
没有。 2不是一个。
答案 3 :(得分:0)
从Vehicle的角度来看,它有1个(一行,“Car Row”)到Many Person行(假设Person表有一个VehicleId列)
答案 4 :(得分:0)
Many to One
vs One to Many
指的是同一个概念,只是从不同方面来看。 (来自车辆或人)。
在标准的One To Many中你会有
人员表和车辆表,其中车辆表包含对人员表具有FK的personId。这样您就可以模拟一个人拥有0或多辆车的人。
如果车辆有多个车主,您应该引入人与车之间的多对多关系。那将需要第三个表(PersonVehicle)
答案 5 :(得分:0)
在你的例子中,Rajesh和Suresh可以共用同一辆车,你需要在人员表中使用汽车主钥匙。
Rajesh与CarA有一段关系 Suresh与CarA有一个关系
CarA将有很多关系(Rajesh&amp; Suresh)。
答案 6 :(得分:0)
现在,根据“一对多关系”,每个人可以拥有零, 一辆或多辆车。
正确。
那么,
Rajesh
和Suresh
都可以映射到Car
吗?
不,不是“一对多的关系”。这将是一个“多对多关系”。
在“一对多关系”中,2个不同的
Person
可以引用 相同Vehicle
?或者每个Vehicle
只应映射到一个Person
?
每个Vehicle
只应与单 Person
相关联。
在“多对一关系”中,
Vehicle
表中唯一的汽车 可以映射到Person
表中的多个人,对吗?
是的,但每个Person
只能链接到单 Vehicle
。
“多对一”和“一对多”是相同的,只是反过来。因此,以下两个陈述是等价的:
A
可以将链接到多个 B
。B
可以将链接到一个 A
。注意每个(粗体)中是“一对多”和“多对一”,为了表示相同的事情,如何切换表A
和B
?
假设如下:
Person Vehicle
------ -------
Jane Car
John Truck
Jane
与Car
相关联。每个Person
一次只能链接到一个 Vehicle
,反之亦然。
Jane--------Car
John Truck
Jane
与Car
和 Truck
相关联。每个Vehicle
一次只能链接到一个 Person
。每个Person
都可以链接到多个Vehicle
。
Jane---+----Car
John \---Truck
Jane
和 John
与Car
相关联。每个Person
一次只能链接到一个 Vehicle
。每个Vehicle
都可以链接到多个Person
。
Jane----+---Car
John---/ Truck
每个Vehicle
都可以链接到多个Person
,反之亦然。
Jane
和 John
都链接到Car
和 Truck
Jane---+--+-Car
\/
/\
John---+--+-Truck
Jane
与Car
和 Truck
相关联,John
与Truck
Jane---+----Car
\
John-----+--Truck