本人虽然是做后台开发为主,但是因为接手了前台的web应用操作,对于一个前台的门外汉来说,我一直担心的是数据库读取效率的问题。

所以本人在涉及逻辑层的相关问题时,大致做了一些简单的设计来规范代码。

1.简单的语句尽量用web框架提供的增删改查,例如我使用django框架时候就尽量用他的object来操作而不用python带的execute来做。

2.尽量让数据库语句在存储过程或者视图当中完成,不要让太多的逻辑留在语言层处理。毕竟我觉得我的逻辑性能暂时没有sql的性能好。

3.查询以视图为主,增删改以存储过程为主。

由于本人连初级DBA也不是,在设计的过程中大量的使用存储过程。因为存储过程就名字而言,和函数的区别就是不一定有返回值,这样能够让我更加的灵活去使用。再者其实在我这种轻量级的应用来说很多情况下视图和存储过程的使用是一样的。对于我这种初哥来说,先全部用存储过程后,看那些是复用的sql代码,还有那些是纯数据库操作的代码可以在后续设计视图的时候重新设计一遍。

在一些前辈说,其实假如不是对外或者轻量级的web使用存储过程和视图是差不多的。在兼职做了DB后,我发现其中一个业务使用了函数,它可以被select出来,这一点比存储过程来说是有优势的。不过他的限制就很多。

随着慢慢我的设计深入,就总结出了初步的几点:存储过程多用于增删查改,视图多用于做查询,函数多用于做计算然后返回值。

同时我也颠覆了点以前的认识,我一直以为数据库入参多不用类似列表和字典之类的做入参是一种特殊的设计模式,但是后来我做列表查询的时候,想declare一个列表的类型,不知道是我没找到的原因,我发现原来sql好像没有列表的类型。

引出上面的思考是我在做多表查询的时候引发的问题。我在使用alm的时候发现alm有一些表使用和组合表,有些使用了三个范式,我特定研究和询问了下,发现其实两者之间其实差别不大。虽然我设计的过程中,还是会遵循三个范式为主,主要以2个有主键的表,加一个关系表来制作。其实这点虽然我以前与数据库组交流和自己使用中大致知道这事解决效率问题,这就如同我做web开发的时候传值尽量传id不传值去后台做处理一样,虽然我能够告诉人为什么这么做,但是没有很强的说服力。

使用数据库最多的时候就是和web交互的时候,其实大多web临时生成的html是通过我ajax从数据库中读来的,假如算法和界面体验有些需求的话,会导致多选框里面的数据库值和id并不是完全对应,也许是我做web和db的功力不够,这也是我后面需要加强体会的。

兼职做了DB设计和维护的体会(存储过程,视图,函数,范式)相关推荐

  1. springboot大学生兼职网站开发与设计毕业设计源码311734

    springboot大学生兼职网站 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻 ...

  2. Berkeley DB设计经验

    很久没有做翻译这种苦力活了,这是断断续续折腾了好久周的结果 - http://www.ituring.com.cn/article/details/8111 原文链接:http://www.aosab ...

  3. (附源码)springboot大学生兼职网站开发与设计 毕业设计311734

    springboot大学生兼职网站 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻 ...

  4. SSM框架基于h5的校园兼职招聘系统的设计与实现源码+论文三稿+ppt+查重报告(包远程安装,已降重)

    项目名称 SSM框架基于h5的校园兼职招聘系统的设计与实现源码 视频效果 SSM框架基于h5的校园兼职招聘系统的设计与实现源码_哔哩哔哩_bilibili 项目地址 SSM框架基于h5的校园兼职招聘系 ...

  5. [转]Berkeley DB设计经验

    很久没有做翻译这种苦力活了,这是断断续续折腾了好久周的结果 - http://www.ituring.com.cn/article/details/8111 原文链接:http://www.aosab ...

  6. PgSQL · 应用案例 · 经营、销售分析系统DB设计之共享充电宝

    背景 共享充电宝.共享单车.共享雨伞,共享女朋友^|^,共享汽车,... 共享经济最近几年发展确实非常迅猛. 共享必定涉及被共享对象的管理.会员的管理等,实际上也属于一种物联网系统. 本文以共享充电宝 ...

  7. 针对业务系统的开发,如何做需求分析和设计1

    今天,我通过一个积分兑换系统的开发实战,一方面给你展示一个业务系统从需求分析到上线维护的整个开发套路,让你能举一反三地应用到所有其他系统的开发中,另一方面也给你展示在看似没有技术含量的业务开发中,实际 ...

  8. 计算机毕业设计、计算机课程设计怎么做?计算机设计1900套来帮你!

    计算机毕业设计.计算机课程设计怎么做?计算机设计1900套来帮你! 人生做什么事都有套路,大学毕业设计.课程设计通常比较简单,大多数都是找个项目做参考,有的人随便抄一抄糊弄一下,只要查重,格式别出错就 ...

  9. 王思聪吃翔项目 - 共享充电宝 - 经营、销售分析系统DB设计实践

    标签 PostgreSQL , 物联网.共享充电宝 , 经营分析系统 , 多表关联 , 明细补齐 , 取缔关联 , ltree树类型 , 并行计算 , PostgreSQL 10黑科技 , 销售管理 ...

最新文章

  1. 为什么DL模型能够正确分类?SCOUTER(ICCV21')从“正”“反”方面说服你。
  2. spring 学习总结
  3. 82.开始→运行→输入的命令集锦
  4. Problem 2. number题解
  5. 关于python的保留字_Python中的保留字
  6. Struts2与传统模式的对比,核心控制器从servlet变成了过滤器,!!
  7. Object_C与JavaScript交互使用总结
  8. 75.58 亿美元成交!美国最大规模 5G 毫米波频谱拍卖
  9. VS2012下基于Glut 矩阵变换示例程序:
  10. html表格基础及案例示图代码。
  11. [SUCTF 2018]GetShell
  12. 绿城离职员工万言书全文
  13. android手机闹钟程序,Android手机闹钟用法实例
  14. 简易版 水下超声波通信
  15. 如何展示实时音视频通话时正在说话用户的音浪
  16. 微信小程序上传图片到阿里云oss方法
  17. linux获取本地ip
  18. mysql count的用法_155、MySQL入门(五):SUM and COUNT用法
  19. 历年全国计算机技术与软件专业资格(水平)考试真题及答案汇总
  20. 深圳将在2015年推广家庭服务机器人

热门文章

  1. 外链应该这样发,网站排名速度提升十陪
  2. 解读Scorm(0):标准
  3. 较为周全的Asp.net提交验证方案(Session版)
  4. mongoDB 3.0以前版本 - 入门指南、示例
  5. [转]nodejs npm常用命令
  6. 猫都能学会的Unity3D Shader入门指南(一)
  7. 读《Computer Systems: A Programmer’s Perspective》
  8. TranslateAnimation类:位置变化动画类
  9. 悲观锁 HibernateTest.java
  10. Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm调优