数据库系统原理.docx
《数据库系统原理.docx》由会员分享,可在线阅读,更多相关《数据库系统原理.docx(70页珍藏版)》请在冰豆网上搜索。
数据库系统原理
数据库系统原理实验指导书
张太红主编
新疆农业大学计算机与信息工程学院
2005年2月
课程简介:
《数据库系统原理》课程主要讲授数据库技术的相关基本原理与概念;T-SQL对数据库的操作:
数据库、数据表、索引、视图、存储过程的创建和使用,数据的插入、修改、删除与查询;数据源之间的导入、导出和链接原理与概念等。
学习本课程的目的是使学生掌握管理数据库数据的基本技术及原理与实现方式。
课程安排:
教学总周数:
10周
教学总时数:
64学时
理论教学数:
44学时
实验教学数:
20学时
课程要求:
上课要认真学习,上机要认真实践,注重理论联系实际。
要学有所悟,学有所用。
课程考核:
本课程的期末考试分为笔试和实验两部分,成绩计算方法为:
期末考试成绩占总成绩的70%,平时成绩(含考勤、平时作业、实验成绩)占总成绩的30%。
实验要求:
1.明确实验课是本课程的重要组成部分,与理论课有着同等地位,是培养自身的实验技能与创新能力的重要途径;
2.在实验课前,对实验的目的、要求和基本内容,实验的重点和难点,应进行预习与讨论,确定实施措施;
3.了解实验室的规章制度和安全用电常识、实验设备损坏赔偿制度等,加强安全意识,爱惜实验设备;
4.实验课期间不得擅自离开实验室或从事与本实验无关的活动,按时按质完成实验作业,培养创造性思维,努力提高自身的实践能力;
5.每次实验应提交实验结果,结合实验操作过程给予综合评分(对于有创造性的实验成果酌情给予加分),作为期末考试成绩的一部分。
实验一熟悉DBMS的运行环境和系统配置
一、实验目的
本章实验主要讲述数据库和数据模型的有关概念及数据库系统的结构。
通过本章的学习,读者应该掌握以下内容:
数据库和数据模型的基本概念、数据模型的三要素、概念模型的表示方法、数据库系统的模式结构与体系结构DBMS的功能与组成。
具体包括了解、熟悉DBMS,了解连接数据库服务器的身份验证模式,熟悉样例数据库,体会DBMS的三层模式结构,充分利用联机帮助了解DBMS中数据字典。
二、实验准备
数据模型由三个要素组成:
数据结构、数据操作和完整性约束。
1.数据结构
数据结构用于描述系统的静态特性,是所研究的对象类型的集合。
数据模型按其数据结构分为层次模型、网状模型和关系模型。
2.数据操作
数据操作用于描述系统的动态特性,是指对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作集合。
3.数据的约束条件
数据的约束条件是一组完整性规则的集合。
完整性规则是给定的数据及其联系所具有的制约和存储规则,用以限定符合数据库状态以及状态的变化,以保证数据的正确、有效和相容。
数据库系统的三级模式结构:
数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级组成。
1.外模式。
外模式也称子模式或用户模式,它是数据库用户(包括应用程序员和最终用户)看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
一个数据库可以有多个外模式。
2.模式。
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公用数据视图。
一个数据库只有一个模式。
3.内模式。
内模式也称存储模式,它是数据物理和存储结构的描述,是数据在数据库内部的表示方式。
一个数据库只有一个内模式。
DBMS的功能:
1.数据定义
数据定义包括定义构成数据库结构的外模式、模式和内模式,定义各个外模式与模式之间的映射,定义模式与内模式之间的映射,定义有关的约束条件(例如,为保证数据库中数据具有正确语义而定义的完整性规则,为保证数据库安全而定义的用户口令和存取权限等)。
2.数据操纵
数据操纵包括对数据库数据的检索、插入、修改和删除等基本操作。
3.数据库运行管理
对数据库的运行进行管理是DBMS运行时的核心部分,包括对数据库进行并发控制、安全性检查、完整性约束条件的检查和执行、数据库的内部维护(如索引、数据字典的自动维护)等。
所有访问数据库的操作都要在这些控制程序的统一管理下进行,以保证数据的安全性、完整性、一致性以及多用户对数据库的并发使用。
4.数据组织、存储和管理
数据库中需要存放多种数据,如数据字典、用户数据、存取路径等,DBMS负责分门别类地组织、存储和管理这些数据,确定以何种文件结构和存取方式物理地组织这些数据,如何实现数据之间的联系,以便提高存储空间利用率以及提高随机查找、顺序查找、增、删、改等操作的时间效率。
5.数据库的建立和维护
建立数据库包括数据库初始数据的输入与数据转换等。
维护数据库包括数据库的转储与恢复、数据库的重组织与重构造、性能的监视与分析等。
6.数据通信接口
DBMS需要提供与其他软件系统进行通信的功能。
例如,提供与其他DBMS或文件系统的接口,从而能够将数据转换为另一个DBMS或文件系统能够接受的格式,或者接收其他DBMS或文件系统的数据。
三、实验内容
1.熟悉网络环境和数据库环境
数据库服务器:
操作系统:
Windows2000AdvancedServer
IP地址:
202.201.224.123
数据库管理系统:
MicrosoftSQLServer2000
服务器名称:
HP
客户机:
操作系统:
Windows2000Professional
IP地址:
202.201.X.X
MicrosoftSQLServer2000客户端
启动MicrosoftSQLServer2000查询分析器:
1..开始->程序->MicrosoftSQLServer2000->查询分析器出现如下画面
连接到MicrosoftSQLServer2000
SQLServer:
HP(或202.201.224.123)
选择SQLServer身份验证;登录名:
student密码:
student
2.创建数据库sql语句
3.身份验证模式:
在安装SqlServer2000过程中,出现[身份验证对话框],提示选择身份验证模式。
Windows身份验证模式或混合模式(Windows身份验证和SqlServer身份验证)并提示添加sa用户登陆密码(一般选中空密码)。
安装完SQL后,打开企业管理器,逐级展开节点到[安全性]|[登陆],在右边视图中可以看到登陆的用户名称,右击sa用户,打开属性,弹出属性对话框,可以看到当前用户的身份验证模式。
4.体会DBMS的三层模式结构:
(以理解为主)从数据库管理系统角度看,数据库描述由三级抽象模式组成:
概念模式(逻辑模式)、物理模式(内模式)和外模式;从数据库最终用户角度看,数据库系统的结构分为单用户结构、主从式结构、分布式结构和客户/服务器结构。
概念模式体会:
打开任意所建立[数据库],选择一个[表],右击[设计表],打开[设计表]框。
这里描述了存储的数据的属性和实体及实体关系。
物理模式:
描述存储细节。
外模式:
视图和来自概念模式的关系组成。
5.安装SqlServer2000后,安装程序将在所创建的数据库实例中创建数据库和日志文件。
Master、Model、Msdb和Tempdb都是系统数据库。
Pubs和Northwind示例数据库作为学习工具提供。
我们提供基于样例数据库Northwind的一些操作。
打开[企业管理器]|[数据库][Northwind]。
Northwind示例数据库包含了一个名为NorthwindTraders的虚构公司的销售数据,打开[表],可以看到该数据库包括了Categories、Customers等13张用户表和Alphabeticallistproduct、CategoryScalefor1997等16张视图。
可以任意打开用户表查看信息。
6.从[开始]|[程序]|MirosoftSQLServer|联机丛书。
学习数据字典。
四、思考题
1.分别给出一个层次、网状和关系模型的实例。
2.从用户角度看,数据库系统都有哪些体系结构?
3.数据库管理系统通常由哪几部分组成?
实验二数据库安全管理
一、实验目的
了解SQLServer2000中的两种用户登录模式;
熟悉SQLServer2000中登录帐户、用户、角色、权限的概念;
掌握SQLServer2000中创建帐户、数据库用户的方法,会使用角色来分配权限
二、实验准备
SQLServer的用户权限控制是SQLServer一个最重要的管理概念,也是众多管理任务之一。
SQLServer的登录方式有标准SQLServer登录和集成Windows系统登录两种。
SQLServer集成的安全登录模式即将Windows系统的用户和工作组映射为SQLServer的登陆帐户。
Windows集成登录模式实际上是让Windows系统代替SQLServer执行对登陆审查的任务。
如果要采用SQLServer管理的安全登录模式实现SQLServer服务器的登录连接,用户必须拥有合法的帐号和正确的密码。
由SQLServer系统本身来进行用户的身份验证。
三、实验内容
本次实验采用SQLServer管理的安全登录模式来连接服务器,也就是要求用户输入帐户和密码并且经系统验证通过后方可登录。
首先打开SQLServer本地客户端的查询分析器,如下图所示,选择或指定要连接的服务名称(这里为HP或202.201.224.123),输入帐户:
student,密码为student。
1.创建登录帐户
用户可以通过企业管理器或系统提供的存储过程来进行登录帐户的创建。
这里使用系统存储过程来创建,创建帐户的语法可参见SQLServer2000联机帮助中的相关内容。
下面的例子创建了一个登陆帐户:
这个例子创建了一个名为xs,密码是123456,默认数据库为northwind的帐户。
在建立用户的登录帐号信息时,用户应该选择默认的数据库,以后每次连接上服务器后,系统都会自动转到默认的数据库上。
这里也可以不指定数据库,系统默认为master库。
请同学将上例中的xs帐户改为各自学号,建立各自的登录帐户,默认数据库为student数据库,密码自行设计。
下面的各个实验均参照示例将xs修改为各自的帐户。
2.修改和删除帐户
建立完成的帐户信息还可以进行修改。
用户可以使用系统存储过程sp_defaultdb,sp_defaultlanguage来修改默认数据库和默认语言。
例如:
班级名称包括(信管011、信管013、信管022、信管024、信管026、、计科021、计科022、计科024、计科026),以上的班级名称是已经建好的数据库名,将你的帐户的默认数据库改为所属班级的数据库。
(系统默认是‘SimplifiedChinese’,建议使用默认项。
)
返回的结果是:
默认数据库已更改。
xs的默认语言已改为English。
使用系统存储过程sp_password可修改SQLServer的帐户密码,如:
该例子修改了xs的帐户密码。
要删除SQLServer标准登录帐户可以使用系统存储过程sp_droplogin,例如:
在SQLServer中删除帐户信息时,有很多限制。
主要有以下几种情况:
1)系统帐户sa不能被删除;
2)已经映射到数据库用户上的帐户不能被删除;
3)正在使用或连接的帐户不能被删除;
4)拥有数据库的帐户不能被删除
3.添加数据库用户
以上的操作只是建立了登录SQLServer的帐户,用户登录后还不能对数据库进行访问,将登录帐户添加为数据库用户后,使用登录帐户登录的SQLServer的用户就可以实现对数据库的访问。
添加数据库用户可通过存储过程sp_grantdbaccess来实现,参照下面的例子将你的帐户添加为student(该库是本课程的示例库)和班级名称(你所在班级的数据库名)两个数据库的用户。
4.删除数据库用户
可以使用系统存储过程sp_revokedbaccess来删除数据库用户,更确切地说,是断开SQLServer的登录帐户与数据库用户之间的对应关系。
返回结果为:
用户已从当前数据库中除去。
5.角色
角色是SQLServer2000引进的用来集中管理数据库或服务器权限的概念。
数据库管理员将数据库的权限赋予角色,然后将角色再赋予给数据库用户或登录帐户,从而是数据库用户或登录帐户拥有相应的权限。
SQLServer提供了固定服务器角色和数据库角色,用户可以修改固定数据库角色的权限,也可以自己创建新的数据库角色,在分配权限给新的角色。
1)固定服务器角色
使用系统存储过程sp_helpsrvrole可以浏览固定服务器角色的内容。
存储过程sp_addsrvrolemember可以将某固定服务器角色分配给某给定的登录帐户。
下面的操作将登录帐户xs添加为服务器角色dbcreatord的成员,使其具有创建和修改数据库的权利:
存储过程sp_dropsrvrolemember可以收回分配给某给定的登录帐户的指定固定服务器角色。
这个例子收回了分配给登录帐户xs的固定服务器角色dbcreator.
2)固定数据库角色
使用系统存储过程sp_helpdbfixedrole可以浏览所有的固定数据库角色的相关内容。
如:
用存储过程sp_addrolemember可将某个登录帐户增加到某个固定数据库角色中,从而使该帐户拥有指定固定数据库角色所拥有的所有权限。
进行下面的操作给你的帐户授予对student库的只读权限,xs换为你的帐户名。
下面的操作给你的登录帐户授予对你所在班级数据库的所有者权限,xs换为你的帐户名。
同样使用sp_droprolemember可以从某个固定数据库角色中删除指定的登录帐户,从而收回分配的对student库的只读权限。
完成所有上面操作以后,断开当前连接,使用本实验创建的个人登录帐户登录SQLServer服务器,登录成功后,可以看到当前默认操作数据库为你所在班级的数据库名即你的班级名称。
四.思考题
1.思考身份验证模式与登录帐号的关系及如何用各种帐号进行登录;
2.登录帐号、数据库用户及数据库角色之间的关系;
3.数据库用户、数据库角色与数据库对象之间的关系,并说出直接对用户授权与间接对用户授权(系统权限与对象权限)的方法;
4.固定服务器角色、固定数据库角色、自定义数据库角色与应用程序角色的区别与验证其权限的方法。
实验三E-R模型与关系模型的转换
一、实验目的
本章实验通过给学生一个设计实例,要求设计E-R模型,并分析。
然后选择熟悉的DBMS将给出的E-R模型转换为关系模型,并按要求实现创建数据库、数据表、表间关系等(修改表结构)。
二、实验准备
1.数据库设计
数据库设计的一个最基本的问题是如何建立一个好的数据库模式。
即给出一组数据,如何构造一个适合于它们的数据模式,使数据库系统无论是在数据存储方面,还是在数据操纵方面都有较好的性能。
E-R模型方法讨论了实体与实体之间的数据联系,现在来讨论实体内部属性与属性之间的数据关联,目标是要设计一个“好”的数据库模型。
2.概念结构设计
在需求基础上,用数据模型表示数据及其联系。
设计E—R图步骤:
1.设计局部E-R图。
概念结构设计依据是需求分析阶段的DFD/DD。
在DFD中选择适当层次的DFD,作为设计局部E-R图的出发点。
中层允许有一定的重叠。
1)确定实体集合
第一步(关键一步)
数据流/数据源/目的/数据存储根据具体情况决定,常作为实体集合。
2)联系
标明:
1:
1,1:
N,N:
M。
原则上:
与处理框相关的输入流(数据流),输出流(数据目的地),输入或输出的工作之间的可能存在的联系。
3)属性
属性名尽量和数据流中数据项名相同。
为简化E-R图,属性可仅在DFD中描述。
4)主关键字
属性中标明作为PK(primarykey)的属性集合.
5)其它
建E-R图,要完善DD(DD:
包括实体集,联系,属性的描述)某些情况:
描述产生频率(每年/月/季),是否长期保存,变化快慢,保密级别,存在的约束。
2、集成局部E-R图
在设计局部E-R图的基础上,将局部E-R图集成为全局E-R图。
集成时要解决的问题:
消除冲突、消除冗余
2.合并局部E-R图
合并局部E-R图中相同部分,尽可能的保留特殊部分,删除冗余部分,用累加的方式一次集成两个局部E-R图。
3.优化全局E-R图
必要时应对全局E-R图进行修改,重构和优化得到最佳的全局E-R图方案。
三、实验内容
1.数据模型分析
●设计一个教学管理系统
各部门对教学管理系统的要求:
学生处:
管理各院系班级学生的基本情况
教务处:
掌握学生各门课程的成绩情况
计财处:
管理学生每学期的学费收缴情况
各院系:
登录本院系学生各门课程的成绩
●具体E—R模型
2.E-R模型转换为关系模型
经过转换得到5个关系:
Department(dept_id,deparment,phone,director,no_class)
Student(student_id,class_id,name,gender,birthday,address,zip_code,householder)
Class(class_id,dept_id,class,abbreviation,monitor,levels,enroll_data,no_student)
Course(course_id,course,period,practice_period,credit)
Grade(student_id,course_id,grade)
3.数据字典设计
1)表名(具体建表时,在你的班级数据库中创建表,表名称由学生学号+示例表名构成。
比如student_idDepartment)
表名
含义
Department
院系
Class
班级
Student
学生
Course
课程
Grade
成绩
2)表结构
●Department
字段名
数据类型
字段含义
约束
Dept_ID
Decimal(5)
院系编号
PrimaryKey
Department
varChar(50)
院系名称
NotNull
Abbreviation
varChar(10)
院系简称
Phone
varChar(50)
联系电话
Director
varChar(50)
院系主任
No_Class
Decimal(5)
班级数
NotNullDefault0
●Class
字段名
数据类型
字段含义
约束
Class_ID
Char(7)
班级编号
PrimaryKey
Dept_ID
Decimal(5)
院系编号
ForeignKey
Class
varChar(30)
班级名称
NotNull
Abbreviation
varChar(20)
班级简称
Monitor
varChar(24)
班长
Level
varChar(4)
层次
NotNull大专、本科、硕士、博士
Enroll_Date
Decimal(5)
入学年度
NotNull
No_Student
Decimal(5)
人数
NotNullDefault0
●Student
字段名
数据类型
字段含义
约束
Student_ID
varChar(9)
学号
PrimaryKey
Class_ID
varChar(7)
班级编号
ForeignKey
Name
varChar(24)
姓名
NotNull
Gender
varChar
(2)
性别
NotNull男,女
Birthday
Datetime
出生日期
NotNull
Address
varChar(50)
家庭地址
Zip_Code
Decimal(6)
邮编
Householder
Varchar(50
家长
●Course
字段名
数据类型
字段含义
约束
Course_ID
varChar(8)
课程编号
PrimaryKey
Course
varChar(50)
课程
NotNull
Credit
Decimal(5)
学分
Period
Decimal(5)
学期
Practice_period
Decimal(5)
实习
●Grade
字段名
数据类型
字段含义
约束
Student_ID
varChar(9)
学号
ForeignKey
PrimaryKey
Course_ID
varChar(8)
课程编号
ForeignKey
Grade
Decimal(5)
成绩
NotNull
3)创建数据库
开始->程序->MicrosoftSQLServer2000->查询分析器出现如下画面
4)创建表SQL语句
实验四关系数据库标准语言SQL
一、实验目的
掌握向表中添加数据的方法
掌握如何快速的把一个表中的多行数据插入到另一个表中
掌握更新表中多行数据的方法。
学会如何删除表中的一行数据
学会如何删除表中的所有行
掌握SELECT语句的基本用法
使用WHERE子句进行有条件的查询
掌握使用IN,NOTIN,BETWEEN来缩小查询范围的方法
利用LIKE子句实现模糊查询,利用ORDER子句为结果排序
学会用SQLSERVER的统计函数进行统计计算
掌握用GROUPBY子句实现分组查询的方法。
掌握多表查询的技术和嵌套查询的方法。
二、实验准备:
1.常用的统计函数
sum()返回一个数字或计算列的总和
avg()对一个数字列或计算求列平均值
min()返回一个数字或一个数字表达式的最小值
max()返回一个数字或一个数字表达式的最大值
count()返回满足SELECT语句中指定条件的记录的值
count(*)返回找到的行数
注意:
对于以下类型的数据values值不用使用引号
1)整型数据类型:
bit,int,smallint,tinyint
2)货币数据类型:
money,smallmoney
3)数字数据类型:
decimal,numeric
4)浮点类型数据:
real,float
5)简单的日期/时间类型数据:
datetime,smalldatetime
对于以下数据类型就要对values值加单引号
1)字符数据类型:
char,varchar,text
2)复杂的日期/时间类型数据:
datetime,smalldatetime
2.添加语句
INSERT[INTO]