问题归纳如下:
1、现有N张表,其中有直接关联的,有间接关联的;(a~z 编号 代表表缩写 )
一、类型表
a、Group表( ID, Name, ParentID); ParentID也就是 Group表的 ID;
(Group可以属于Group) //分组表
b、BigClass( ID, Name, GroupID ); GroupID就是 Group表的 ID;
( BigClass 属于Group ) //大类表
c、SmallClass( ID, Name, BigClassID); BigClassID就是BigClass表的 ID );
( SmallClass 属于 BigClass );//小类表
二、数据表
d、Device( ID, Name, P1,P2,P3 , SmallClassID );
SmallClassID-->SmallClass.ID //设备表
e、SubDev1( ID, Name, SD1, DeviceID );
DeviceID --> Device.ID; //子设备1 表
f、SubDev2( ID, Name, SD2, DeviceID );
DeviceID --> Device.ID; //子设备2 表
依赖关系
(f,e)-----> d -----> c ------> b -----> a [a-->a];
三、权限表
g、PS_Type( ID, Name ); //权限类型
h、PS ( ID, Name, PST_ID );
PST_ID ---> PS_Type.ID; //具体权限表
j、Usr( ID, Name, PWD ); //用户
k、UsrRole( ID, Name ); //角色
m、UsrToRole( ID, UsrID, RoleID );
UsrID---> Usr.ID, RoleID ---> UsrRole.ID;
//用户属于角色表,用户 与 角色是 多对多的关于
备注:
1、权限类型 示例数据
PS_Type ( ID, Name )
g ( 0, '全局权限' ); --->即 对所有组,大小类型,设备,子设备统一佣有的权限
g ( 1, '分组权限' ); --->即可以控制 表 a,就是 Group这个表的内容
g ( 2, '设备权限' ); --->即可以控制 表 d,就是 Device这个表的内容
g ( 3, '子设备1权限'); --->> e, SubDev1
g ( 4, '子设备2权限'); --->> f, SubDev1
2、权限示例数据
PS( ID, Name, PST_ID );
h ( 1 , '添加', 1 ) ; //1=分组 添加权限
h ( 2 , '删除', 1 ) ; //1=分组 删除权限
h ( 3 , '修改', 1 ) ; //1=分组 修改权限
h ( 4 , '防问', 2 ) ; //2=设备 防问权限
h ( 4 , '删除', 2 ) ; //2=设备 删除权限
h ( 4 , '修改', 2 ) ; //2=设备 修改权限
...
...
类似以上的权限,还有包括对 e(SubDev1), f(SubDev2),
b(BigClass) c(SmallClass) 的权限的一些数据
提问:
1、怎样设计出来权限对应表?
要求:
a、权限可以是 用户或角色 到 a(分组) 或 b(大类型) 或
c(小类型) 或 d(设备) e(子设备1) f(子设备2)
提示: 其中 a,b,c,d,e,f 佣有相同的权限,也存在不同的权限;
比如:可见 权限,对所有对象都具有的权限,而 X功能
控制 只有 子设备1 才具有的权限
Y功能 控制 只有 子设备2 才具有的权限
b、权限细分程度,可以具体到 子设备1/子设备2 的具体的某个功能上;
比如:用户A 有对 A分组下面的 A大类 下面的 A小类 下面的
A设备 下面的 A子设备1 佣有 X功能 的控制权限
用户B 没有对 A分组下面的 A大类 下面的 A小类 下面的
A设备 下面的 A子设备1 佣有 X功能 的控制权限
c、权限设置方便性
举例说明:
A分组,下面多个大类型,同时大类型下面又有很多小类型,
小类型又包括N多设备,子设备等
但是 因为a,b,c,e,d,f权限并不统一,
所以设置权限时,(A分组只具有 可见 这个权限 ),只能设置
A分组的可见 权限,虽然它下面所有
对象都具有可见属性,而对于A分组下面的设备的权限,
要一个一个的设置相当麻烦;
因为一个分组 包含的相关设备相当多;不可能一个设备
一个设备的设置权限;
所以:在设置分组时,可以同时设置 设备的权限, 子设备的权限;
如: 分组 具有 可见 权限属性, 子设备1 具有
X功能控制 权限属性;
子设备2 具有 Y功能控制 权限属性;
现有记录;
A分组 , A子设备1,A子设备2; A子设备1和A设备2
是属于A分组下面的设备(间接属于,中间还夹着大,小类型)
当 对A分组 设置权限时,除了可设置 可见,
还同时可以设置 X功能控制,Y功能控制;
用户只要对A分组 有 X功能控制权限 ,那么
自动佣有了A子设备1的 X功能控制权限
(虽然,对分组来说并没有 X功能这个权限,
但是它可以代理设置下面的对象权限)
2、怎么体现出权限的继承关系?
要求: a、用户 属于 角色 时,自动佣有角色的权限
b、角色 属于 角色 时,自动佣有父角色的权限
c、当 角色 或者 用户 对 分组(Group) 有某些 权限 时
那么他 同时 佣对这个分组下面所有 大类(BigClass),
小类(SmallClass),设备,子设备
都佣有相同的权限
d、同时考虑 子设备 或设备 或 大小类 随时可以不使用继承权限;
比如: A子设备1,B设备1 属于 T设备; 同时继承了 T设备的权限
现在可以去掉A子设备1 的继承权限,单独为 A子设备1 设置不同
于 T设备的权限;
用过WINDOWS 用户权限的人都应该清楚吧,
或者 WINDOWS NTFS 文件夹权限, 文件可以不继承文件夹权限,单独设置权限
1、现有N张表,其中有直接关联的,有间接关联的;(a~z 编号 代表表缩写 )
一、类型表
a、Group表( ID, Name, ParentID); ParentID也就是 Group表的 ID;
(Group可以属于Group) //分组表
b、BigClass( ID, Name, GroupID ); GroupID就是 Group表的 ID;
( BigClass 属于Group ) //大类表
c、SmallClass( ID, Name, BigClassID); BigClassID就是BigClass表的 ID );
( SmallClass 属于 BigClass );//小类表
二、数据表
d、Device( ID, Name, P1,P2,P3 , SmallClassID );
SmallClassID-->SmallClass.ID //设备表
e、SubDev1( ID, Name, SD1, DeviceID );
DeviceID --> Device.ID; //子设备1 表
f、SubDev2( ID, Name, SD2, DeviceID );
DeviceID --> Device.ID; //子设备2 表
依赖关系
(f,e)-----> d -----> c ------> b -----> a [a-->a];
三、权限表
g、PS_Type( ID, Name ); //权限类型
h、PS ( ID, Name, PST_ID );
PST_ID ---> PS_Type.ID; //具体权限表
j、Usr( ID, Name, PWD ); //用户
k、UsrRole( ID, Name ); //角色
m、UsrToRole( ID, UsrID, RoleID );
UsrID---> Usr.ID, RoleID ---> UsrRole.ID;
//用户属于角色表,用户 与 角色是 多对多的关于
备注:
1、权限类型 示例数据
PS_Type ( ID, Name )
g ( 0, '全局权限' ); --->即 对所有组,大小类型,设备,子设备统一佣有的权限
g ( 1, '分组权限' ); --->即可以控制 表 a,就是 Group这个表的内容
g ( 2, '设备权限' ); --->即可以控制 表 d,就是 Device这个表的内容
g ( 3, '子设备1权限'); --->> e, SubDev1
g ( 4, '子设备2权限'); --->> f, SubDev1
2、权限示例数据
PS( ID, Name, PST_ID );
h ( 1 , '添加', 1 ) ; //1=分组 添加权限
h ( 2 , '删除', 1 ) ; //1=分组 删除权限
h ( 3 , '修改', 1 ) ; //1=分组 修改权限
h ( 4 , '防问', 2 ) ; //2=设备 防问权限
h ( 4 , '删除', 2 ) ; //2=设备 删除权限
h ( 4 , '修改', 2 ) ; //2=设备 修改权限
...
...
类似以上的权限,还有包括对 e(SubDev1), f(SubDev2),
b(BigClass) c(SmallClass) 的权限的一些数据
提问:
1、怎样设计出来权限对应表?
要求:
a、权限可以是 用户或角色 到 a(分组) 或 b(大类型) 或
c(小类型) 或 d(设备) e(子设备1) f(子设备2)
提示: 其中 a,b,c,d,e,f 佣有相同的权限,也存在不同的权限;
比如:可见 权限,对所有对象都具有的权限,而 X功能
控制 只有 子设备1 才具有的权限
Y功能 控制 只有 子设备2 才具有的权限
b、权限细分程度,可以具体到 子设备1/子设备2 的具体的某个功能上;
比如:用户A 有对 A分组下面的 A大类 下面的 A小类 下面的
A设备 下面的 A子设备1 佣有 X功能 的控制权限
用户B 没有对 A分组下面的 A大类 下面的 A小类 下面的
A设备 下面的 A子设备1 佣有 X功能 的控制权限
c、权限设置方便性
举例说明:
A分组,下面多个大类型,同时大类型下面又有很多小类型,
小类型又包括N多设备,子设备等
但是 因为a,b,c,e,d,f权限并不统一,
所以设置权限时,(A分组只具有 可见 这个权限 ),只能设置
A分组的可见 权限,虽然它下面所有
对象都具有可见属性,而对于A分组下面的设备的权限,
要一个一个的设置相当麻烦;
因为一个分组 包含的相关设备相当多;不可能一个设备
一个设备的设置权限;
所以:在设置分组时,可以同时设置 设备的权限, 子设备的权限;
如: 分组 具有 可见 权限属性, 子设备1 具有
X功能控制 权限属性;
子设备2 具有 Y功能控制 权限属性;
现有记录;
A分组 , A子设备1,A子设备2; A子设备1和A设备2
是属于A分组下面的设备(间接属于,中间还夹着大,小类型)
当 对A分组 设置权限时,除了可设置 可见,
还同时可以设置 X功能控制,Y功能控制;
用户只要对A分组 有 X功能控制权限 ,那么
自动佣有了A子设备1的 X功能控制权限
(虽然,对分组来说并没有 X功能这个权限,
但是它可以代理设置下面的对象权限)
2、怎么体现出权限的继承关系?
要求: a、用户 属于 角色 时,自动佣有角色的权限
b、角色 属于 角色 时,自动佣有父角色的权限
c、当 角色 或者 用户 对 分组(Group) 有某些 权限 时
那么他 同时 佣对这个分组下面所有 大类(BigClass),
小类(SmallClass),设备,子设备
都佣有相同的权限
d、同时考虑 子设备 或设备 或 大小类 随时可以不使用继承权限;
比如: A子设备1,B设备1 属于 T设备; 同时继承了 T设备的权限
现在可以去掉A子设备1 的继承权限,单独为 A子设备1 设置不同
于 T设备的权限;
用过WINDOWS 用户权限的人都应该清楚吧,
或者 WINDOWS NTFS 文件夹权限, 文件可以不继承文件夹权限,单独设置权限
关键的部分拿到这里来请教高手,这样效率可能要高很多,另外,建议把大问题拆分成若干个小问题,
(不要试着挑战大伙的耐性,你写那么长谁有时间一点点帮你分析啊?)
难得看到一个100分的帖子
更难得回覆的人不多,
点开一看好长头晕
感觉就是权限归属之类的设计,
我想这个应该不是很复杂吧?!
你可以在网上找找资料先看看,先理出点头绪,实在不会了再来问,