多对多关系数据库表建模成这样有何优缺点

开源_节流 发布于 2015/05/06 14:58
阅读 743
收藏 0
比如在rbac这样的权限管理系统中,用户与角色是多对多的关系。传统的建模方式是分别建用户表、角色表及关联表用户角色表。但实际应用中,往往发现很多搞法是只建两个表即用户表和用户角色表。在用户角色表中再建一个用户名和角色名的唯一索引。这样做有个想得到的好处是查询减少了表的连接,对提高性能有一定的帮助。但缺点呢?
加载中
0
jokerpu
jokerpu
貌似少了一个资源的管理,角色只是资源集合抽象的一个key,个人觉得,重要的是资源和用户的关系,角色只是便于资源管理的中间key,所以貌似模型没有成立啊
0
开源_节流
这里不是讨论一个完整的rbac,只是比较表建模的两种方式的优缺点。传统的做法是在角色表和资源表中还有个角色资源中间表。但实际应用中,很多情况下是只建一个角色资源表。再在该表中建一个角色名、资源名的唯一索引。
0
Maxint64
Maxint64
如果是InnoDB表,唯一性索引也是b-tree实现的,而不是hash,数据量大的情况下多列的唯一性检查可能会影响写入性能。
返回顶部
顶部