2024年5月27日发(作者:)

SQL Server 2000数据库

第一章 关系数据库基础

学习目标

理解关系数据库的基本概念

掌握关键字和外关键字的基本定义

掌握实体与实体间的联系方式

掌握数据库设计方法

灵活运用关系规范化的理论对数据库进行优化

1.1关系数据库概述

1.1.1基本概念

1.数据

所谓数据(Data)就是描述事物的符号。

数字、文字、图表、图像、声音等都是数据。

2.数据库

数据库(Database,DB)就是数据存放的地方。

数据库对象是指表(Table)、视图(View)、存储过程(Stored Procedure)、触发器(Trigger)等。

3.数据库管理系统

数据库管理系统(Database Management System,DBMS)用于管理数据的计算机系统软件。

数据库管理系统可以分为桌面数据库管理系统和客户机/服务器数据库管理系统。

桌面数据库管理系统通常用于管理本地机上的小型数据库,例如Access和FoxPro。(C/S架构)

客户机/服务器数据库管理系统也简称为数据库服务器,例如SQL Server、Oracle、Informix等。(B/S架构)

4.数据库系统

数据库系统(Database System,DBS)狭义地讲就是由数据库管理系统、数据库和用户构成,广义地讲是由计算机硬件、操

作系统、数据库管理系统以及在它支持下建立起来的数据库、应用程序、用户和维护人员组成的一个整体。

1.1.2关系数据库

基本的数据模型有三种:层次模型、网状模型和关系模型。

目前广泛使用的数据库软件都是基于关系模型的关系数据库管理系统。

1.关系模型

关系模型(Relational Model,RM)把世界看做是由实体(Entity)和联系(Relationship)构成的。

所谓实体就是指现实世界中具有区分于其他事物的特征或属性并与其他实体有联系的对象。例如课程、学生、班级等都是实

体。实体表示的是一类事物,其中的一个具体事物称之为该实体的一个实例,如学生“王静”是学生实体的一个实例。

所谓联系就是指实体之间的关系,即实体之间的对应关系。联系可以分为三种。

(1)一对一联系(1:1)

若对于实体集A中每一个实体,实体集B中至多只有一个实体与之联系,反之与实体集B每一个实体,实体集A中也至多

只有一个实体与之联系。这称为实体集A与实体集B之间具有一对一联系,记1:1。

例如学院和院长的联系,例如每个学院只有一个院长,而一个人只能在一个学院任职。则它们是一对一的联系。

(2)一对多联系(1:N)

若对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,而对于实体集B中的每一个实体,实体集A

中至多只有一个实体与之联系,则称实体集A与实体集有一对多的联系,记为1:N。

例如一个系可负责多门课程的讲授,而一门课只能由一个系的老师来讲,则系与课程是一对多的联系。

(3)多对多联系(M:N)

若对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反过来对于实体集B中的每一个实体,实体

集A中有m个实体(m≥0)与之联系,则称实体集A与实体集B之间有多对多联系,记为M:N。

例如一个学生可以学习多门课程,一门课程也可有多个学生学习,则学生与课程之间是多对多的联系。

2.关系数据库

所谓关系数据库(Relational Database,RDB)就是基于关系模型的数据库。关系数据库管理系统(DBMS)就是管理关系

数据库的计算机系统软件。

在关系数据库中,所有的数据都是以表格的形式进行组织和存储。

每个表格都由列和行构成。

列用来描述数据的属性,行代表唯一的一条记录,每一列(也称为字段)表示记录中的一个元素。

在同一个表中,每一列的名称必须是唯一的,每一条记录必须是唯一的,即不能出现完全相同的两条记录。

在不同的表中可以使用相同的列名。

图1-1 课程表信息

每一行代表一门课程的记录,该记录中的每个元素由相关的列来标识。

如表中的每一条记录,该记录记录中的每一个元素由相关的列来标识。

如表中的第一条记录,由5列构成,分别是课程编码001,课程名电子商务概论、分类电子商务、教师丛云茹、系部编码01。

1.1.3结构化查询语言

结构化查询语言(Structured Query Language,SQL)是一种应用广泛的数据库语言,用于定义和管理关系数据库中的对象,

也用于检索、修改和删除数据中的数据。

SEKECT语句

select * from files

在SQL Server2000中使用的SQL语言称为Transact-SQL(T-SQL)。

1.2关键字

关键字(Key)是用来唯一标识表中每一行的属性或属性的集合,又称为关键码、码或键。

1.候选关键字

如果一个属性集能唯一地标识表的一行而不含多余的属性,那么这个属性集称为候选关键字(Candidate Key)。

候选关键字有如下性质。

在一个关键字,候选关键字可以有多个。

例如表1-1的系关系中,“系部编码”“系部名称”都是候选关键字

关键字可以由一个属性构成,也可以由多个属性构成。如表1-2中,“学院+课程号”是候选关键字。

候选关键字不可能再与其他的属性构成新的候选关键字。

2.主关键字(Promary Key)是从候选关键字中挑选出来,作表的行的唯一标识。

一个表只有一个主关键字。

