zoukankan      html  css  js  c++  java
  • asp.net 2.0中,用户管理相关表的概述

    先看看各个表之间的关系图:







    下面每一个表的作用进行描述(引用自:asp.net 2.0 用户管理功能结构):

    用户管理的三个组件是相互关联的,而且在数据设计上也是做了非常严格的数据约束。一个数据库可以存放多个系统的用户,以便用户的统一管理,每个用户都有一个ApplicationId字段来标识它是属于哪个系统的用户。

    aspnet_Application :用来保存系统名的,每一个不同的系统名都会生成一个唯一的ID,这个ID是与其它关联关系的外键。

    aspnet_Users :用户表,但是它只保存了用户ID基本不会变的信息,并且会有一个Uniqueidentifier类型的字段UserId来作为每个用户的唯一标识(并且是主键),以方便与其它表的关联。值得注意的是还有一个ApplicationId字段,通过这个字段与aspnet_Application进行关联,以此来将区分用户是属于哪个系统的。由于UserName字段本身并不是主键,所以它是可以有重复值的,但不是说一个系统允许存在相同的用户名。正是ApplicationId字段来标识相同的用户名是属于不同的系统的。ApplicationId字段的作用就在于此,所以你可以看到很多表中都有这个字段的存在。

    aspnet_Profile :存储着用户的一些个性化信息。由于个性化信息的字段是可变的,所以它采用了一种比较灵活的存储方式,类似于:property1:value1;property2:value2的形式(具体分隔符可能有误)来存储多个可变的属性值。再通过解析,分解出正确属性和值。

    aspnet_Membership :保存着用户的一些可变(不可变)的基本信息。在aspnet_Membership表存储着一些用户的公共属性信息。根本不同的需求的,我们可能还需要其它的一些自定义字段,在这种情况下最好不要直接修改这个表,而是应该新建一个表,或利用Profile功能来实现。 aspnet_Profile :存储着用户的一些个性化信息。由于个性化信息的字段是可变的,所以它采用了一种比较灵活的存储方式,类似于:property1:value1;property2:value2的形式(具体分隔符可能有误)来存储多个可变的属性值。再通过解析,分解出正确属性和值。

    aspnet_Roles :存储系统的所以有角色,同样用ApplicationId来标识该角色属于哪个系统所有的。

    aspnet_UsersInRoles :多对多的关系表,存储哪些用户属于哪些角色。

    Aspnet_Paths,aspnet_PersonalizationPerUser,aspnet_PersonalizationAllUsers:这几个表组合起来存储个性化页面设置,配合WebPart使用。

    另外两个表与用户管理没有直接关系的:aspnet_WebEvent_Events,用于记录系统在运行过程中去现的一些异常信息,需配合Health monitor使用;aspnet_SchemaVersions用于记录当前的框架版本信息,默认已经有记录了。



    另外,需要说明的是:管理访问规则

    管理访问规则中定义的【角色】与【程序目录】之间的访问规则,是在web.config文件中定义的,如:
    <system.web>
       <authorization>
             <allow roles="测试" />
             <deny users="?" />
             <allow roles="程序员" />
             <allow roles="产品经理" />
        </authorization>
       ...
    <system.web>

  • 相关阅读:
    触发器
    新登录用户的次日成功的留存率
    获取薪水第二多的
    找到薪水比经理高的员工
    成绩排名
    exists 和 in
    sum+case 计数
    前N个员工的salary累计和
    员工的薪水按照salary进行按照1N的排名,相同salary并列
    洛谷2678 跳石头
  • 原文地址:https://www.cnblogs.com/scdsun/p/572623.html
Copyright © 2011-2022 走看看