2014-09-19 107 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