2013-04-16 97 views
1

我有許多表的數據庫。來自數據庫的夫婦與其他夫妻有關係。訪問關係

表的安排:

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

相關表:

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

所以在表相同ID_supIDsuppliersupplier。表格僅包含來自表Related table的少數供應商。

我試圖用強制引用完整性+級聯更新相關字段來連接它,但它不起作用。

我曾試圖改變數據類型和主鍵很好,但我一直這些錯誤消息:

  1. 沒有找到鏈接主表字段中的任何唯一索引。
  2. 關係必須在具有相同數據類型的相同數量的字段上。 (錯誤3368)

回答

1

在我看來,您希望供應商的名稱在多個表中複製(或「非標準化」),並且如果在另一個表中更改了關係,則會自動更新一個表中的名稱。但是,關係通常不會像那樣工作。

相反,你在只是的[供應]表保持供應商的名稱(和其他特定於供應商的詳細信息),然後由供應商ID唯一指的是供應商的其他表。這被稱爲「規範化數據」。

現在,如果您希望供應商的名稱出現在關於[訂單]的查詢(或報表等)中,那麼您將[訂單]表與您的查詢中的[供應商]表加入,類似這樣的:

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

你仍然可以使用一個關係到實施參照完整性(即確保每一個訂單是指一個有效的供應商),但你做到這一點與只是的供應商ID,沒有別的。

+0

Gord,非常感謝你的回答 - 現在它更加清晰。我在這個領域是全新的,所以我的問題很抱歉。現在,當我將ID連接到ID供應商時,它可以正常工作。但是第一個ID是自動編號,所以會有任何編號。我期望ID_sup - ID之間的連接,但它不起作用。你能給我任何解釋嗎? – astrak

+0

@astrak [Suppliers]表中的'ID' AutoNumber字段也需要被指定爲該表的「主鍵」。是你做的嗎? (在設計視圖中查看錶格時,該字段旁邊應該有一個「鑰匙」圖標。) –

+0

是的 - 我擁有它。我終於解決了它。所以再次非常感謝你! – astrak

0

您希望創建從Table2.ID到Table1.ID_sup的一對多關係。在MS Access「編輯關係」窗口中,Table2.ID位於左側,Table1.ID_sup位於右側。 MS Access使用無限符號來表示關係的「多」一面。