博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动化平台中的ORM和权限设计
阅读量:2446 次
发布时间:2019-05-10

本文共 928 字,大约阅读时间需要 3 分钟。

最近在梳理平台里的一些基础架构和设计,力争把平台里的通用的部分能够抽象出来,迭代复用。

在数据库设计上我秉承了从简的原则,如果能用一个表搞定,我绝对不会把它拆分成多个表。对于概览信息,其实设计上是需要考虑冗余信息的,哪怕看起来不是那么的精美。但是用起来就是直接。而我绝不会只设计一个表,如果需要扩展的,毫无疑问,我会拆分出另外的表来。对于原来的结构设计几乎没有什么影响。

第二个是对于Django的ORM,我最近也实现了一些功能和页面,在实践中我发现,使用原生的ORM来显式声明大量的关联关系其实会引入大量的外键设计,这对于数据库设计来说,反而是略显丑陋的。这部分的内容其实完全可以通过程序端的逻辑来控制。

当然在这个基础上,一个很明显的问题就是如何理解ORM的使用边界,我的使用实践更倾向于是使用原生的model设计,但是外键关联和多表关联,我都是通过逻辑层来统一控制,具体怎么控制,我是抽象出一个DAO层,把这部分逻辑放到这里面来,这样一来,我要定制多对多的关系,指定n多个辅助字段都是手到擒来,这样一来就会从已有的桎梏中解放出来。

而在这个基础上,我们使用ORM的一个优点就是数据源的透明,但是需要理解的是,我们说的透明,其实不代表数据迁移,所以你引入了一些定制的其他数据库的SQL语句,如果语句符合SQL规范,其实是没有什么问题的,除非是数据库特有的语句。这些如果都抽象到一个DAO层中,这个事情其实就好做多了。

对于权限设计,我是这样考虑的。一个最粗粒度的权限就是基于菜单级别,就是不同的用户看到的菜单应该不同。这是最基本的要求。

在这个基础上进行扩展,我们可以定制不同的角色组,比如MySQL组,Redis组,不同的组看到的同一个菜单中的数据也可以不同。

同时,对于数据的增删改查,我们可以通过菜单级别来控制,如果没有修改权限,用户就不应该看到这个菜单。

efe5e1b8b21b4aaf8735f222f483035b.jpeg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-2152347/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-2152347/

你可能感兴趣的文章
notebooks_.NET Core与Jupyter Notebooks预览1
查看>>
pvs-stdio ue4_华为云:如今PVS-Studio多云
查看>>
vc编程查找计算机运行记录_如何查找计算机的正常运行时间和安装日期
查看>>
steam无法显示成人内容_如何在Steam上查看仅限成人游戏
查看>>
轻松将图像上传到Photobucket
查看>>
如何在iPhone或iPad上启用USB受限模式(适用于iOS 11.4.1)
查看>>
注意:浏览器崩溃的技术支持弹出窗口又回来了
查看>>
如何在Ubuntu 11.10中安装Classic Gnome桌面
查看>>
亚马逊echo中国使用_如何阻止您的Amazon Echo收听
查看>>
linkedin 分享_如何永远阻止LinkedIn的烦人电子邮件
查看>>
ipad和iphone适配_如何在iPhone和iPad上将链接,照片和媒体快速添加到Apple Notes
查看>>
开源星空照片_如何拍摄星空的好照片
查看>>
usb延长线线序_我应该使用哪种延长线?
查看>>
亚马逊fire充不上电_因此,您只是拥有了Amazon Fire Tablet。 怎么办?
查看>>
如何安装和设置Kuna家用安全摄像机
查看>>
加密机是如何工作的_什么是加密,它如何工作?
查看>>
如何使用Google Assistant控制Xbox One
查看>>
图标缓存 vista_在Windows Vista中将Internet Explorer 7图标添加到桌面
查看>>
iexplore.exe_如何一次杀死所有iexplore.exe进程?
查看>>
discord linux_如何启用和自定义Discord的游戏内叠加
查看>>