关于数据库表字段的数据权限设计
吐槽:刚在同事的帮忙下,把maven工程成功导入到eclipse,期间遇到的最大问题就是安装eclipse插件,花费了其中大部分的时间
现在做的研发产品,遇到的一个新的需求是“控制外部系统对于表中字段的访问权限”,其实说白了,就是“对于CRUD操作,操作的字段根据字段权限表来做的”。但是,我觉得真正要做到对于数据库表字段的权限设计,面临一下几个问题:
问题一:对于数据库表中的非空字段和非空字段在做字段权限设计的时候要不要纳入进去,如果纳入进去的话,该怎么进行设计???
在举例子之前,我先把设计的表结构开放出来供大家讨论,以下是表结构
其中:
ID:主键
SYSTEM_ID:系统id
SERVICE_ID:服务id
FIELD_NAME:字段名
ISNULL:是否非空
OPERATION:数据库操作
这就是那个数据库表字段权限控制表,针对每一个操作(CRUD),他们的所操作的数据库表字段是不同的。如果在某一个操作里,对于某一个字段该系统是没有操作权限的,但是在数据库里又是非空字段,在做create操作的时候就会有问题
问题二:对于多个系统的操作来说,也就是多个SYSTEM_ID,我们在进行编码设计的时候,会有很多不同的数据库操作,对表字段的访问权限也是不同的,怎么才能设计一个通用的功能实现,做到为多个系统提供统一的一个表字段权限控制,到目前为止,我还没有一个比较通用的设计实现
另一个说说我自己的针对当前项目的也就是demo工程的一个实现,可以把这个系统可以操作的字段,放到一个List里面,然后传到DAO里,然后去动态拼接SQL语句。但是这也存在着一个问题,如果一个表的字段很多,我需要把该表的所有字段都要在SQL语句中罗列出来,而且 对于不同的字段类型,我们还需要在SQL语句里进行必要的类型转换,例如:Date类型。所以,一个通用的设计实现比较重要。