主关键字又可以称为主键。

如表1-1中,“系部编码”是主关键字。

3.公共关键字

在关系数据库中,如果两个关系中具有相同的属性或属性集合,那么这个属性或属性集合被称为这两个关系的公共关键字

(Common Key)。

如在表1-3和表1-1中都有“系部编码”字段,则“系部编码”是这两个表的公共关系字。

4.外关键字

如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外关键字(Foreign Key)。

由此可见,外关键字标识了两个关系之间的联系。

以另一个关系的外关键字作主键字的表被称为主表,具有此外关键字的表被称为主表的从表。

外关键字又称作外键。

如在表1-1中,“系部编码”是主关键字,则它是表1-3的外关键字。

1.3数据库设计步骤

1.3.1信息的转换

例如现实世界中的一个“事物”,对应于信息世界中的一个“实体”。

实体可以是一个学生,一个零件或一张订货合同。

事物总是有一些性质反映事物的特征。

因此实体总是有一些属性,反映实体的特征,如学生的学号、姓名等。

实体的属性在计算机世界中用数据项描述,实体属性的集合在计算机世界中用记录描述。

具有相同属性的事物的集合,如一群学生、一群教师,就形成了事物类,他们是信息世界中的实体集(简称实体),在计算

机世界中,则形成了一个个数据文件,如学生文件、教师文件。

1.3.2数据库设计步骤

1.概念结构设计

(1)对现实世界进行需求分析。

(2)建立信息世界中E-R模型

实体-联系模型(Entity-Relationship Model)。

在E-R图中,用长方形表示实体集,在长方形框内写上实体名。

用菱形表示实体间联系,菱形框内写上联系名。

用无向边把菱形和有关实体相连接,在无向边旁标上联系的类型,如1或M或N。

用椭圆形标识实体或联系的属性并以无向边相连。

例如学号、姓名、专业、年级等可以抽象为学生实体的属性。其中学号为标识学生实体的码。

由于一个宿舍可以住多个学生,而一个学生只能住在某一个宿舍中,因此宿舍与学生之间是1:n的联系。

由于一个班级往往有若干名学生,而一个学生孩子能属于一个班级,因此班级与学生之间也是1:n的联系。

由于班主任同时还要教课,因此班主任与学生之间存在指导联系,一个班主任要教多名学生,而一个学生只对应一个班主任,

因此班主任与学生之间也是1:n的联系。

而学生和他自己的档案材料之间,班级与班主任之间都是1:!的联系。

学生(学号,姓名,出生日期)

档案材料(档案号,„„)

班级(班级号,学生人数)

班主任(职工号,姓名,性别,是否为优秀班主任)

宿舍(宿舍编号,地址,人数)

教学(教师编号,地址,容量)

其中有下划线的属性为实体的码。

2.逻辑结构设计

1.3.3数据库设计规范化

数据冗余:数据重复。

更新异常:数据不一致性。

插入异常:信息无法正常存入。

删除异常:信息无法正常删除,或者删除一些外在的数据。

范式(Normal Form)。

一般说来,数据库之需要满足第三范式(3NF)就行了。

第一范式

所谓第一范式(First Normal Form,1NF)是指数据库表的每一列都是不可分割的基本数据项(即不可再分为更小的属性)。

例如,在表1-6中,因为列departno和列kind放在一列(departmengt)中显示,也就是说列department还可以分为更小的属

性。

第二范式

第二范式(2NF)是在第一方式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。

第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。

为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。

如图1-8课程信息表中加上课程编号(Couno)列,因为每门课程的课程编码是唯一的,因此每门课程可以被委以区分。

这个唯一属性被称为关键字或主键、主码。

第二范式(2NF)要求实体的所有非关键字属性都完全依赖于主关键字(即不存在部分依赖)。

所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。

例如在表1-7所示的学生(学号,姓名,课程号,成绩)表中,这个关系满足1NF,但不满足2NF。

主关键字为“学号+课程号”,非主属性“成绩”,完全依赖于主关键字,非主属性“姓名”部分依赖于主关键字。即有“学

号”决定“姓名”,而“学号+课程号”决定“成绩”。

出现的问题:学生张林只有一门课的成绩,则删除成绩相当于删除该学生。

解决办法:首先将部分依赖关系的决定方和非主属性丛表中提出,单独构成一个表。然后将余下属性加上主关键字(仍要保

留部分依赖的决定方属性,起分解出来的新表之间的关联作用)构成一个表。

上述表分解为两个表:成绩(学号,课程号,成绩),学生(学号,姓名)。

第三范式

如果一个关系模式属于2NF,并且不存在非关键字传递地依赖于关键字,即要求一个数据库表中不包含已在其它表中已包含

的非主关键字信息。则称该关系模式属性第三模式(3NF)。

例:学生记录(学号,姓名,系,系主任)不是3NF。因为“学号”决定“系”,“系”又据顶“系主任”,则“学号”简介

决定“系主任”对主关键“学号”的传递依赖。(隔了一个关系)

分解为以下两个关系即可:学生档案(学号,姓名,系名)系(系名,系主任)