不同角色的人对数据库知识学习的侧重点:
•研发人员(测试及开发人员):主要学习如何操作数据库的逻辑对象,如表、索引和视图等,以得到应用程序中需要的数据。
•数据库管理员(DBA):要学习和掌握数据库的全部内容,包括数据库对象管理、性能优化、备份与恢复、安全管理等
软件测试在什么时候会用到数据库的知识?
•搭建测试环境
•通用数据库操作功能的测试(增、删、改、查等)
•快速创建测试数据,提高测试工作效率
一、数据库的基本概念
•数据:数据库中存储的基本对象。(数据?数字?)
•什么是数据库
-数据库是指长期储存在计算机内的、有组织的、可共享的大量数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
二、数据库发展历史
•人工管理阶段
•文件处理阶段
•数据库管理阶段
(1)人工管理阶段
时间:20世纪50年代中期以前
功能:计算机主要用于科学计算。外部存储器只有磁带、卡片和纸带等还没有磁盘等直接存取存储设备。软件只有汇编语言,尚无数据管理方面的软件,数据处理方式基本是批处理。
数据管理非常简单。通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理,其运行结果在纸上打印出来或者制成新的穿孔卡片。而数据管理就是对所有这些穿孔卡片进行物理的储存和处理。
特点:数据不保存,没有对数据进行管理的软件系统,没有文件的概念,数据不具有独立性。
(2)文件阶段
时间:20世纪50年代后期至60年代中期
功能:计算机不仅用于科学计算,还利用在信息管理方面。随着数据量的增加,数据的存储、检索和维护问题成为紧迫的需要,数据结构和数据管理技术迅速发展起来。
1950 年雷明顿兰德公司(Remington Rand Inc)的一种叫做Univac I 的计算机推出了一种一秒钟可以输入数百条记录的磁带驱动器,从而引发了数据管理的革命。1956 年IBM生产出第一个磁盘驱动器—— the Model 305 RAMAC。此驱动器有50 个盘片,每个盘片直径是2 英尺,可以储存5MB的数据。使用磁盘最大的好处是可以随机存取数据,而穿孔卡片和磁带只能顺序存取数据。
特点:数据可以长期保存,由文件系统管理数据,文件的形式已经多样化,数据具有一定的独立性。
(3)数据库系统阶段
时间:60年代后期
数据库系统的萌芽出现于二十世纪60 年代。当时计算机开始广泛地应用于数据管理,对数据的共享提出了越来越高的要求。传统的文件系统已经不能满足人们的需要,能够统一管理和共享数据的数据库管理系统(DBMS)应运而生。
功能:数据管理技术进入数据库系统阶段。数据库系统克服了文件系统的缺陷,提供了对数据更高级、更有效的管理。这个阶段的程序和数据的联系通过数据库管理系统来实现(DBMS)。
特点:采用复杂的结构化的数据模型,较高的数据独立性,最低的冗余度,数据控制功能。
三、数据库的特点
数据库存储量大
数据长期存储
数据完整性
数据共享性
四、数据库模型
两种不同层次
•1)概念模型 也称信息模型 ,是按用户的观点来对数据和信息建模
•2)数据模型 这是用户从数据库所看到的模型,是具体的DBMS所支持的数据模型,数据模型是数据库系统的核心和基础,各种DBMS软件都是基于某种数据模型的。所以通常也按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库和关系数据库三类。
---------------------------概念模型-----------------------------
1)概念模型用途
•a 用于信息世界的建模
•b 现实世界到机器世界的一个中间层次;
•c 数据库设计的有力工具;
•d 数据库设计人员和用户之间进行交流的语言。
概念模型的基本要求:
较强的语义表达能力,能够方便,直接的表达应用中的各种语义知识;
简单,清晰,易于用户理解
信息世界的基本概念
1) 实体(Entity)客观存在并可相互区别的事物称为实体;可以是具体的人,事,物或抽象的概念
2) 属性(Attribute)实体所具有的某一特性称为属性,一个实体可以由若干个属性来刻画
3) 键 (Key) 唯一标识实体的属性集称为键
4)域(Domain) 属性的取值范围称为该属性的域
5)实体型(Entity Type) 用实体名及其属性名集合来抽象和刻画同类实体称为实体型
学生(学号,班级,姓名,性别,年龄)
6) 实体集(Entity Set) 同型实体的集合称为实体集
7) 联系(Releationship)现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系
实体内部的联系:组成实体的各属性之间的联系;
实体之间的联系:不同实体集之间的联系(1:1;1:n;m:n)
概念模型的表示方法
实体-联系方法(E-R方法)
---------------------------数据模型-----------------------------
数据模型 反映的是系统分析设计人员对数据存储的观点,是对概念数据模型进一步的分解和细化
数据模型的组成要素:
•数据结构 是对系统静态特性的描述,是对象类型的集合(两类对象:与数据类型性质有关的对象内容,与数据之间联系有关的对象) 类型,整型,字符串,浮点数
•数据操作 对系统动态特性的描述
•数据的约束条件
三种数据模型
层次模型
层次模型是一棵倒立的树。在数据库中,满足以下条件的数据模型称之为层次模型:层次模型 有且仅有一个结点无父结点,这个结点称之为根结点; 其他结点有且仅有一个父结点。
根据层次模型的定义可以看到,这是一个典型的树型结构。结点层次从根开始定义,根为第一层,根的子结点为第二层,根为其子结点的父结点,同一父结点的子结点称为兄弟结点,没有子结点的结点称为叶结点。
层次模型的优缺点
层次模型的优点——层次数据库模型本身比较简单、
层次模型对具有一对多的层次关系的部门描述非常自然、直观,容易理解、层次数据库模型提供了良好的完整性支持。
层次模型的缺点——在现实世界中有很多的非层次性的联系,如多对多的联系,一个结点具有多个父结点等,层次模型表示这类联系的方法很笨拙、对于插入和删除操作的限制比较多、查询子结点必须经过父结点、由于结构严密,层次命令趋于程序化。
网状模型:
•在现实世界中,事物之间的联系更多的是非层次关系的,用层次模型表示非树型结构是很不直接的,网状模型则可以克服这一弊病。网状模型是一个网络。在数据库中,满足以下两个条件的数据模型称为网状模型。
•① 允许一个以上的结点无父结点;
•② 一个结点可以有多于一个的父结点。 从以上定义看出,网状模型构成了比层次结构复杂的网状结构。
网状模型的优缺点:
• 优点:
•1. 网状数据模型可以很方便的表示现实世界中的很多复杂的关系;
•2. 修改网状数据模型时,没有层次状数据模型的那么多的严格限制,可以删除一个节点的父节点而依旧保留该节点;也允许插入一个没有任何父节点的节点,这样的插入在层次状数据模型中是不被允许的,除非是首先插入的是根节点;
•3. 实体之间的关系在底层中可以借由指针指针实现,因此在这种数据库中的执行操作的效率较高;
• 缺点:
•1. 网状数据模型的结构复杂,使用不易;
• 2. 网状数据模型数据之间的彼此关联比较大,该模型其实一种导航式的数据模型结构,不仅要说明要对数据做些什么,还说明操作的记录的路径;
关系模型:
•在关系模型中,数据的逻辑结构是一张二维表。
•在数据库中,满足下列条件的二维表称为关系模型:
•① 每一列中的分量是类型相同的数据;
•② 列的顺序可以是任意的;
•③ 行的顺序可以是任意的;
•④ 表中的分量是不可再分割的最小数据项,即表中不允许有子表;
•⑤ 表中的任意两行不能完全相同。
•关系数据模型的完整性 (数据库中数据在逻辑上的一致性、正确性、有效性和相容性)
完整性:
1、实体完整性(用于保证数据库表中的每一个元组都是唯一的。在任何关系的任何一个元组中,主键的值不能为空值、也不能取重复的值。)
2、参照完整性(用于确保相关联的表间的数据保持一致。在关系数据库中通常用外码来实现参照完整性,规则要求““不引用不存在的实体”)
3、用户定义的完整性(是对数据表中字段属性的约束)也称域完整性规则。包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束)
五个约束:
(1) not null(非空)约束
(2) unique(惟一)约束
(3) primary key(主键)约束
(4) foreign key(外键)约束
(5) check(校验)约束
关系模型的数据结构
•关系模型的基本数据结构
•关系就是带有一些特殊属性的一张表
-在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
关系数据模型的数据结构
•关系模型的基本概念
-关系(Relation):一个关系对应通常说的一张表。
-元组(Tuple):表中的一行即为一个元组。
-属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名。
-主键(Key):表中的某个属性组,它可以唯一确定一个元组。
-域(Domain):属性的取值范围。
-分量:元组中的一个属性值。
如何描述关系?
表示方法 —— 关系名(属性1,属性2,…,属性n)
例如: 学生(学号,姓名,年龄,性别,系,年级)
RDBMS即关系数据库管理系统(Relational Database Management System)的特点:
1.数据以表格的形式出现
2.每行为各种记录名称
3.每列为记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database
关系数据库目前已成为占据主导地位的数据库管理系统。自20世纪80年代以来,作为商品推出的数据库管理系统几乎都是关系型的,例如,Oracle,Sybase,Informix,Visual FoxPro,mysql,sqlserver等。