2013-04-08 85 views
1

我有一張桌子,裏面有我可以在很多地方看到的物品,物品的信息。例如,我可以在倉庫或商店中購買物品。所以我有一個帶有商店信息的表格和其他表格以及倉庫的信息。如何處理這種情況下的關係 - 物品,物品和地點?

如何將itms與位置關聯的最佳方式是?

我認爲一個選項是在表中有兩個外鍵,一個用於商店,另一個用於倉庫。如果我在商店有FK,倉庫的FK必須爲空。如果將來該物品可能位於其他位置,則可以在物品表中添加新的字段。

但是,當我想要顯示的信息,我必須檢查哪些FK不爲空,並顯示具體位置的信息。但是,如果我使用視圖來顯示項目的信息和位置的主要信息,則我有許多字段爲空,因爲它不是項目的位置。

但這是最好的方法嗎?還有其他選擇,或者這是最正確的方法嗎?

謝謝。

回答

1

我認爲一個選項是在表中有兩個外鍵,一個用於商店,另一個用於倉庫。

這是一個legitimate solution,當只有幾種可以鏈接到的位置時,它應該可以正常工作。但是,如果有(或者可能是在未來)多種位置,可以考慮這樣做:

enter image description here

符號enter image description here表示繼承(又名分類,分型,子類,概括層次等)。請在ERwin Methods Guide中搜索「子類型關係」獲取更多信息,並查看this post瞭解物理數據庫中可能實施策略的一些細節。

另請參閱this postthis post

但是,如果我使用視圖來顯示項目的信息和位置的主要信息,我有很多字段爲空,因爲不是該項目的位置。

沒有什麼會幫助你。如果兩條數據有不同的結構,你只能盲目地將它們「強制」成統一的行。或者讓一些字段是可選的(就像你已經做的那樣),或者只獲取公共字段(如果你可以忍受的話),或者對每種位置簡單地使用單獨的查詢/視圖 - 沒有規則說你必須得到在單個數據庫中的所有內容往返!


事實上,根據您的客戶端庫,你可能實際上是能夠在一個單一的數據庫往返打包多個邏輯上獨立的查詢。

1

這聽起來像你應該有一個位置表,然後讓該項目包括通過外鍵引用該表。

Item 
----------- 
ItemId (PK) 
ItemName 
LocationId (FK) 

Location 
----------- 
LocationId (PK) 
LocationName