我有很多表的数据库。数据库中的几个与其他人相关。
表格的安排:
ID (automatic number with primary key), ID_sup (number), supplier (text), ...
相关表格:
ID (number with primary key), supplier (text), address (text), ...
因此,表格中ID_sup
与ID
相同,supplier
与supplier
相同。表格仅包含表Related table
中的少数供应商。
我尝试将其与强制参照完整性+级联更新相关字段连接,但它不起作用。
我也试图更改数据类型和主键,但我总是有这些错误消息:
答案 0 :(得分:1)
在我看来,您希望在多个表中重复(或“非规范化”)供应商的名称,并且如果在另一个表中更改了名称,则关系会自动更新名称。但是,关系不会(通常)那样工作。
相反,您将供应商的名称(以及其他供应商特定的详细信息)保存在 [供应商]表中,然后通过SupplierID 仅参考其他表格中的供应商/ em>的。这称为“规范化数据”。
现在,如果您希望将供应商的名称显示在有关[订单]的查询(或报告等)中,那么您可以在查询中使用[供应商]表加入[订单]表,如下所示:
SELECT Orders.OrderID, Orders.OrderDate, Suppliers.SupplierName
FROM Orders INNER JOIN Suppliers ON Orders.SupplierID = Suppliers.SupplierID
您仍然可以使用关系来强制执行参照完整性(即,确保每个订单都指向一个有效的供应商),但是您只需使用 供应商ID即可。
答案 1 :(得分:0)
您希望创建从Table2.ID到Table1.ID_sup的一对多关系。在MS Access"编辑关系"窗口,Table2.ID在左侧,Table1.ID_sup在右侧。 MS Access使用无穷大符号来表示"许多"关系的一面。