苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V1.3) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper万能框架(V2.3-含.netcore) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 8942|回复: 7

[教程] 【分布式系统框架教程】-用户管理权限关系表设计

[复制链接]
发表于 2015-1-20 17:29:43 | 显示全部楼层 |阅读模式
   【分布式系统框架教程】-用户管理权限关系表设计

导读部分



1.【分布式系统框架】教程目录帖http://www.sufeinet.com/thread-10624-1-1.html

教程部分


    分布式马上就要升级了,请大家多多捧场。
    下面我来说说本次分布式升级的功能,本次主要是新增了用户权限管理功能。下面我来介绍一下关于权限管理的数据表的设计。由于时间等各方面的原因,本次的权限可能并不完善,或者存在一些问题,在最后的版本中我们会步步完善和更新的。
    关于权限,就是后台管理的权限,通常就是用户表、角色表、权限表等,本次分布式设计的表也很简单,在分布式框架中,我们的model层里面的实体类和数据表之间都是一一对应的关系,下面我就贴出model层对应权限的几个类吧。
用户:这里还是之前的登陆用户类
[C#] 纯文本查看 复制代码
/// <summary>
    /// 登录用户
    /// </summary>
    public class LoginUserInfo : ModelBase
    {
        /// <summary>
        /// 用户ID
        /// </summary>
        public string ID { get; set; }     
        /// <summary>
        /// 登录用户名
        /// </summary>
        public string UserName { get; set; }
        /// <summary>
        /// 登录密码
        /// </summary>
        public string UserPwd { get; set; }
        /// <summary>
        /// 用户状态
        /// </summary>
        public UserStatus UserStatus { get; set; }
        /// <summary>
        /// 注册IP
        /// </summary>
        public string LoginIp { get; set; }
        /// <summary>
        /// 登录类型
        /// </summary>
        public LoginType LoginType { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string RegisterBy { get; set; }
    }

角色:
[C#] 纯文本查看 复制代码
//角色
    public class RoleInfo
    {
        /// <summary>
        /// ID
        /// </summary>                
        public int ID { get; set; }
        /// <summary>
        /// 角色名称
        /// </summary>                
        public string RoleName { get; set; }

    }

有了用户和角色,当然需要一个表来存它们之间的关系,用户和角色是一种多对多的关系,也就是说一个用户可以拥有多个角色,而一个角色也可以分配给多个用户。
用户角色关系:
[C#] 纯文本查看 复制代码
 //UserRole
    public class UserRoleInfo
    {
        /// <summary>
        /// 用户ID
        /// </summary>                
        public string UserID { get; set; }
        /// <summary>
        /// 角色ID
        /// </summary>                
        public int RoleID { get; set; }

    }

功能(也就是权限)
[C#] 纯文本查看 复制代码
 //功能
    public class FunctionInfo
    {
        /// <summary>
        /// ID
        /// </summary>                
        public int ID { get; set; }
        /// <summary>
        /// 功能名称
        /// </summary>                
        public string FunctionName { get; set; }
        /// <summary>
        /// 是否启用
        /// </summary>                
        public bool IsEnable { get; set; }
        /// <summary>
        /// 父类id
        /// </summary>                
        public int ParentId { get; set; }

    }

当然了,角色对应的就是权限了,一个角色可以分配权限,所以就需要一张表来存角色权限之间的关系了。这个角色权限关系表和用户角色关系表一样,都很简单,只是存了对应的id而已。
角色权限关系(也可以说是角色功能关系)
[C#] 纯文本查看 复制代码
//RoleFunction
    public class RoleFunctionInfo
    {
        /// <summary>
        /// 角色ID
        /// </summary>                
        public int RoleID { get; set; }
        /// <summary>
        /// 功能ID
        /// </summary>                
        public int FunctionID { get; set; }

    }

发表于 2015-1-20 21:14:12 | 显示全部楼层
回复

使用道具 举报

发表于 2015-1-20 21:28:32 | 显示全部楼层
发表于 2015-1-21 00:14:33 | 显示全部楼层
发表于 2015-4-9 10:38:22 | 显示全部楼层
我想说:为什么不在LoginUserInfo 加个RoleID,在RoleInfo里面加个FunctionInfoID,三个表能解决的问题,为什么要扯出5个表?这样做主外键约束如何控制?
 楼主| 发表于 2015-4-9 11:08:16 | 显示全部楼层
912288184 发表于 2015-4-9 10:38
我想说:为什么不在LoginUserInfo 加个RoleID,在RoleInfo里面加个FunctionInfoID,三个表能解决的问题,为 ...

如果结合例子你看懂了的话 你就不会问这样的问题了  当然你的想法也对  但是这种方式是有一定的好处的,这样更便于维护和扩展,当时这样建表 是为了后来版本更新添加功能做一些铺垫的,
发表于 2016-9-24 00:48:43 | 显示全部楼层
  请问如果同时需要多个表添加数据或者修改数据是怎么做。让数据保证完整性和一致性
 楼主| 发表于 2016-9-26 08:52:14 | 显示全部楼层
xuefeng 发表于 2016-9-24 00:48
请问如果同时需要多个表添加数据或者修改数据是怎么做。让数据保证完整性和一致性

如果是不同的数据库中的表,建议在程序里执行添加或者修改就可以了,代码和平常一样
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1)

GMT+8, 2019-9-17 11:11

© 2017-2018

快速回复 返回顶部 返回列表