【问题标题】:Can someone explain what a Foreign Key is, and why you use it? [closed]有人可以解释什么是外键,以及为什么使用它吗? [关闭]
【发布时间】:2018-12-12 10:54:24
【问题描述】:

我正在学习 C#,我正在学习 SQL 数据库,但我不确定我是否完全理解外键?

先谢谢你

【问题讨论】:

  • 其他网站上有很多关于数据库、sql和外键的教程。搜索任何可用的。如果您正在寻找教程,Stackoverflow 不是搜索的正确位置。

标签: c# sql database


【解决方案1】:

外键是另一个表的主键。它用于链接两个表。 示例:我们有 2 个表(Person & Employee)

Person 有主键:personID, 员工有主键:employeeID

员工是一个人,所以他们必须联系起来。

员工有外键:personID

因此,对于每个 Employee 都有一个与之关联的 Person(其中 Employee 中的 personID 与 Person 中的 personID 相同)。

【讨论】:

    【解决方案2】:

    在关系数据库的上下文中,外键是一个表中的一个字段(或字段集合),它唯一地标识另一个表或同一个表的一行。简而言之,外键是在第二个表中定义的,但它指的是第一个表中的主键或唯一键。

    这将我们带到主键。客户表的每一行都包含一个名为 customerNumber 的唯一键,这是该表的主键。在订单表上,我们有 orderNumber 列,它是该表的主键。

    orders 表有一个通过客户编号返回到customers 表的外键链接。我们称客户编号为外键。

    客户表:

    customerNumber CustomerName.
           1           Bob
           2           Jane
    

    订单表:

    OrderNumber customerNumber   Status
           1           1         Shipped
           2           1         Exploded
    

    使用上面的数据,如果您想查看 bob 有哪些订单,您可以将主键作为 bobs 客户 ID,并检查订单表中包含它的所有行。这是链接两个表的外键。

    【讨论】:

      【解决方案3】:

      FOREIGN KEY 是用于将两个表链接在一起的键。

      FOREIGN KEY 是一个表中的一个字段(或字段集合),它引用另一个表中的 PRIMARY KEY。

      包含外键的表称为子表,包含候选键的表称为引用表或父表。

      参考:https://www.w3schools.com/sql/sql_foreignkey.asp

      【讨论】:

        【解决方案4】:

        您使用它将两个表链接在一起,它使您的数据完整性更好。您应该始终使用外键来链接表引用,除非您有明确的理由不这样做。

        假设您有 Foobar 表和 UserId 列和 User 表和 Id 列。您使用外键将UserId 列从Foobar 表链接到User 表的Id 列。

        之后,如果您有UserId 为1 的Foobar 行并尝试从User 中删除Id 列值为1 的行,您会收到错误,因为Foobar 引用了它。插入也经过验证,假设您尝试使用UserIdFoobar 表插入行,而User 表中不存在该行,您也会收到错误消息。

        【讨论】:

          猜你喜欢
          • 2022-01-04
          • 1970-01-01
          • 1970-01-01
          • 2016-03-26
          • 2012-07-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多