一对多链接关系是独特的,这意味着什么?

时间:2012-06-15 19:54:40

标签: visual-studio linq linq-to-sql orm

我在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主键。当然它是独一无二的,它是主键。

但未设置Unique属性。这没有任何意义,所以我得出结论,Unique ness并不意味着任何一个表。

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

      

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

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

再次假设第二张图:

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

我把Customers表作为父母。这是拥有客户意味着什么的人。你想改变一个关于顾客的东西,你走向父母。

同时,子Orders表出现并希望引用Customer

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

当我查看协会的儿童属性时:

儿童财产

  • NameOrders

家长属性

  • NameCustomer

他们想要在名为Orders“child”上创建一个属性。不不不。孩子订单。他们想要向父母添加一个名为Customer的属性。不不不。父客户。

这意味着我必须倒退,而 parent child 这两个词与我的想法完全相反:

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

到这个时候我想把我的脑筋吹掉;而是花了35分钟在Stackoverflow上创作一个问题;而不是继续在我的电脑上尖叫。

帮助。

1 个答案:

答案 0 :(得分:0)

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

即使直接在sql数据库中也没有特定的OneToOne关系。而是只有一个外键,其中一个表中的键可以导出到另一个表。因此,这种外键关系总是一对一的。在包含导出密钥的表上使用其他约束,可以事实上一对一地建立关系。但这样做并不会改变外键关系,而只是对外键表中的数据应用其他条件。

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