最近需要遇到文件权限设置的问题
一个公司都200个人
一个文件 可以有3种模式 全部共享 指定人员共享 不共享
一个文件对应的一个员工的权限有3种, 读取,修改,删除
文件的共享模式和权限都需要在数据库里记录
这样表应该怎么设计 才避免数据量过多
比较合理的是
create table FilePermission ( FileId int primary key, OwnerId int not null, ReadMode bit null, EditMode bit null, DeleteMode bit null);
这个表记录文件的创建者(或者叫拥有者,如果你的系统有这个概念的话),以及各种权限共享模式(Mode =1代表所有人都可以执行此操作(也就是完全共享--不知道你的意思是不是这样), 0代表所有人都不能执行对应的操作--不共享, null代表部分人可以执行,具体情况要看另一个表里的数据, 当然你把这三个列改成not null的int也行).
create table FileAccess (FileId int not null, UserId int not null, PermissionType int not null);
这个表记录部分共享的具体情况,每条记录对应一个人对一个文件拥有一种权限. PermissionType =1代表Read, 2代表 Edit, 3代表 Delete.
这样数据量比较小,但是程序在更新数值时要考虑得比较周详,因为数据分在了两个表里,可能引起冲突(比如前一个表说所有人都不能删除一个文件,但是后一个表里又有几个用户能删除它).
学习....