【发布时间】:2012-12-06 17:52:12
【问题描述】:
我有 4 种类型的用户,每一种都有特定的数据,但他们也共享公共数据,例如 username、password ..
我的第一个想法是创建一个带有user_type 列的主users 表。然后在查询用户数据时,我可以先选择他们的user_type,然后根据output 运行不同的查询来获取“用户类型”特定数据。
我不喜欢这个,因为我希望我可以通过一个查询获取所有与用户相关的数据,并且最好使用外键。
第二个想法是在users 表中没有user_type 列,而是使用来自特定用户类型表的外键将指向主users 表中的一行。
我更喜欢这样,但我想我将不得不运行 N 个查询,其中 N 是每次我需要获取用户数据时的用户类型数。
还有其他选择吗?在这种情况下,好的做法是什么?
非常感谢
【问题讨论】:
-
如果我理解你,你只需要在你的 SQL 语句中使用一个 JOIN 子句。类似
SELECT * FROM users U LEFT JOIN user_details D ON U.id = D.user_id WHERE U.id = ? -
一个用户可以同时属于多个类型吗?
-
@Catcall no 在这种情况下,用户只能拥有一种类型,尽管我很好奇这两种情况下的可能性是什么
标签: mysql database-design relational-database