我在 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。这是没有意义的,所以我得出的结论是Unique
ness 不适用于Order.CustomerID
,而是适用于Customer.CustomerID
。但是该图已经表明Customer.CustomerID
是Primary Key。当然它是唯一的,它是一个主键。
但是Unique
属性没有设置。这是没有意义的,所以我得出的结论是Unique
ness 并不意味着任何一张桌子。
第二个问题,什么
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 上编写问题;而不是继续对着我的电脑尖叫。
帮助。