Database Layout 我有一个数据库,它在单独的表中存储了一堆信息,包括用户名,密码和不同类型的用户(管理员,客户等)的其他详细信息。
我想使用用户名搜索数据库并返回用户名所属表的名称。这将告诉我他们是哪种类型的用户。 像这样:
从table1,table2,table3中选择tableName WHERE username = thisValue
我对mysql没有太多经验,所以我什至不知道从哪里开始。
答案 0 :(得分:1)
您说过in seperate tables of course
,但实际上最好只使用一个用户表,并带有一个role
列来记录用户角色:
CREATE TABLE users (
id INT NOT NULL PRIMARY KEY,
role_id INT NOT NULL,
FOREIGN KEY (role_id) REFERENCES roles (id)
)
和一个roles
表:
CREATE TABLE roles (
id INT NOT NULL PRIMARY KEY,
desc VARCHAR(100) NOT NULL,
...
)
有了这样的设计,找到所有例如管理员的用户将非常简单:
SELECT u.*
FROM users u
INNER JOIN roles r
ON u.role_id = r.id
WHERE
r.desc = 'admin';
此答案假设给定的用户只会始终拥有一个角色。为了说明多个角色,我们可以在users
和roles
表之间使用联结表。