我有两个不同类型的用户表。其中之一是注册用户的普通用户表。另一种是针对未注册用户的。 我需要将这两个表与其他表一起使用。例如;
注册用户:用户 ID、用户名、密码、姓名、性别、电子邮件、IP
unregistered_users:用户 ID、姓名、性别、IP
some_table: ID、标题、内容、用户 ID
如何将 some_table 与 user 表连接?
我有一些意见,但没有一个感觉不对。
- 使用所有带有空值的表 regUser 列和 unRegUser 列 并连接两个表等。这种方式不适合,因为所有表 有很多空单元格。
- 如果像 some_table 这样的所有表都添加一列 userType 和每个查询 有“如果”。但这种方式耗时长、耗费资源。
- 如果 userid 列类型为字符串 (r13, u32 - r:registered, u:unregistered) 并使用“substring”和“if”,但这更多 困难
- 创建一个连接表,如“id、type、userid”并使用此 id 而不是用户 ID。但还需要“如果”
- 创建一个连接表,如“id, regUser, unRegUser”,其中包含 null 值(value)观。
或者创建一个不同的用户表来组合两个用户表。当然,我们又出现了空列。
你认为哪种方式最好?或者谁有不同意见。
最佳答案
当内容相同时,为什么要尝试通过创建两个表来复制它,而不是创建一个名为 users 的表
create table users
(
user_id int not null auto_increment primary key
username varchar(500),
password varchar(500),
email varchar(400),
ip varchar(800),
reg_status enum(0,1),
);
然后您可以使用此 user_id 并将其引用到您的辅助表。
您可以在 reg_status 上构建查询
0 - Unregisterd
1 - Registered
如果你想要更标准化的表格
那么你可以使用两个表
create table users
(
user_id int not null auto_increment primary key
email varchar(400),
ip varchar(800),
reg_status enum(0,1),
);
create table registered_users
(
login_id int not null auto_increment primary key
username varchar(500),
password varchar(500),
user_id - F.k (Foreign Key)
);
关于php - 像使用一张表一样使用两张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24839800/