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