【问题标题】:What does it mean for a One-to-many Link relation to be Unique?一对多链接关系是唯一的意味着什么?
【发布时间】:2012-06-15 19:54:39
【问题描述】:

我在 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 不适用于Order.CustomerID,而是适用于Customer.CustomerID。但是该图已经表明Customer.CustomerID 是一个主键。当然它是唯一的,它是一个主键。

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

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

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

  • 第三个问题:parentchild是什么?

再次假设第二个图表:

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

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

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

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

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

子属性

  • Name: Orders

父属性

  • Name: Customer

他们想在 "child" 上创建一个名为 Orders 的属性。不不不。子命令。他们想向父级添加一个名为Customer 的属性。不不不。父级客户。

这意味着我必须把它倒过来,而 parentchild 这两个词与我的想法完全相反:

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

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

帮助。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多