正如我之前在评论中指出的那样,我认为您可以通过引入一个共享表并为每个应用程序提供自己的视图来解决问题。
然后共享表将存储所有需要的字段。根据这个问题中的信息,这意味着它同时存储了一个整数 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
让我知道这是否有帮助:)