参考了网上一个权限模块的数据库设计
5张表
组表G 用户表U 用户和组的映射表GU 权限表A 用户和权限的映射表 UA
映射表的主键同时又是依赖于3个基本表的外键因此在做删除一个组的操作时,就要先清理GU表
如果GU表中某些用户记录删除后,又需要清理U表
而清理U表,还需要先清理UA表如此复杂的清理操作,是不是数据库的设计存在很大的缺陷?
能不能有改进的方法?

解决方案 »

  1.   

    没你想的那么复杂
    删除一个组的操作时,只要清理GU表,其他表不需要操作,因为删除GU时,只是用户和组的关系清理,不需要清理用户,LZ对主键和外键之间的关联要再思考一下。
    另外,用外键的话,不要忘记在外键上建索引,否则容易死锁
      

  2.   


    只清理GU表,那么什么情况去清理G表啊?
    这样会不会一旦G表中添加了数据,就永远得不到删除了?
      

  3.   

    只清理GU表,那么什么情况去清理G表啊? 
    这样会不会一旦G表中添加了数据,就永远得不到删除了?
    >>当不再需要某些组时,就可以删除了呀!
      

  4.   

    我的画面只有一个地方进行删除组操作 
    所以我现在删除组,就是不需要该组了。 
    所以就要开始说的那四步删除的操作了。
    >>删除一个组的操作时,只要清理G表和GU表,其他表不需要操作,LZ没理解我在5楼说的意思
      

  5.   

      支持对象级别的权限,支持权限的相加,权限的相减,和权限的上下级关系。这些功能就需要更深入的设计模型了.這個我也實現了,轉化為1,0再暈行 and /or操作就可以,上下級權限要加field definition