参考了网上一个权限模块的数据库设计
5张表
组表G 用户表U 用户和组的映射表GU 权限表A 用户和权限的映射表 UA
映射表的主键同时又是依赖于3个基本表的外键因此在做删除一个组的操作时,就要先清理GU表
如果GU表中某些用户记录删除后,又需要清理U表
而清理U表,还需要先清理UA表如此复杂的清理操作,是不是数据库的设计存在很大的缺陷?
能不能有改进的方法?
5张表
组表G 用户表U 用户和组的映射表GU 权限表A 用户和权限的映射表 UA
映射表的主键同时又是依赖于3个基本表的外键因此在做删除一个组的操作时,就要先清理GU表
如果GU表中某些用户记录删除后,又需要清理U表
而清理U表,还需要先清理UA表如此复杂的清理操作,是不是数据库的设计存在很大的缺陷?
能不能有改进的方法?
删除一个组的操作时,只要清理GU表,其他表不需要操作,因为删除GU时,只是用户和组的关系清理,不需要清理用户,LZ对主键和外键之间的关联要再思考一下。
另外,用外键的话,不要忘记在外键上建索引,否则容易死锁
只清理GU表,那么什么情况去清理G表啊?
这样会不会一旦G表中添加了数据,就永远得不到删除了?
这样会不会一旦G表中添加了数据,就永远得不到删除了?
>>当不再需要某些组时,就可以删除了呀!
所以我现在删除组,就是不需要该组了。
所以就要开始说的那四步删除的操作了。
>>删除一个组的操作时,只要清理G表和GU表,其他表不需要操作,LZ没理解我在5楼说的意思