我们正在开发一个网站,该网站将包含大约 5 个不同的用户角色,每个角色都有不同的属性。在当前版本的数据库模式中,我们有一个包含所有用户及其所有属性的用户表。
问题是我们需要的属性因用户角色而异。所有用户都具有相同的基本属性,例如姓名、电子邮件地址和密码。但最重要的是,每个角色的属性都不同。有些有社交媒体链接,有些有发票地址等。总共可能有多达 60 个列(属性),其中每个用户角色仅使用一部分。
表中总共可能有大约 250,000 个用户,其中最大部分(大约 220,000 个)将是单个用户角色(并使用 60 列中的大约 20 个)。其他 30,000 名用户被划分为其他四个规则,并使用其他 40 列的子集。
从数据库作为开发的角度来看,最好的数据库结构是什么?我的想法是有一个基本的users表,然后用users _ moderators这样的表进行扩展,但这可能会导致很多 JOIN'ed 查询。防止这种情况的一种方法是使用视图,但我已经阅读了一些(过时的?)视图可能会损害性能的文章,例如:http ://www.mysqlperformanceblog.com/2007/08/12/mysql-view -作为性能麻烦制造者/。
“完美”的结构是否存在?有什么建议,或者这根本不是一个问题,我们是否应该将所有用户放在一个大表中?