1

我在 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.CustomerIDPrimary Key。当然它是唯一的,它是一个主键。

但是Unique属性没有设置。这是没有意义的,所以我得出的结论是Uniqueness 并不意味着任何一张桌子。

  • 第二个问题,什么Unique意思?

    指定外部目标列是否具有唯一性约束

  • 第三个问题:什么是父母孩子

再次假设第二个图表:

Customers.CustomerID ♦------------> Orders.CustomerID

我以Customers表为父母。它是拥有成为客户意味着什么的人。你想改变一个客户,你走到父母那里。

同时,子Orders表出现并想要引用 a Customer

     Parent(diamond)                     Child(arrowhead)
====================                     =================
Customers.CustomerID (PK) ♦------------> Orders.CustomerID (FK)

除了当我查看关联的ParentChild属性时:

子属性

  • NameOrders

父属性

  • NameCustomer

他们想在“孩子”上创建一个名为Orders. 不不不。孩子命令。他们想向父级添加一个名为Customer. 不不不。父母客户。

这意味着我必须把它倒过来,并且父母孩子的术语与我的想法完全相反:

      Child(diamond)                     Parent(arrowhead)
====================                     =================
Customers.CustomerID (PK) ♦------------> Orders.CustomerID (FK)

到了这个时候,我想把我的大脑炸飞;而是花 35 分钟在 Stackoverflow 上编写问题;而不是继续对着我的电脑尖叫。

帮助。

4

1 回答 1

0

关于问题 2 - Unique 属性可能表示该关系是 OneToOne 关系。

即使直接在 sql 数据库中也没有特定的 OneToOne 关系。相反,只有一个外键可以将一个表中的键导出到另一个表。因此,外键关系始终是一对多的。在包含导出键的表上使用附加约束,可以使关系事实上是一对一的。但是这样做并不会改变外键关系,而只是对外键表中的数据应用附加条件。

关于问题3:属性名称意味着子对象(Order)将有一个名为Customer的属性,可用于获取父对象的实例。并且父对象将有一个名为 Orders 的属性,可用于为客户获取子对象。

于 2012-06-26T20:12:38.220 回答