我在 Linq 对象关系 (O/R) 映射器中的两个表之间划了一条线:
Order Customer
-------------- ---------------
| OrderID | | CustomerID |
| CustomerID |♦---------˃| ... |
| | | |
-------------- ---------------
注意:或者可能是
Order Customer
-------------- ---------------
| OrderID | | CustomerID |
| CustomerID |˂---------♦| ... |
| ... | | |
-------------- ---------------
我不确定; 它让我双向拖动。
- 第一个问题,什么是箭头,什么是菱形?
假设第二个图, 的基数被Association创建为OneToMany。这是有道理的,因为:
- 一位客户
- 有很多订单
但让我感到困惑的是Association.Unique(布尔)属性。它默认为false. 这是有道理的,因为它是一个OneToMany关联。Order.CustomerID不能是唯一的,否则它不会是OneToMany关联,而是OneToOne。
但随后我被允许将OneToMany Unique 属性更改为true。这是没有意义的,所以我得出的结论是Uniqueness 不适用于Order.CustomerID,而是适用于Customer.CustomerID。但是该图已经表明Customer.CustomerID是Primary Key。当然它是唯一的,它是一个主键。
但是Unique属性没有设置。这是没有意义的,所以我得出的结论是Uniqueness 并不意味着任何一张桌子。
第二个问题,什么
Unique意思?指定外部目标列是否具有唯一性约束
第三个问题:什么是父母和孩子?
再次假设第二个图表:
Customers.CustomerID ♦------------> Orders.CustomerID
我以Customers表为父母。它是拥有成为客户意味着什么的人。你想改变一个客户,你走到父母那里。
同时,子Orders表出现并想要引用 a Customer。
Parent(diamond) Child(arrowhead)
==================== =================
Customers.CustomerID (PK) ♦------------> Orders.CustomerID (FK)
除了当我查看关联的Parent和Child属性时:
子属性
Name:Orders
父属性
Name:Customer
他们想在“孩子”上创建一个名为Orders. 不不不。孩子是命令。他们想向父级添加一个名为Customer. 不不不。父母是客户。
这意味着我必须把它倒过来,并且父母和孩子的术语与我的想法完全相反:
Child(diamond) Parent(arrowhead)
==================== =================
Customers.CustomerID (PK) ♦------------> Orders.CustomerID (FK)
到了这个时候,我想把我的大脑炸飞;而是花 35 分钟在 Stackoverflow 上编写问题;而不是继续对着我的电脑尖叫。
帮助。