SQLServer与数据库应用开发第1章数据库技术基础1.1.数据管理技术及发展阶段1.2.数据库技术基本理论1.3.关系型数据库基础1.4.关系型数据库的设计主要内容【知识要求】:1.了解数据管理技术及其发展阶段的特点。2.掌握数据库技术基本概念与数据库设计的基础知识。【能力要求】:1.具备进行数据库需求分析和数据抽象的能力。2.能根据实际应用情景进行数据库模型设计。知识与能力要求1.1.1信息与数据1.信息信息是客观世界中的人或者事物的性质或者特征在人脑中的反映。2.数据数据是信息的表示形式,是信息存在的载体。信息是数据的灵魂。1.1数据管理技术及其发展阶段1.1.2数据管理数据管理(DataManagement)就是指对数据进行收集、组织、存储、加工、传播和利用的一系列活动的总和。由于技术背景不同,数据管理经历了人工管理、文件管理、数据库管理三个阶段。1.人工管理利用简单记录工具或者纸张来记录数据,20世纪50年代中期出现了计算机,没有专门数据管理软件。特点:(1)系统没有专用的软件对数据进行管理(2)数据不具有独立性。(3)数据不能共享1.1数据管理技术及其发展阶段2.文件管理阶段20世纪50年代后期到60年代中期,数据管理方式是把计算机中的数据组织成相互独立的、被命名的数据文件。特点:(1)文件系统实现文件系统的结构化,文件内部没有结构化。(2)数据冗余度大,维护困难(3)数据共享性、独立性差。图1.1文件系统管理数据1.1数据管理技术及其发展阶段3.数据库系统管理阶段20世纪60年代后期,出现了大容量磁盘,使数据能为尽可能多的应用程序服务。数据不再只针对某一个特定的应用,而是面向全组织,具有整体的结构性,共享性高,冗余度减小,具有一定的程序与数据之间的独立性,并且对数据进行统一的控制。特点:(1)数据结构化。(2)数据共享性、独立性高(3)数据冗余小。(4)数据由数据库管理系统(DBMS)软件统一管理和控制图1.2数据库系统管理数据数据库管理系统提供以下四方面的数据管理功能。(1)数据安全性控制:防止因不合法使用数据而造成数据的泄露和破坏,保证数据的安全和机密。(2)数据的完整性控制:系统通过设置一些完整性规则,以确保数据的正确性、有效性和兼容性。(3)并发控制:多用户同时读取或修改数据库时,防止相互干扰而给用户提供不正确的数据(脏数据),并使数据库受到破坏。(4)数据恢复:当数据库被破坏或数据不可靠时,系统有能力将数据库从错误状态恢复到最近某一时刻的正确状态。1.1数据管理技术及其发展阶段1.2.1数据库基本概念1.数据库(Database,DB)数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。2.数据库管理系统(DatabaseManagementSystem,DBMS)数据库管理系统是数据库的管理机构,它是一个系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。负责数据库创建、维护、安全管理的人员,叫数据库管理员(DatabaseAdministrator,DBA)3.数据库系统(DatabaseSystem,DBS)是指引进数据库技术后的整个计算机系统,它能够实现有组织地、动态地存储大量相关数据,提供数据处理和信息资源共享的便利手段。1.2数据库基本理论图1.3数据库系统结构图1.2.2数据模型数据模型是现实世界特征的数据化抽象,是对现实世界的数字化模拟与表示。数据模型应满足三方面的要求:一是能针对性地模拟现实世界中事物的主要特征及其相互关系;二是容易理解和表示;三是便于在计算机系统中实现。将数据模型可以分为两类:一类是概念模型,它是面向现实世界来对数据和信息进行抽象,主要用于数据库设计,是数据模型建立的第一个阶段;另一类是结构数据模型,它是面向计算机系统,便于在计算机中实现,主要用于在DBMS的实现,是数据模型建立的第二个阶段。1.2数据库基本理论1.概念模型概念模型是现实世界到信息世界的第一次特征化的抽象,用于信息世界的建模,是数据库设计人员的重要工具,(1)实体(entity):就是我们关心的数据对象,同种实体的集合,就是实体集。(2)属性(Attributes):实体所具有的某一特性称为实体的属性。(3)联系(Relationship):联系在信息世界中表现为实体型内部各属性之间的联系以及实体型之间的联系。一对一联系(1:1):若对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一的联系。一对多联系(1:n):若对于实体集A中的每一个实体,实体集B中有n(n≥2)个实体与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多的联系。多对多联系(m:n):若对于实体集A中的每一个实体,实体集B中有n(n≥2)个实体与之联系,反过来,对于实体集B中的每一个实体,实体集A中也有m(m≥2)个实体与之联系,则称实体集A与实体集B有多对多的联系。1.2数据库基本理论(4)E-R图E-R图提供了表示实体型、属性和联系的方法。实体:用矩形表示,矩形框内写实体名。属性:用椭圆形表示,椭圆内写属性名,用无向边将属性与实体连接起来。联系:用菱形表示,菱形框内写联系名,用无向边与有关实体连接起来,同时在无向边上注明联系类型。联系也具有属性,也要用无向边将联系与有关实体连接起来。【案例1.1】用班长、班级、学生、课程实体的E-R图说明实体之间的联系类型。(参考结果E-R如图1-4所示)1.2数据库基本理论班长班级班级学生任职所属学习111nmn学生课程1:1联系1:n联系m:n联系图1-4实体及联系图【案例1.2】设计“学生”与“班级”之间的详细E-R图。参考结果E-R如图1-5所示。1.2数据库基本理论n1属于学生学号性别姓名出生日期班级班级名称班级编号系部编号图1-5“班级”与“学生”E-R图1.2数据库基本理论1.结构数据模型在数据库技术中,包含数据结构、数据操作和数据的完整性约束的数据模型称为结构数据模型。数据结构是所研究的对象类型的集合,用于描述系统的静态特性,是数据模型的基础。数据操作是对数据进行的添加、删除、查询、修改等各种操作。完整性约束是保证数据库中数据在语法与语义上的正确性、一致性。结构数据模型主要类型有:层次模型、网状模型、关系模型。(1)层次模型:呈树状结构,只有一个根结点没有父结点,其它所有元素有且只有一个父结点。(2)网状模型:呈网状结构,可以有一个以上结点没有父结点,其它所有元素可有多个父结点。(3)关系模型:用二维表来表示实体及实体之间联系的模型称为关系模型,支持关系模型的数据库管理系统称为关系型数据库管理系统。基于关系模型创建和管理的数据库就称为关系数据库。关系数据库以其结构简单,描述性强、使用方便、完备的理论基础等优点,成为当今使用最为广泛的数据库。1.3.1关系模型关系模型由三部分组成:数据结构、关系操作、关系的完整性。在介绍三个组成部分之前,先来了解关系模型的基本术语。(1)关系模型(relationalmodel):用二维表格结构来表示实体及实体间联系的模型称为关系模型(如图1-6)。(2)关系模式(relationschema):在二维表格中,一个二维表就是一个关系,对表中各列名称和数据类型的定义称为关系模式。(3)属性(attribute)和值域(domain):在二维表中的列称为属性,列值称为属性值,属性值的取值范围称为值域。(4)元组(tuple):在二维表中的行(记录)称为元组。1.3关系型数据库(5)主键(primarykey)或主关键字:在关系的属性中,能够用来唯一标识元组的属性或属性组合称为主键或主关键字。关系中的元组由主键或主关键字的值唯一确定,主键不能为空。例如,学生表中的学生编号可以作为主键。(6)候选关键字(candidatekey):如果一个关系中,存在着多个属性或属性的组合都能用来唯一标识该关系的元组,这些属性或属性的组合称为该关系的候选关键字。(7)外键(foreignkey):当关系中的某个属性或属性组合虽不是该关系的主键或只是主键的一部分,但却是另一个关系的主键字时,该属性或属性组合称为这个关系的外键。主键所在的表称为主表,外键所在的表称为从表。1.3关系型数据库1.3关系型数据库学生信息表关系名属性名或者名列关系模式行或元组关系主键值域为‘男’或‘女’图1-6关系模型主要概念示意图1.关系模型的数据完整性数据完整性是指关系模型中数据的正确性与一致性。关系模型允许定义四类完整性约束:实体完整性约束、域完整性、参照完整性约束和用户自定义完整性约束。关系型数据库系统提供了对实体完整性约束、域完整性约束、参照完整性约束的自动支持机制,也就是在插入、修改、删除、更新操作时,数据库系统自动保证数据的正确性与一致性。(1)实体完整性规则(entityintegrityrule):这条约束要求关系中的元组在组成主键的属性列上的值的唯一性,且不能为空。例如,学生信息表中的学号值保证了记录的唯一性,它不能为空。(2)域完整性规则(domianintegrityrule):这条约束要求关系中的属性列上的值一定范围内取值才有意义。例如,学生信息表中性别只能取“男”或者“女”。(3)参照完整性规则(referenceintegrityrule):这条约束要求在从表中不能有主表中不存在的元组,即,外键值在主表中必须存在。(4)用户自定义完整性规则(user-defindedintegrityrule):用户自定义完整性规则是根据应用领域的需要,由用户自己定义的约束方式,体现了具体应用领域的语义与数据一致性约束。1.3关系型数据库2.关系操作关系操作的数学基础是关系数学,为关系数据库的数据操作提供了数学依据。在数据库中表现在关系数据库的操作语言之中。SQL(StructuredQueryLanguage)语言是关系数据库的标准语言,它是以关系代数为基础,是提供了数据定义、数据查询和访问控制功能的语言。(1)数据定义语言(DataDefinitionLanguage,DDL):用于定义和修改数据库、数据库对象的语言。主要用到关键字有:CREATE、ALTER、DROP。(2)数据操纵语言(DataManipulationLanguage,DML):主要包括SELECT、INSERT、DELETE、UPDATE四个关键字。(3)数据控制语言(DataControlLanguage,DCL):主要用来控制用户对数据的存取权力。某个用户对数据库的操作是由数据库管理员来决定和分配的,数据库访问控制功能保证这些安全策略的正确执行。SQL通过授权语句GRANT和回收语句REVOKE来实现访问控制功能。(4)SQL语言使用方式:SQL具有两种使用方式,既可以作为独立的语言在终端交互方式下使用,又可以将SQL语句嵌入某种高级语言(如C、C++、Java等)之中使用。嵌入SQL的高级语言称为主语言或宿主语言。1.3关系型数据库1.3.2关系数据理论对一个具体的数据库应用问题,根据E-R图,应该构造几个关系模式?每个关系由哪些属性组成?即如何构造适合于它的数据模式,这是关系数据库逻辑设计的问题。1.问题的提出对于在线考试系统的数据库设计,假如根据概念模型的E-R图得出了三个关系:学生关系:学生(学号,姓名,性别,出生日期,班级编号,系部编号)。课程关系:课程(课程号,课程名)。成绩关系:成绩(学号,课程号,成绩)。那么这三个关系应当形成几个关系模式?(1)只有一个关系模式:学生-课程-成绩(学号,姓名,性别,出生日期,班级编号,系部编号,课程号,课程名,成绩)。a)数据冗余:增加一门新课程必须添加学生信息,多门课时,同一学生信息多次添加。b)修改异常:修改课程名称,要修改所有学生的记录,否则异常c)插入异常:不添加学生信息无法添加课程d)删除异常:删除学生成绩,学生信息会被删除。1.3关系型数据库(2)有三个关系模式:学生,课程,成