2016-03-09 50 views
-2

我正在寫一個數據庫,將護理人員匹配到客戶端。照顧者拜訪客戶並幫助他們穿好衣服等等。因此,照顧者桌子上保存着諸如他們駕駛什麼樣的性別等信息。如果客戶想要女性照顧者,那麼我會檢查相關照顧者的性別所有的男性照顧者都將被排除在外。我用桌子開始了這條路線,但很快發現有很多問題和答案的組合。mysql table layout讓我完全困惑

我不知道這是否需要多對多的關係,但我有點失落。 任何幫助將感激地收到。

+0

使用通用屬性值表。 – Barmar

+0

**建議:**創建**用戶**表.....創建**角色**表並創建它們之間的關係。將各種用戶保留在用戶表中。通過以上操作,您將降低未來複雜性。 :-)(還有什麼要問?)@ user2042410 –

+1

聽起來像是一個典型的多對多3表格的情況。 –

回答

1

您應該使用bridge entity來消除CarerClient表之間的多對多關係。此Transaction表格還允許您向該實體添加其他基於交易的信息,例如Driver等等,這些信息不屬於CarerClient

事情是這樣的:

護老者

Carer_ID  PK 
Name 
Gender 
Address 
Vendor_ID  FK -- Assuming your individual carers are part of a network 
etc... Other Carer based details 

客戶

Client_ID PK 
Name 
Address 
Gender 
etc... other Client based details 

交易

Transaction_ID PK 
Client_ID  FK 
Carer_ID   FK 
DateTime 
Location 
Driver_ID  FK -- Assuming you want to add a driver table 
etc... Other transaction based details 

作爲後續 ...我個人不贊同那些建議Entity-Attribute-Value設計。 EAV對於前端應用程序中的基本查找值可能沒有問題,但基於您的整體數據庫設計是一個非常糟糕的主意(出於完整性和維護原因)。遵循標準關係database normalization實踐併爲每個主要參與者創建實體表要好得多。

+0

優秀.....! –