2013-02-21 40 views
0

我很抱歉,如果这看起来过于简单。我发现最好问一个愚蠢的问题,并编写正确的代码,而不是犯错误,花几个小时试图找到并修复它。组织一个多用户数据库网站

我做了我哥哥一个客户管理系统(PHP/MySQL的),他的几个朋友看到了,想一个了。所以我认为只是建立一个单独的网站,每个人都有自己的登录名/密码是一个好主意。当他们登录到他们的账户时,他们只能看到他们的客户数据库。这听起来像个好主意,但我正在碰到一个心理障碍。

现在我哥的地盘我有两个表一个用于登录信息(这样他就可以给访问他的球队),然后实际的数据库保存所有的客户信息一个数据库。如果我遵循这个模型,我仍然只需要一个数据库和一个表来获取登录信息,但是每个用户都必须为他们的个人客户拥有自己的表。所以说我最终得到越来越多的用户,我拥有一个拥有数百个不同表格的数据库。可以吗?他们的安全问题?有没有更好的方法来解决这个问题?我错过了一些逻辑?谢谢。

+0

将所有的sql保存在源代码管理中。使用脚本来创建/修补数据库。每个租户使用一个数据库(mysql数据库实际上不是通用命名法中的数据库,它们是模式) – 2013-02-21 20:01:29

回答

1

如果我遵循了这一模式,我仍然只需要登录信息一个表一个数据库,但每个用户必须拥有自己的表,他们的个人客户。

号你有一个单一的客户表。其中的一列将是foreign key,它引用用户表的主键(显示客户端与哪个用户相关联)。

(除非一个客户端可以与多个用户,在这种情况下,你可以使用一个junction table关联)。

+0

我喜欢它!我想我的sql查询会涉及很多事情,但是有没有安全漏洞需要我注意,以防止其他用户看到他们没有添加的客户端。我无法想象一个情景,但让所有的客户混在一起让我感到紧张! – 2013-02-21 17:42:46

+0

是的。当任何用户请求有关客户端的信息时,请检查该客户端是否属于该用户。 – Quentin 2013-02-21 17:47:08

+0

这样的东西:SELECT * FROM clients WHERE userid = 1 AND whatever data want to find – 2013-02-21 20:17:36

0

那么在beginnig可以实现一个名为Client或公司(所有客户端都在表中输入一排,我的意思是你的弟弟和其他任何人/公司谁/这要使用你的网站)表,并且表中的PK应该添加到数据库中的所有表中。

但是,如果你的网站的岩石会发生什么?也许你有10000个客户端,你应该分析服务器的性能(可能是主机)是否支持这种速率传输以及PK/FK工作正常。在那个时候,也许你应该为每个客户创建一个数据库和一个网站。