欢迎来到天天文库
浏览记录
ID:61912619
大小:129.50 KB
页数:45页
时间:2021-03-28
《软件案例分析ch1.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据库篇1数据库设计的范式第一范式:每个分项目是不可分割的数据项天津大学软件学院1.2第二范式每个分项(非主属性)完全依赖于键(码)不符合第二范式的例子学生成绩表={学号,姓名,学院编号,教学楼号,课程编号,成绩}做如下修改符合第二范式的例子学生信息表={学号,姓名,学院编号,教学楼号}成绩表={学号,课程名称编号,成绩}天津大学软件学院1.3第三范式消除了传递依赖的第二范式不符合第三范式的例子学生信息表={学号,姓名,学院编号,教学楼号}符合第三范式的例子学生信息表={学号,姓名,学院编号}学院信息表={学院编号,教学楼号}天津大学软件学院1.4如何看待冗余冗余容易带
2、来数据不一致,尽量消除冗余个别情况下,需要保留冗余天津大学软件学院2数据库的事务(transaction)所谓事务是用户定义的一个数据库操作序列,这些操作要么全作,要么全不做,是一个不可分割的工作单位。事务具有原子性、一致性、隔离性、持久性事务通常以starttransaction或者第一个DML语句开始事务以commit或者rollback结束多个数据库上的事务,异构数据库的事务天津大学软件学院2.2事务的隔离级别READUNCOMMITTED(脏读)在事务提交前另外一个连接可以读取正在修改的数据可能产生如下现象脏读(dirtyread):在事务提交前另外一个连接可以
3、读取正在修改的数据更新丢失(lostupdate):当系统允许两个事务同时更新同一数据是,发生更新丢失。天津大学软件学院2.3事务的隔离级别READCOMMITTED每次读取到的是提交的数据。可以产生如下现象非重复读(nonrepeatableread):同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。天津大学软件学院2.4事务的隔离级别REPEATABLEREAD仅仅能看见在本事务开始前由其它事务提交的更改和在本事务中所做的更改可能产生如下现象幻像(phantomread):同一查询在同一事务中多次进行,由于其他
4、提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。天津大学软件学院2.5事务的隔离级别SERIALIZABLE仅仅能看见在本事务开始前由其它事务提交的更改和在本事务中所做的更改不会产生上述读取不一致现象天津大学软件学院2.6事务的隔离级别总结DirtyReadNonRepeatableReadPhantomReadReaduncommittedYYYReadcommittedNYYRepeatablereadNNYSerializableNNN天津大学软件学院3SQL注入问题SQL注入式攻击是指利用SQL查询设计上的漏洞,在目标服务器上直接运行Sql命令进行
5、的攻击。sql=’selectcount(*)fromuserwhereusername=’+$username+’andpassword=’+$password;sql=‘updateusersetpassword=’+$password+‘whereusername=’+$username;天津大学软件学院3.2SQL注入的防范1.对用户输入进行检查。这些检查要放在server运行,client提交的任何东西都是不可信的。2.使用存储过程或者preparedStatement,避免用字符串直接拼sql命令。3.最小权限原则。4.当sql运行出错时,不要把数据库返回的
6、错误信息全部显示给用户。天津大学软件学院4外部键(Foreignkeyconstraint)一个表R中的某(几)个字段并非是本表的键,但是是另外一个表的主键,则称这(几)个字段为R的外部键。外部键可以保证数据的完整性。天津大学软件学院4.1外部键主表数据的删除主表对应记录删除后,从表对应字段可以设置的状态:CASCADES(级联删除);RESTRICTED(禁止存在约束的删除);NULL(设置为空)实际中常采用假删除天津大学软件学院5索引聚簇索引聚簇索引是一种按照索引顺序对数据进行存储的方式。每张表只能建一个聚簇索引。使用聚簇索引查找数据几乎总是比使用非聚簇索引快。位图
7、索引位图索引的基本原理是在索引中使用位图而不是列值。通常在事实表和维表的键之间有很低的集的势(cardinality),使用位图索引.天津大学软件学院6自动增长列(identify)问题优点:插入数据简单。缺点:1无法知道插入数据的确切ID。这点在有外部键的情况下尤为麻烦。2数据导入、导出的时候,很难控制自动增长列的具体数值。天津大学软件学院6.1替代自动增长列的方法-序列序列(sequence):每次使用后自动变化。使用方法不同数据库操作不同天津大学软件学院6.2如何在不支持序列数据库上实现序列selectmax(id)fromyour
此文档下载收益归作者所有