菜鸟也能飞:SQL数据库实战专业教程(三)

简介:

七、详细设计

  详细设计还得从数据库开始。作为专业菜鸟,我们要把所有的SQL语句都放在存储过程当中,不要放在程序里。这样做的好处是:容易修改、维护,执行速度快、减少数据传输量。存储过程可以简单的理解为在SQL服务器上创建小函数,它们有名字、参数,通过调用这些小函数,我们可以完成对表的增、删、查、改操作,相当于把SQL语句放在了服务器上,并且是经过编译的,执行速度快。在程序中,我们不必再写复杂的SQL语句,直接写存储过程名称就可以了。

  具体如何使用存储过程,可以参考这篇博文:http://www.51testing.com/html/60/n-814760.html

  一定要仔细研究上边那篇文章,因为这是数据库使用的经典例子,把他搞懂了使用数据就没什么问题了,我就偷个懒,不在重复写啦。

  如果遇到一些问题,或许这篇文章会帮你:http://www.51testing.com/html/59/n-814759.html

  另外,可以看出,本教程的例子,班级表依赖年级表,学生表依赖班级表,所以在删除记录时,必须级联删除,级联删除可以在程序中完成,但我还是比较喜欢放在SQL触发器中。触发器的使用方法和存储过程大同小异,在这就不赘述了,可以google。

  详细设计还是要用到UML图,这回用的一般是时序图和流程图,其他的虽然重要,但是比较少用,具体的还是google。

  很遗憾的告诉大家,教程到此就结束了,细节上远远没有结束,存储过程具体代码、各层的代码都没有写,UML的图还有很多没画,但那些都是细节知识,本教程的目的是宏观指导,本小菜也需要继续学习,时间非常有限,所以只能写这么多了。

  剩下的基本上都是写代码,我写出来也没啥意思,开发一个项目,基本的流程都在这呢,我主要不是教大家写代码,而不是告诉大家一个项目的流程,体会一个稍微大点的程序是怎么设计出来的,分享一下我自己的经验。跟着这个教程走,就是再菜,也是专业菜鸟!

  教程中涉及大量知识点,都需要大家耐心的去查阅资料,不怕不会,就怕不知道,刚开始会用就可以了,随着学习的深入,再去搞懂细节原理。我学这些东西也不是一天两天就学成的,是大约一年半的积累,希望大家能静下心来,踏实学习。

  最后,恭祝大家都能成为IT界的精英!

相关链接:

菜鸟也能飞:SQL数据库实战专业教程(一)

菜鸟也能飞:SQL数据库实战专业教程(二)SQLHelper包:

  DAL包:

  BLL包:

  UI包:

六、概要设计

  数据库分析完了,基础已经搞定,接下来就是对程序的初步设计。如何设计呢?如果是小程序,用脑子想想,也就算设计完了,但是如果是稍微复杂点的系统,恐怕就不行了。概要设计还是要借助于UML图,现在你知道它有多重要了吧?我们先来设计程序的大致结构,可以用UML的包图。作为专业水准的菜鸟,我们要用三层架构来设计程序。所谓三层架构,就是把程序分为基本的三层,分别为:UI层(用户界面层)、BLL层(业务逻辑层)、DAL层(数据访问层)。把程序分成三层,好处不言而喻,从此你就再也见不到所有东西都在一个窗体里混乱的情形,如果什么地方需要修改,再也不用去改动整个工程。每一层都有各自的功能,从UI层到DAL层,它们是向下依赖的。其中,UI层只负责显示界面,不应该有逻辑(有效性验证的逻辑还是可以有的),所有的功能都是通过调用BLL层完成;BLL层负责程序的所有逻辑组织,它通过调用DAL层完成复杂的操作,然后提供一个简洁的接口让UI层调用,相当于一个大外观层,BLL层的类,可以按照窗体写,也就是说每一个窗体对应一个BLL层的类,类的各种方法完成窗体的所有功能;DAL层负责访问数据库,数据库中每一个表,在DAL层中都有一个与之对应的操作类,通过该操作类,可以实现对对应表的一切操作。前边提到的实体类,就是为三层架构服务的,三层之间一般都是通过实体类传递数据,这样简洁、方便,实体类就相当于一个容器。注意,还有一个层,也可以不单独作为一个层的DBHelper,这个部分负责最低级的与数据库交互代码,比如连接数据库、插入数据、查询数据等等,把这些最基本的代码提炼到一个单独的层中有利于代码的复用,使程序更加精炼。欲知其他知识,请轻点google,我说到此为止。献上一张三层架构的示意图:

  再来一个数据库、DAL操作类、实体类的关系,这个有点乱,刚开始不好理解,多想想就知道啦:

  有了上边的分析,我们就可以用Rational Rose画程序包图了,提一个小技巧,Rose的包理论上应该在包图里画,但是那样没法画类,所以还是建议在类图里画包,用包把类图分成几个大部分,然后在每个部分里画特定的类,这样双击包直接就可以看到该包中的类了。根据三层架构,我们可以画出下边的包图:

  整体架构就是这样了,接下来就搞定每个包里都有什么类。








====================================分割线================================



最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
SQL查询太慢?实战讲解YashanDB SQL调优思路
本文是Meetup第十期“调优实战专场”的第二篇技术文章,上一篇《高效查询秘诀,解码YashanDB优化器分组查询优化手段》中,我们揭秘了YashanDB分组查询优化秘诀,本文将通过一个案例,助你快速上手YashanDB慢日志功能,精准定位“慢SQL”后进行优化。
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
32 16
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
97 9
PolarDB 开源基础教程系列 8 数据库生态
PolarDB是一款开源的云原生分布式数据库,源自阿里云商业产品。为降低使用门槛,PolarDB携手伙伴打造了完整的开源生态,涵盖操作系统、芯片、存储、集成管控、监控、审计、开发者工具、数据同步、超融合计算、ISV软件、开源插件、人才培养、社区合作及大型用户合作等领域。通过这些合作伙伴,PolarDB提供了丰富的功能和服务,支持多种硬件和软件环境,满足不同用户的需求。更多信息请访问[PolarDB开源官方网站](https://openpolardb.com/home)。
78 4
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
223 6
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
9月前
|
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
230 13
|
9月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
139 9

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等