• 《需求分析与系统设计》阅读笔记(六)


      任何软件系统的开发都要跟数据打交道,不可避免地需要对数据库进行操作。这本书自始至终都仔细区分了客户端应用程序的开发和服务器端数据库设计,之前都在谈需求分析,界面设计,现在就该说一说数据库设计了。

      数据库可以是关系型,对象-关系型或者面向对象型。绝大部分数据库软件是关系数据库模型,而后来该模型供应商又发布了很多数据库管理产品,导致数据库模型不是以关系型独霸,但这种模型在现在还是占主导地位的。现在说这些显然是废话,但IT行业最鲜明的特点就是容易变革,因此我们需要有前瞻性。关系型(以下简称RDB)的简洁性来源于数学的集合概念,RDB模型的主要原始类型是由多列组成的关系表,表设计则要遵从范式(第一范式,第二范式,第三范式),胡乱的设计只会带来各种各样的麻烦。表的结构不必多说,主键什么的都很清楚。关于数据库的操作放到现在就是大家熟知的SQL语言,大数据方面如Hive用的是HQL语言,但二者差别并不大。

      SQL是可以表现为不同形式的,并可以用在程序设计抽象的不同层次上,书中为方便理解便将SQL接口分成5个层次:1.SQL用作数据定义语言(DDL);2.SQL用作数据操纵语言或查询语言(DML);3.SQL被嵌入在常规的程序设计语言中;4.SQL采用与第3层相同策略,但提供更强的程序设计环境;5.在第3层和第4层基础上,将一些SQL语句从客户端程序移动到动态的服务器端数据库。

      与SQL相关的还有事务,事务是一个逻辑工作单元,由一个或多个SQL语句组成。事务有长短之分,短事务要求完成速度,不能被挂起。传统的DBMS以及ODBMS中主要异常都被设计成短事务,它们按照“悲观的并发控制”工作,每个处理对象都要有锁,即排他锁,更新锁,读锁和无锁,这四种锁关联的是事务间的4种隔离层次,分别是脏读,非重复读,虚读,可重复读。根据墨菲法则,任何可能出错的事情终将出错,那自然需要做出针对措施,因此DBMS为大多数错误提供了自动恢复能力,就像word的自动保存一样,防止数据丢失,这个过程也是事务的执行过程。与短事务相比,长事务的主要方面则是,在系统没有进行跟踪的情况下发生失效时不允许自动回滚,但并不是说长事务不能进行回滚,它的回滚可以用保存点来控制。

      有关数据库的知识还有很多,我从书里学习到的还只是冰山一角,而且在数据库的应用上我也不是非常熟练,至少看自己设计的表还是存在瑕疵。我还需要学习更多的知识。

  • 相关阅读:
    【20171227】json
    【20171224】文件操作
    【20171225】编解码
    【20171226】urllib
    【20171226】requests
    【错误集】编解码
    Python 基础概念——单例设计模式
    Python 继承
    python面向对象概述
    Python基础_函数的递归
  • 原文地址:https://www.cnblogs.com/20183711PYD/p/14204337.html
Copyright © 2020-2023  润新知