我有4种类型的用户,每个用户都有特定的数据,但他们也共享公共数据,比如用户名
,密码
等。
我的第一个想法是创建一个带有user_type
列的主users
表。然后在查询用户数据时,我只需先选择其user_type
,然后根据输出
运行不同的查询以获取“用户类型”特定数据。
我不喜欢这个想法,因为我希望能够使用外键一次性获取所有与用户相关的数据,并且最好只用一个查询。
第二个想法是在users
表中不使用user_type
列,而是使用外键,从特定用户类型的表中将指向主users
表行的指针。
我更喜欢这个想法,尽管我想每次需要获取用户数据时都要运行N个查询,其中N是用户类型的数量。
还有其他选项吗?在这种情况下,什么是良好的实践?
非常感谢
SELECT * FROM users U LEFT JOIN user_details D ON U.id = D.user_id WHERE U.id = ?
。 - Benny Hill