2013-11-03 35 views
-2

我正在設計一個支持POS功能的MYSQL數據庫。假設有一個有多個地點的業務(多個分支辦事處),每個地點都必須唯一標識,但在具有自己的稅收,產品,產品組和產品子組,客戶等的層次結構中。DB Design建議位置和子位置

There需要成爲一個主要地點,其他人則需要成爲子地點。

這是將這些信息存儲在事務數據庫中的最佳方式?我是否應該使用一張表來存儲主位置和子位置,並使用Self Join來檢索層次結構?

實施例:

StoreID 
Sub_StoreID 
Store_Name 

Sub_StoreID將是空白的主要位置和他人它將存儲一個ID

或者我應該選擇兩張表,並在下面提及。我應該複製產品的所有表嗎?客戶和其他人以更好的方式使其工作。

Primary_Location_Attributes, 
Secondary_Location_Attributes, 
Association_Primary_Secondary_locations 

讓我知道如果問題不清楚,所以我可以嘗試以不同的方式解釋。

+0

By _location_ you mean _branch offices_? – geomagas

+0

是的,分支機構.. – VijayBez

+0

我猜「商業」(=主要位置)實體將具有不同於分支機構(=次要位置)的屬性,所以我會選擇兩個表模型。該關聯不是第三個表格所必需的,因爲這個關係是1:N,所以一個簡單的FK將會這樣做。除非我錯過了一些東西,那就是。 – geomagas

回答

1

另一個表中沒有必要,你可以做一個parent_id屬性:

CREATE TABLE offices(
    id INT PRIMARY KEY AUTO_INCREMENT, 
    parent_id INT REFERENCES offices(id), 
    ...  
); 

這將是一個家長或總行:

INSERT INTO offices (parent_id) VALUES(NULL); 

這將是一個郵政支局:

INSERT INTO offices (parent_id) VALUES(1);