2014-09-19 103 views
0

我需要一些建議來創建一個爲多個用戶保存數據的數據庫模型。我會盡量做到儘可能具體。請原諒,如果這太寬泛或不適當。對MySQL數據庫建模的建議

我正在創建一個Web應用程序,用戶可以註冊並添加有關他們的sportsteams的數據。註冊後,用戶必須能夠將成員添加到表中並將成果添加到另一個表中。

現在我有4張桌子。 members_table持有sportsteam的所有成員。 achievements_table擁有所有成就。 member_has_achievement擁有成員和成就之間的關係,並充當唯一標識符。

最後我有login_table

這個表有多個列: loginid username password email

我最初的想法是login_tablemembers_table之間創建一個關係表。這樣一個用戶可以有多個成員,這些成員可以有多個成就。

但我不確定這是做到這一點的最佳方法。 我爲單用戶應用程序構建此模型,但我無法擴展它。

任何意見,我可以如何建模不同?

+0

用戶和成員之間有什麼區別? – 2014-09-19 11:26:17

+1

只要你把唯一的標識符放在achievement_table中,你就不需要'member_has_achievement'(就像成就的唯一ID一樣,成員有一個唯一的ID,這樣你就可以在這個唯一的ID中插入這個唯一的ID)。 – 2014-09-19 11:27:41

+1

@CharlotteDunois我認爲他需要member_has_achievement,看起來像achievement_table存儲所有可用的成就,而member_has_achievement是說成員擁有哪些成員。這是合理的(它是多對多的關係)。 – 2014-09-19 11:29:05

回答

1

現在一切似乎都很好。想象一下,你有多個用戶,存儲在你的用戶表中。
現在,如果用戶可以添加成員,所有你需要的是一個members_table,添加您的user_id爲外鍵:

----------------- 
| Members_table | 
----------------- 
| ID : PK  | 
| User_ID : FK | 
| Name   | 
| anything_else | 
----------------- 

----------------- 
| User   | 
----------------- 
| ID : PK  | 
| email   | 
| login   | 
| password  | 
----------------- 

我沒有看到一個原因,這不會擴大。您可以通過User_ID查看哪個用戶添加了哪個用戶等等......基本上這是一對多的關係:一個用戶可以有很多成員,但是一個成員只屬於一個用戶,如果我理解正確的話:)

這裏

用戶表將是你login_table BTW :)

+1

是的 - 我只是在想,如果這是最好的方式。但正如你指出的那樣,它實際上可以工作:) – 2014-09-19 11:38:43