我的公司创建了许多具有非常相似功能的应用程序,每个应用程序之间存在一些差异。例如,某些网站具有群组创建功能,其他网站具有用户个人资料页面,而其他网站则允许用户累积成就点等。
我们的客户希望用户能够使用相同的用户名/密码登录每个应用程序,因为用户必须为每个站点注册不同的帐户才有意义。
我们如何设计数据库?为所有应用程序提供单个中央数据库,或将它们分成单独的数据库并跨数据库进行JOIN更好吗?哪个更好的性能和设计明智?
感谢您的任何见解!
答案 0 :(得分:2)
使用OpenID。最简单的方法是使用Facebook Connect作为提供商。它们可以让您访问所有用户的数据(如姓名等),以便在需要时识别并挖掘数据。
如果您不想依赖外部提供商来处理您的用户帐户,请成为您自己的OpenID提供商。
答案 1 :(得分:1)
我会有一个中央服务器,它托管用户数据库和Web服务来访问该用户数据库。
通过这种方式,您可以使用相同的数据库,并从前端对该系统的Web服务执行登录。
这也是可扩展的,并且随着您的应用程序的复杂性会增加。
答案 2 :(得分:1)
我会接受另外两个答案并将它们组合成private OpenId Provider。
通过这种方式,您可以将标准OpenId客户端用于您的开发,如果您需要开发,甚至可以为外部OpenId提供商打开您的应用程序。
这为组织内的其他应用程序提供了可扩展性和开放标准,以使用相同的提供程序。
答案 3 :(得分:1)
一般来说,我会开发Master Data的表格,它们将是真实应用程序范围的单一版本。每个应用程序都将访问相同的“客户群”。在您的情况下,似乎主数据的概念可以应用于您的应用程序数据库。
答案 4 :(得分:1)
如果应用程序托管在公司内,您可以使用活动目录。 您可以使用ldap功能从php访问活动目录。您可以将用户添加到活动目录中的组,以便他们可以访问应用程序中的各种功能。