关于外键:访问关系

Access relationships

我有很多表的数据库。数据库中的情侣与其他情侣相关。

表的排列:

1
ID (automatic number with primary key), ID_sup (number), supplier (text), ...

相关表:

1
ID (number with primary key), supplier (text), address (text), ...

因此表中的ID_supID相同,suppliersupplier相同。这些表仅包含表Related table

中的几个供应商。

我尝试将其与"强制参照完整性级联更新的相关字段"连接起来,但是它不起作用。

我也尝试过更改数据类型和主键,但是我总是收到以下错误消息:

  • 找不到链接的主表字段的任何唯一索引。
  • 关系必须位于具有相同数据类型的相同数量的字段上。 (错误3368)

  • 在我看来,您想要在多个表中重复(或"非规范化")供应商名称,并且如果一个关系表中的名称发生更改,则"关系"会自动更新该表中的名称。但是,"关系"通常不会那样工作。

    相反,您仅在[Suppliers]表中保留供应商的名称(以及其他特定于供应商的详细信息),然后在其他表中仅通过SupplierID引用供应商。这称为"规范化数据"。??

    现在,如果要让供应商名称出现在有关[Orders]的查询(或报表等)中,请在查询中将[Orders]表与[Suppliers]表联接起来,如下所示:

    1
    2
    SELECT Orders.OrderID, Orders.OrderDate, Suppliers.SupplierName
    FROM Orders INNER JOIN Suppliers ON Orders.SupplierID = Suppliers.SupplierID

    您仍然可以使用"关系"来强制执行参照完整性(即,确保每个订单都引用一个有效的供应商),但是您只需使用SupplierID而不执行其他操作即可。


    您要创建一个从Table2.ID到Table1.ID_sup的一对多关系。在MS Access"编辑关系"窗口中,Table2.ID在左侧,Table1.ID_sup在右侧。 MS Access使用无穷大符号来表示关系的"许多"面。