0

我有 3 个 php 应用程序需要组合用户表。我想让它成为用户的无缝登录过程。所有应用程序都将托管在同一个域中,cookie 可以设置为任何需要的内容。所有 3 个应用程序都从同一个数据库运行。

当前的用户表有一些相同的字段,有些则没有。组合表将是 58 个字段。

一个表与其他 2 个表具有不同的“id”主键。

任何应用程序中都没有数据,因为它们是一个新项目。所有用户都将由我们创建,而不是通过自助注册页面。

我已经通过 php 代码搜索了调用每个表时的所有实例,但不清楚如果我创建一个包含每个应用程序所需的所有字段的新表,需要更改哪些内容。识别“id”特别困难。

任何关于最佳方法的想法,变通办法的想法将不胜感激。

谢谢

4

1 回答 1

0

正如我之前在评论中指出的那样,我认为您可以通过引入一个共享表并为每个应用程序提供自己的视图来解决问题。

然后共享表将存储所有需要的字段。根据这个问题中的信息,这意味着它同时存储了一个整数 ID 和一个唯一标识符。视图将表的列映射到相应应用程序所需的列。

现在,第二个问题是如何实现这种映射。不幸的是,我不熟悉 MySQL。所以让我先在 T-SQL / MS SQL Server 中尝试:

CREATE TABLE [dbo].[Users]
(
    [ID] [int] primary key,
    [GUID] [uniqueidentifier] NOT NULL,
    [UserName] [varchar](100) NOT NULL
) ON [PRIMARY]
GO

CREATE VIEW Users1 (ID, UserName)
AS SELECT ID, UserName FROM Users
GO

CREATE VIEW Users2 ([GUID], [UserName])
AS SELECT [GUID],[UserName] FROM Users
GO

CREATE VIEW Users3 ([UID], [UserName])
AS SELECT [GUID],[UserName] FROM Users
GO

您还可以在 create view 语句中重命名列名,这意味着如果不同的应用程序对列有不同的名称(例如:pwd 或密码),则没有问题。我在 VIEW Users3 中完成了此操作,其中 UID 列映射到实际表的 GUID 列。

但是,我刚刚意识到有一个警告。如果两个或更多应用程序期望用户表具有相同的名称,我看不出这是如何工作的。

至于 MySQL:似乎大部分 T-SQL 代码也应该适用于 MySQL,除了我认为的表定义。请参阅此处了解如何在 MySQL 中创建视图:http: //dev.mysql.com/doc/refman/5.0/en/create-view.html

让我知道这是否有帮助:)

于 2013-10-23T16:02:29.717 回答