2013-01-07 71 views
0

我有一個處理不同商店實體的應用程序。數據庫設計(MySQL) - 商店的獨立和連鎖

的過程:
1.用戶註冊到網站
2.用戶創建一個店(帶有各種屬性)

我至今對數據庫中的表是:

[USER] 
user_id 

[USER_TO_SHOP] 
user_id 
shop_id 

[SHOP] 
shop_id 

上述設計涵蓋了需要1名用戶在其帳戶下擁有許多商店實體。
我想現在實現的,是有實體店這是獨立的,但也有實體店這是商店組的一部分

連鎖店例如:
麥當勞地址X芝加哥
麥當勞地址X紐約
麥當勞地址X波士頓

我應該如何進行我的數據庫設計,以支持連鎖店和獨立店?最佳實踐非常感謝!

*由獨立我指的是不屬於連鎖店鋪實體

回答

0

從你的意思,一家商店可以屬於0到1連鎖店?如果是這樣,我想簡單地增加一個額外的表和外鍵添加到店表:

[CHAIN] 
chain_id 
chain_name 

[SHOP] 
shop_id 
chain_id 
+0

如果商店不屬於連鎖?我們保持shop.chan_id爲零? – mallix

+0

是的,shop.chain_id可以爲NULL – Mathew

+0

您也可以在shop table上刪除'user_to_shop'以及一個可爲空的'user_id'。 –

0

嗯,鏈條,你可以有這樣的事情,就像你有一個用戶:

[CHAIN] 
chain_id 

[CHAIN_TO_SHOP] 
chain_id 
shop_id 

不確保你通過一個獨立店的意思是,雖然 - 如果你的意思是不是由用戶或鏈擁有的店鋪,可能是這樣的:

[STANDALONE_SHOP] 
shop_id 

但我會質疑這樣的需要表,因爲獨立店可以爲沒有在CHAIN_TO_SHOPUSER_TO_SHOP

+0

如果鏈商店是一個一對多的關係,然後添加一個數據透視表將意味着不必使用不必要的連接你的疑問 – Mathew

+0

@MatW - 是的,如果你總是需要這些信息的話。你也可以使用可以爲空的'chain_id'的建議,但這只是將'chain_id'拉到單獨的表中(就像他已經用於'user_id'一樣) –

1

了我的頭頂部的條目假設我有一個位置表和重命名店的公司,所以單一的公司進入該表,但可以有多個地點。然後用戶與公司位置相關聯。

有很多方法可以實現你想要的東西,所以答案會是主觀的,因爲我們並沒有真實的全貌。