




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.数据库原理实验指导书英泰移动通信学院纽瑞孚学院二八年九月;ISQL SERVER数据库原理实验指导书目 录实验一 创建和修改数据库1实验二 创建和修改数据表6实验三 添加记录并建立查询10实验四 创建视图13实验五 创建索引14实验六 创建触发器15实验七 创建存储过程16实验八 备份和恢复数据库17实验九 综合练习数据库设计(一)19实验十 综合练习数据库设计(二)20课程设计21实验一 创建和修改数据库目的和意义学习创建和修改用户数据库的方法。实验内容分别使用SQLServer2000企业管理器和Transact-SQL语句,按下列要求创建和修改用户数据库。1. 创建一个数据库,要求如下
2、:(1) 数据库名"testDB"。(2) 数据库中包含一个数据文件,逻辑文件名为 testDB_data,磁盘文件名为testDB_data.mdf,文件初始容量为5MB,最大容量为15MB,文件容量递增值为1MB。(3) 事务日志文件,逻辑文件名为TestDB_log, 磁盘文件名为TestDB_log.ldf,文件 初始容量为5MB, 最大容量为10MB,文件容量递增值为1MB。2. 对该数据库做如下修改:(1) 添加一个数据文件,逻辑文件名为TestDB2_data,实际文件为TestDB2_data.ndf,文件初始容量为1MB,最大容量为6MB,文件容量递增值为
3、1MB。(2) 将日志文件的最大容量增加为15MB,递增值改为2MB。实现步骤方法一:使用企业管理器创建和修改数据库TestDB1. 设置常规选项卡(1) 在企业管理器的控制面板目录中选中结点"数据库",单击鼠标右键,在弹出菜单中选择"新建数据库"命令。(2) 设置新建数据库的常规选项卡,在"名称"文本框中键入数据库名称"TestDB"。如图1-l所示。图A12. 设置数据文件选项卡在“文件名”字段中键入数据文件名“TestDB_data”。设置该文件初始大小为5MB。图1-1选中“文件属性”对话框中的复选框“文件
4、自动增长”,并选中“按兆字节”设置文件容量递增值为1。在“最大文件大小”对话框中选择“将文件增长限制为(MB)”为15。如图1-2所示。图1-23. 设置事务日志选项卡(1) 在"文件名"字段中键入事务日志文件的逻辑文件名"TestDB_log"。设置该文 件初始大小为5MBo(2) 选中"文件属性"对话框中复选框"文件自动增长",并选中"按兆字节"设置文件容量递增值为1。(3) 在"最大文件大小"对话框中选择"将文件增长限制为(MB)"为10。如图1-3
5、所示。(4) 单击"确定"按钮,完成数据库的创建。 图1-3设置事务日志选项卡4. 修改事务日志文件属性(1) 从树状目录窗口中找到刚刚创建的数据库TestDB,单击鼠标右键,从弹出菜单中选择命令"属性",打开数据库TestDB的属性窗口。(2) 选择数据文件选项卡。在该选项卡中添加数据文件TestDB2_data,方法是:在"文件名"字段中键入数据文件逻辑文件名"TestDB2_data",设置该文件初始大小为 1MB,然后选中"文件属性"对话框中复选框"文件自动增长",并
6、选中"按兆字节"设置文件容量递增值为1,最后在"最大文件大小"对话框中选择"将文件增长限制为(MB)6。如图1-4所示。图1-4(3) 选择事务日志选项卡,在该选项卡中将事务日志文件的最大容量改为15,递增量改为2。如图1-5所示。图1-5方法二:使用Transact-SQL语句创建和修改数据库TestDB1. 创建数据库TestDBCREATE DATABASE TestDBON(NAME = TestDB_data,FILENAME=“D:Program filesMicrosoft sql servermssqldataTestDB_da
7、ta.mdf”,SIZE=5,MAXSIZE=15,FILEGROWTH=1)LOG ON(NAME = TestDB_log,FILENAME=“D:Program filesMicrosoft sql servermssqldataTestDB_log.ldf”,SIZE=5,MAXSIZE=10,FILEGROWTH=1)2. 修改数据库TestDBALTER DATABASE TestDBADD FILE(NAME = TestDB2_data,FILENAME=“D:Program filesMicrosoft sql servermssqldataTestDB2_data.ndf”
8、,SIZE=1,MAXSIZE=6,FILEGROWTH=1)GOALTER DATABASE TestDBMODIFY FILE(NAME=TestDB_log,MAXSIZE=15)GOALTER DATABASE TestDBMODIFY FILE(NAME=TestDB_log,FILEGROWTH=2)GO习题 建立学生选课的数据库stuDB, 逻辑文件名为 stuDB_data,磁盘文件名为stuDB_data.mdf,文件初始容量为10MB,最大容量为15MB,文件容量递增值为2MB。事务日志文件,逻辑文件名为stuDB_log, 磁盘文件名为stuDB_log.ldf,文件初始
9、容量为5MB, 最大容量为10MB,文件容量递增值为1MB。体会实验二 创建和修改数据表目的和意义熟悉有关数据表的创建和修改等工作,并了解主键、外键以及约束的创建和应用,熟练掌握使用企业管理器和CREATE TABLE、ALTER TABLE等Transact-SQL语句对数据表的操作方法。实验内容分别使用企业管理器和Transact-SQL语旬按下列要求创建两个数据表: 表B1项目数据表,表B2员工数据表,并按照步骤完成对表的相关修改和约束设置。项目表(Project)字段名数据类型字段长度注释项目编号int主键名称varchar长度为50负责人int客户int开始日期datetime结束日
10、期datetime员工数据表(Employee)字段名数据类型字段长度注释编号int主键姓名varchar长度为50性别varchar长度为50所属部门varchar长度为50工资money长度为8实现步骤方法一:使用企业管理器创建数据表并添加约束1. 打开企业管理器,在树状目录窗口中找到数据库节点TestDB,并选中下一级节点"表"。2. 单击鼠标右键,从弹出菜单中选择命令"新建表",打开表设计窗口,在窗口中按照"上机任务"中所列的"项目数据表"的字段及要求键入列名、数据类型、长度等属性,并将"项目编号
11、"设置为主键。如图2-l所示。图2-l创建"项目数据表"3. 单击"保存"按钮,在弹出的对话框中输入表名称"项目数据表",关闭表设计窗口,完成表"项目数据表"的刨建。4. 重复1-3步,创建另一个数据表"员工数据表",表设计窗口如图2-2所示。图2-2创建"员工数据表"5. 添加外键约束:在"项目数据表"的"负责人"字段上添加外键约束,参照字段为"员工数据表"中的字段"编号",约束名为F
12、K_pm。实现方法为:首先在企业管理器中选中"项目数据表"并单击鼠标右键,在弹出菜单中选择命令"设计表"打开设计表窗口。然后在该窗口中单击按钮"表和索引属性"按钮,打开表的"属性"对话框。最后选择"关系"选项卡,在改选项卡中做如下的操作。单击"新建"按钮;从"主键表"中选择"员工数据表",并选择字段"编号"从"外键表"中选择"项目数据表",并选择字段"负责人"
13、;在"关系名"中输入FK_pm。单击"关闭"按钮,完成外键约束的设置。6. 添加检查约束:将"员工数据表"中的字段"工资"的值限定在1000-10000,约束名CK_Salary。操作方法为:首先在企业管理器中选中"员工数据表"并单击鼠标右键,在弹出菜单中选择命令"设计表"打开设计表窗口。然后在该窗口中单击按钮"表和索引属性"按钮,打开表的"属性"对话框。最后选择"CHECK约束"选项卡,在改选项卡中做如下的操作:单
14、击标签中"新建"按钮;在"约束表达式"文本框中输入一个条件表达式;(工资>=1000 AND 工资<=10000)在"约束名"对话框中输入所建核查约束名"CK_Salary"。如图2-3所示。图2-3方法二:使用Transact-SQL语句创建数据表并添加约束1. 创建项目数据表USE TestDBGOCREATE TABLE 项目数据表(项目编号 int PRIMARY KEY, 名称 varchar(50),负责人 int, 客户 int,开始日期 datatime,结束日期 datatime)2.
15、 创建员工数据表USE TestDBGO(编号 int PRIMARY KEY,姓名 varchar(50),性别 varchar(50),所属部门 varchar(50)工资 money(8)3. 添加外键约束ALTER TABLE 项目数据表 ADD CONSTRAINT PK_pm FOREIGN KEY(负责人) REFERENCES 员工数据表(编号)添加检查约束ALTER TABLE 员工数据表ADD CONSTRAINT CK_pm CHECK(工资>=1000 AND 工资<=10000)习题 建立学生的基本信息表student、课程表course和选修课成绩表sc
16、.体会实验三 添加记录并建立查询目的和意义熟练掌握查询语句。实验内容向数据库TestDB中的两个数据表"项目数据表"和"员工数据表"中添加记录,如表Cl,C2所示。然后在查询分析器中书写Transact-SQL语句完成"实现步骤"中所列的任务。表c1项目数据表项目编号名称负责人客户开始日期结束日期1SiS2103/12/200006/12/20002SiS项目21104/06/200005/01/20003Pet2206/17/200008/17/20004Pet项目22209/01/200009/18/20005CCH3303/12
17、/200006/12/20006CCH_LXF4304/06/200005/01/20007CCH_ZHS7306/17/200008/17/20008CCH_LY9309/01/200009/18/20009CCH_LYAN19303/12/200006/12/200010PETER6404/06/200005/01/200011REALIDEA8506/17/200008/17/200012REALIDEA17509/01/200009/18/200013REALIDEA219503/12/200006/12/200014REALIDEA39504/06/200005/01/200015P
18、PA4606/17/200008/17/200016NBA4709/01/200009/18/2000表C2员工数据表编号姓名性别所属部门工资1陈有朋男项目部20002孙晓晴女项目部30003张晓峰男录入部10004慕容雪男检验部15005陈秋萍女检验部10006王理斌男检验部20007周晴晴女办公室30008杨亭亭女项目部25009马明宇男项目部400019刘燕女项目部3000实验要求1·书写语句查询项目数据表中客户字段的唯一值,并查看查询结果。参考答案:SELECT UNIQUE客户 FROM 项目数表;2·书写语句查询工资高于2000的项目部的人员的姓名。参考答案:S
19、ELECT姓名FROM员工数据表WHERE所属部门=“项目部"AND工资>2000;3·书写查询语句查询来自CCH公司的项目名称(以CCH开始)和负责人姓名。参考答案: SELECT a.名称,b.姓名 FROM 项目数据表 AS a , 员工数据表 AS bWHERE a.负责人=b.编号AND a.名称 LIKE “CCH%”;4书写语句查询每个部门的平均工资,结果按照平均工资的多少排序SELECT 所属部门,AVG(工资)FROM 员工数据表GROUP BY 所属部门ORDER BY AVG(工资);5使用外向联接输出所有的员工姓名和负责人的项目名称SELECT
20、员工数据表.姓名,项目数据表.名称FROM 员工数据表 LEFT JOIN项目数据表ON员工数据表.编号=项目数据表.负责人;6使用子查询输出所有负责 CCH公司项目(以CCH开始)的员工姓名,以及没有负责REALIDEA公司(以REALIDEA开始)项目的员工姓名 。SELECT 姓名 FROM 员工数据表 WHERE 编号 IN (SELECTDISTINCT 负责人 FROM 项目数据表WHERE 名称 LIKE'CCH%') SELECT 姓名 FROM 员工数据表WHERE 编号 NOT IN (SELECT DISTINCT 负责人 FROM 项目数据表WHERE
21、名称 LIKE'REALIDEA%');7·将所有REALIDEA公司的项目的结束日期更改为2002年1月8日 。UPDATE 项目数据表SET 结束日期= 'January 8, 2002'WHERE 名称 LIKE 'REALIDEA%;8·录入部的张晓峰决定辞职,请将员工数据库中有关他的记录删除,并将他负责的项目移交给杨亭亭。书写语句对数据表做相应的更改。DELETE员工数据表WHERE 姓名=“张晓峰”UPDATE 项目数据表 SET负责人=8WHERE负责人=3;习题在student , course , sc中 添加元组1
22、)从student , course , sc表中选择出当年年龄在20岁以上的学生的学号和姓名。2)统计平均年龄价格。3)“张三”同学要退学,请删除他的所有信息。 体会实验四 创建视图目的和意义掌握使用T -SQL语句创建视图的方法,包括视图的建立、删除、修改;了解如何应用视图有选择地查看所需数据,并熟悉通过视图更改数据表中数据的方法。实验内容在数据库Company_Data中,基于表"项目数据表"和"员工数据表"创建视图,要求为:(1) 视图名为"员工项目"。(2) 包含字段"编号"、"姓名"
23、、"名称"和"开始日期"。(3) 字段别名分别是"员工编号"、”员工姓名"、"项目名称"、"项目开始日期"。实现步骤 (1)打开查询分析器。在查询窗口书写CREATE VIEW语句创建视图,并指定字段别名:USE TestDBGOCREATE VIEW 员工项目(员工编号,员工姓名,项目名称,项目开始日期)ASSELECT a.编号,a.姓名,b.名称,b.开始日期,FROM 员工数据表 AS a INNER JOIN 项目表 AS bON a.编号=b.负责人WHERE a.编号=b
24、.负责人GO (2)使用INSERT语句通过视图向员工数据表中添加一条记录,要求"姓名"字段值为"马中兴"。USETestDBGOINSERTINTO 员工项目(员工姓名)VALUES('马中兴')GO (3)使用UPPDATE语句通过视图将第二步中插入记录的员工姓名改为"马中新"。USETestDBGOUPDATE员工项目SET 项目负责人= '马中新,WHERE 项目负责人=马中兴GO (4)执行系统存储过程 sp_rename将视图更名为"employee_project_VIEW "
25、。USETestDBGOEXEC sp_rename '员工项目', 'emp1oyee_project_VIEW'实验五 创建索引目的和意义掌握创建索引的方法。实验内容分别使用企业管理器和Transact-SQL语句在实验四的数据表"员工数据表"中基于"姓名"创建索引,要求索引名为"IDX_Name",索引类型为非聚集索引。实现步骤方法一,使用企业管理器 (1)打开企业管理器,在树状目录中展开数据表"员工数据表"所在的数据库节点TestDB,并选择其下一级节点"表&quo
26、t;。 (2)选择表"员工数据表",并单击鼠标右键。在弹出菜单中选择命令"所有任务管理索引",打开"管理索引"对话框。 (3)在"管理索引"对话框中的"数据库"下拉菜单中选择数据库表。 (4)选择"新建"按钮,弹出"新建索引"对话框。 (5)在"新建索引"对话框的"索引名"文本框中输入索引名称"IDX_Name",然后选择字段"姓名"并设置索引属性。如图5-l所示。图5-l创建
27、索引(6)设置索引选项以后,单击"确定"按钮,返回到"管理索引"对话框。(7)单击"关闭"按钮,退出"管理索引"对话框,完成索引的创建。方法二:使用T-SQL语旬USE TestDBGOCREATE INDEX IDX_Name ON 员工数据表(姓名)GO实验六 创建触发器目的和意义理解触发器的触发过程和类型,掌握创建触发器的方法。实验内容在数据库 Company_Data的表"项目数据表"和"员工数据表"中分别创建触发器。实现步骤 (1)打开查询分析器。 (2)在查询窗口
28、书写 CREATE TRIGGER语句,基于表"员工数据表"创建AFTER INSERT 触发器 Tigger_NewEmployeeSalary,将插入员工的工资额限制在 5000以内。USETestDB.GOCREATE TRIGGERTrigger_NewEmployeeSalaryON 员工数据表AFTER INSERTASIF (SELECT 工资 FROM inserted) > 5000BEGINPRINT '新员工工资不能超过5000'ROLLBACKENDGO(3)在查询窗口书写CREATE TRIGGER语句,基于表"员工
29、数据表"创建AFTER UPDATE触发器Trigger_SalaryChange,将员工工资变动额限制在2000以内。CREATE TRIGGER Trigger_SalaryChangeON员工数据表AFTER UPDATEASIFUPDATE(工资)BEGIN IF (SELECT MAX(ABS(inserted.工资一de1eted.工资) FROMinsertedJOINdeleted ONinserted.编号 = deleted.编号) > 2000BEGIN PRINT 工资变动不能超过 2000' ROLLBACKTRANSACTIONENDF.ND
30、实验七 创建存储过程目的和意义了解存储过程的概念和作用,掌握创建存储过程的方法。实验内容在数据库Company_Data中创建存储过程Procedure_SalaryByDept,要求返回某一特定部门所有员工的工资总和,其中特定部门的名称以存储过程的输入参数进行传递。实现步骤 (1)打开查询分析器。 (2)在查询窗口书写 CREATE PROCEDURE Transact-SQL语句创建存储过程Procedure_SalaryByDept,并带有一个输入参数Department用于传递部门名称,一个输出参数TotalSalary用于传递输出结果。CREATE PROCEDURE Procedu
31、re_SalaryByDept Department varchar(40),TotalSalary money OUTPUTAS (3)选择所属部门为该参数传递的部门名称的所有记录,并对其工资字段求和。 SELECT Tota1Sa1ary=sum(工资)FROM员工数据表WHERE所属部门=DepartmentGO(4)报告该部门的工资总额。PRINT'该部门的工资总额+CONVERT(varchar,TotalSalary)GO(5)执行这个创建存储过程的语句。(6)执行系统存储过程sp_help查看该存储过程的一般信息。(7)执行该存储过程,分别计算项目部、录入部、和检验部的工
32、资总额。(8)用ALTTER PROCEDURE语句将存储过程加密。实验八 备份和恢复数据库目的和意义理解数据库备份的过程和属性设置,掌握使用企业管理器备份数据库的方法。实验内容使用SQLServer2000企业管理器备份和恢复数据库TestDB.实现步骤 (1)打开企业管理器,在控制面板目录中选择数据库TestDB。 (2)单击鼠标右键,从弹出菜单中选择命令"所有任务备份数据库"。 (3)在出现的"SQLServer备份"对话框中选择"常规"选项卡。 (4)在该选项卡中的"名称"文本框中键入"TestD
33、B数据库备份"。 (5)在"描述"文本框中键入"备份集1"。 (6)在"备份"对话框中选中"数据库-完全"选项,如图8-1所示。 (7)单击"添加"按钮,在弹出的对话框中选择"备份设备",然后从下拉列表中选择备份使用的备份设备(注意:如果没有现成的备份设备,应在备份以前创建一个 具体方法参见相关章节)。(8)单击"重写现有媒体"选项按钮。 (9)单击""选项"选项卡,在该选项卡中选中"完成后验证备份&quo
34、t;复选框。 (10)单击"确定"按钮,出现"备份进度"对话框,备份完成后,将弹出消息框"备份操作及其验证已成功完成”。 (11)单击"确定"完成数据库的备份。 (12)完成数据库的还原,方法如下: 从企业管理器的树状目录窗口中选择需要还原的数据库TestDB,单击鼠标右键,从弹出菜单中选取命令"所有任务/还原数据库",打开"还原数据库”对话框。如图8-2所示。然后在该对话框中选择"还原-从设备,单击"选择设备"按钮,并从弹出的对话框中选择备份设备TestDB_ba
35、ckup。 最后选择"还原备份集"下的"数据库-完全",单击"确定"按钮执行数据库的还原。图8-1图8-2实验九 综合练习数据库设计(一)1.目的:使学生对使用 SQL Server 来设计一个数据库应用系统有一个初步的了解。2要求:在高校物资管理中,入库时要签发入库单、固定资产卡、登记物资明细帐;出库时要签发领用申请单、登记物资发放卡和转移单。此外,还有物资报损、调出情况请分析设计一个高校物资管理信息系统的数据库并在SQL Server2000 上实现。该数据库要能实现以下几点要求:(1)能在这个数据库上实现高校物资管理的整个业务流
36、程。(2)能使用SQL Server 提供的默认和规则来-维护数据的正确性。(3)能使用SQL Server 提供的约束、触发器来维护数据的完整性。 3体会。实验十 综合练习数据库设计(二)1.目的:使学生对使用 SQL Server 来设计一个数据库应用系统有一个初步的了解。2要求:同上。在高校物资管理中,入库时要签发入库单、固定资产卡、登记物资明细帐;出库时要签 发领用申请单、登记物资发放卡和转移单。此外,还有物资报损、调出情况请分析设计一个高校物资管理信息系统的数据库,并在SQL Server2000 上实现。该数据库要能实现以下几点要求:(1)使用存储过程来实现一部分复杂的应用逻辑。(
37、2)为不同的用户设计不同的用户视图。3体会。l 数据库课程设计示例综合教务系统分析和设计本节综合教务系统为例,说明数据库应用系统的设计过程。本系统的分析和设计过程主要包括:需求分析;概念结构设计;逻辑结构设计;应用系统的模块设计;应用系统的用户界面设计。由于本应用系统比较简单,而我们的重点在于数据库应用系统的分析和设计,所以,本例中没有给出物理结构设计,读者可自行考虑物理结构设计,建立合适的索引,提高查询速度;对数据库系统的实施和维护也没有给出。5.4.1 需求分析1 系统目标:实现一个计算机综合教务管理系统,完成班级信息管理,学生信息管理,课程信息管理和学生选课管理等功能。2 系统功能需求:
38、本系统的用户分为超级用户和普通用户两类,超级用户负责系统维护,包括对班级信息,学生个人信息,课程信息的录入,修改,查询,删除等。普通用户即选课学生则只具有为自己选课的权限。(1) 功能划分:用户通过身份验证后进入主界面。主界面为超级用户提供6项选择:学生信息管理,课程信息管理,班级信息管理,选课,口令修改和退出系统。普通用户有4项功能选择:选课,课程查询,口令修改和退出系统。(2) 功能描述:l 班级信息管理:给出所有班级的列表,超级用户可以实现增加,修改,查找,删除班级信息,维护指定班级所有学生信息,为指定班级设定必修课和选课学分限制等功能。在维护指定班级学生信息功能中,超级用户可以实现增加
39、,修改,删除学生信息,察看某一学生选课情况,为学生更改口令等功能。在指定班级必修课功能中,以课表形式列出班级所有必修课的课程信息,实现为一个班级增加或删除必修课的功能。l 学生信息管理:给出所有学生的列表,超级用户可以增加,修改,删除,查找学生信息,察看某个学生选课情况,为学生修改口令等功能。本项功能与班级信息维护功能中的维护指定班级学生信息功能相似,不同的是本项功能中将列出所有班级的所有学生信息。l 课程信息管理:加入,修改,删除课程纪录,察看某门课的选课情况,查询指定的课程信息。l 选课:以课表的形式列出学生选课情况,学生可以为自己选修或者退选课程,而超级用户可以为任何学生选修或者退选课程
40、。每个班级都有选课的学分限制,不允许学生选择课程的总学分超过所在班级的选课最大学分限制,而当退出选课功能时,如果选取课程总学分未达到所在班级选课最小学分限制则给出警告信息(因为学生可以多次进入选课界面选课)。l 修改口令:用户需要输入原口令,并且两次输入新口令一致后,系统即用新口令代替旧口令。l 退出系统:当用户退出系统时,如果选取的课程总学分未达到所在班级选课最小学分限制,则给出警告信息。3 开发工具:该综合教务系统的数据库采用了Microsoft的SQL Server2000企业版,前台应用程序采用了JSP编写,提供了Web界面方便学生从网上使用。由于采用了JDBC数据库接口,因此很容易修
41、改为支持ORACLE,SYBASE,DB2等数据库,该系统的结构为B/S结构,即浏览器/服务器结构。4 系统的数据流图:了解用户的应用要求,使用信息流程图分析应用系统中的信息流。综合教务系统的简单信息流如下。(1)系统的上下文数据流图如图5-38录入或更新学生、课程、班级信息选课/退选学生、班级、选课教学情况报表选课表 成绩表监控权限 密码综合教务系统学生教务管理员系统管理员系统管理员教务管理员学生图5-38 综合教务系统的上下文数据流图 (2) 学生选课的数据流图如图5-39学生班级信息身份验证选课申请选课处理审核通过的选课申请学生描述信息学生信息验证不通过选课信息记录选课成功已选课程班级描
42、述信息课程信息课程描述信息上课时间信息课程上课时间班级和课程信息班级必修课程图5-39 学生选课的数据流图5. 数据字典数据项名:学生编号说明: 标识每个学生身份类型: CHAR长度: 7别名: 学号取值范围:970000979999数据流名:选课申请说明: 由学生的个人信息,欲选课程信息组成选课申请来自过程:无流至过程:身份验证数据结构:学生个人信息 欲选课信息数据结构:学生个人信息说明: 说明了学生的个人情况。组成: 帐号 密码数据存储:上课时间信息说明: 说明了每门课的上课时间,一门课可以有多个上课时间,同一时间可以有多门课程在上课。输出数据流:课程上课时间数据描述:课程编号 上课时间数
43、量: 每学期2030个存取方式:随机存取处理过程:身份验证说明: 对学生输入的帐号,密码进行验证,确定正确,得到相应的学生编号。输入: 学生帐号 密码 选课的课程编号输出: 学生编号 选课的课程编号5.4.2 数据库的概念设计1系统的概念模型:班级学分限制班级名学生学号姓名性别生日属于必修课程选修上课时间上课课上课时间授课教师接纳人数课号课名学分1mmnmmnn选课系统DEMO概念模型的E/R图上图是选课系统DEMO的概念模型的E/R图,该系统涉及的实体集有:班级实体集:具有属性班级名称和选课学分限制。学生实体集:具有属性学号、姓名、性别和生日。课程实体集:具有属性课程号、课程名、学分、授课教
44、师、接纳人数。上课时间实体集:具有属性时间。一个班级可以有多个学生,一个学生只能属于一个班级,所以班级和学生之间的联系为1:M的联系。一个班级可以有多门必修课程,一门课程是多个班级的必修课,所以班级和课程之间的必修联系是M:N的联系。一个学生课以选修多门课程,一门课程可以被多个学生选修,所以学生和课程之间的联系是M:N的联系。一门课程可以有多个上课时间,同一时间内可以有多门课程在上课,所以课程和上课时间的联系是M:N的联系。5.4.3 将概念模型转换成关系模型1. 将E-R模型转换为关系模式 (1) 班级实体集可以转换为关系:CLASS(CLASSNAME,MAXCREDIT,MINCREDI
45、T)CLASSNAME表示班级名称,MAXCREDIT表示最大学分限制,MINCREDIT表示最小学分限制。 (2) 学生实体集可以转换为关系STUDENT(STUDENTID , NAME , SEX , BIRTHDAY)STUDENTID表示学号,NAME表示姓名,SEX表示性别,BIRTHDAY表示生日 (3) 课程实体可以转换为关系COURSE(COURSEID, COURSENAME, CREDIT, TEACHER, ACCEPTION)COURSEID表示课程号,COURSENAM表示课程名,CREDIT表示学分,TEACHER表示授课教师,ACCEPTION表示接纳人数。 (
46、4) 班级和学生之间的联系是1:M的联系,所以没有必要为其建立一个关系,可以通过扩展学生关系来表示:STUDENT(STUDENTID , NAME , SEX , BIRTHDAY , CLASSNAME)CLASSNAME表示学生所在班级名。 (5) 班级和课程之间的必修联系可以转换为关系:CLASSCOURSE(CLASSNAME , COURSEID)CLASSNAME表示班级名称,COURSEID表示课程号。 (6) 学生和课程之间的选修联系可以转化为关系:STUDENTCOUSE(STUDENTID, COURSEID)STUDENTID表示学号,COURSEID表示课程号。 (7
47、) 课程和上课之间的联系可以转化为关系:COURSETIME(COURSEID , TIME)COURSEID表示课程号,TIME表示上课时间。2. 数据库表结构设计:把关系模型转化为表结构:班级信息表(class):包含所有的班级信息,定义如下:域名含义数据类型例子备注CLASSNAME班级名称字符类型计71主码MAXCREDIT最大学分限制数值类型30MINCREDIT最小学分限制数值类型20学生信息表(student):包含所有学生的个人信息,定义如下:域名含义数据类型例子备注STUDENTID学号字符类型971329主码NAME姓名字符类型王强SEX性别字符类型男BIRTHDAY生日日
48、期类型79/07/15CLASSNAME班级名称字符类型计71外码课程信息表(course):包含所有课程信息,定义如下:域名含义数据类型例子备注COURSEID课程号字符类型000001主码COURSENAME课程名称字符类型数值分析CREDIT学分数值类型4TEACHER任课教师字符类型刘强ACCEPTION接纳人数数值类型28班级必修课表(classcourse):包含所有班级的必修课信息,定义如下:域名含义数据类型例子备注CLASSNAME班级名称字符类型计71外码COURSEID课程号字符类型000001外码学生选课表(studentcourse):包含所有学生的选课信息,定义如下:
49、域名含义数据类型例子备注STUDENTID学号字符类型971329外码COURSEID课程号字符类型000001外码上课时间表(coursetime):包含所有课程的上课时间,定义如下:域名含义数据类型例子备注COURSEID课程号字符类型000001外码COURSETIME上课时间数值类型21表示星期2第1节COURSETIME是一个整数,整除10的商表示星期几上课,余数表示当天的第几节课。用户账号表(user):包含所有用户的账号和口令信息,定义如下:域名含义数据类型例子备注USERID用户账号字符类型ADMINUSERPASSWD用户密码字符类型ADMINUSERAUTH用户权限数值类型
50、0STUDENTID用户学号字符类型971329USERAUTH用0,1表示用户权限,0表示管理员,1表示普通用户。其中普通用户的STUDENTID为学生的学号。3实现数据完整性:通过各种约束,缺省,规则和触发器实现数据的完整性。由于教务系统的重要性,和各个数据之间的复杂相关性,保证数据的完整性显得更为重要。不能让用户随意的删除,修改数据。(1) CHECK约束保证最大限选学分要大于最小限选学分。(2) 各种外码约束保证数据的完整性,不能随意删除。外码的设置在上面数据库建表时已经提到。(3) 主码约束保证实体的完整性,主码的设置在上面数据库建表时也已经提到了。(4) 创建规则保证学生的年龄在1
51、8岁到35岁之间(出生日期在1965-1-1到1982-12-31日之间),不会输入错误数据。(5) 创建触发器,保证在添加学生信息的时候,自动将该班级的必修课添加到选课表中。以上只是该教务系统中实现数据完整的部分方法。实际上要考虑的还有很多方面,实现手法也是多种多样。在此留给学生自己思考。5. 数据库的安装安装SQL SERVER2000,作为数据库服务器,并用ODBC设置SQL SERVER的数据源;也可以直接采用JDBC直接进行连接。5.4.4 应用程序设计1. 选课系统DEMO的处理流程图: 开始 用户登录 合法? 用户选择服务 选择退出? 执行服务操作退出NNYY Y 2. 总体结构
52、和外部模块设计:口令验证模块 主模块班级信息管理模块学生信息管理模块课程信息管理模块选课模块口令更改模块退出5.4.5 编程实现:下面给出系统的主要用户界面。其他的操作界面用户可以自行设计实现。1Login.jsp这是系统的登录界面,用户可以选择以学生或管理员身份登录,并要输入相应的用户名称,密码。2AdminIndex.jsp这是系统管理员登录成功的界面,左侧有管理员管理的各项职权。(1) 按下班级信息管理,进入Class.jsp,进行班级信息维护管理。(2) 按下学生信息管理,进入Student.jsp,进行学生信息维护管理。(3) 按下课程信息管理,进入Course.jsp,进行课程信息
53、维护管理。(4) 按下选课管理,进入CourseSelect.jsp,进行选课。(5) 按下口令修改,进入ChangePasswd.jsp,更改用户口令。(6) 按下退出,退出本系统。上述界面是在用管理员登录时才能看到,其中班级信息维护管理和相应的增加新班级功能为登陆后的默认选项。3Class.jsp在右上方的班级信息管理界面中,可以增加新的班级,修改原有班级信息,删除原有班级。(1) 增加新班级:在右下角的相应文本框中输入增加的班级名称,最大、最小学分限制,点击确定后,如果没有重复的班级名称,而且最大学分限制大于最小学分限制,则成功加入新的班级。(2) 修改原有班级:在右下角的相应文本框中输
54、入修改的班级名称,点击确定后,下方文本框中会出现原有的最大最小学分限制。输入新的学分限制后,如果该班级的所有学生已经选课的总学分符合新的学分限制标准,则修改成功。(3) 删除原有班级:在右下角相应文本框中输入欲删除的班级名称,点击确定后,如果该班级所有学生都已经被删除,并且该班级所有必修课都已经被删除,则可以将该班级删除。4Student.jsp在右上方的学生信息管理界面中,可以增加,修改,删除学生的个人信息。(1) 增加新学生,在右下角的文本框中输入相应的学生学号,姓名,生日,班级,性别信息,点击确定按钮,如果存在相应的学生班级,并且学生学号不重复,则可以成功的添加新学生到该班级。(2) 修
55、改学生信息:在右下角的文本框中输入相应的学生学号,点击确定按钮,则可以在相应文本框中看到该学生原有的个人信息。可以进行修改。注意修改的班级必须为已经存在的班级,学号不能与已经存在的学号重复。(3) 删除学生信息:在右下角的文本框中输入相应的学生学号,点击删除按钮,则可以删除相应的学生个人信息,注意在选课表中,该学生的所有选课信息必须全部删除。5Course.jsp在右上方的课程信息管理界面中,可以完成增加,删除,修改选修课程的功能。(1) 增加新课程:在右下角的相应文本框中输入课程号,课程名称等信息,然后点击确定按钮,如果在数据库中没有重复的课程编号,则可以完成添加一门新课程到数据库中。注意在输入增加的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业园区生态修复与环保设施建设合同
- 碳中和产业园区共建与运营合作协议
- 网络直播数字调音台扩展卡租赁及品牌推广合作协议
- 网络新闻用户数据保密协议
- 小红书平台合作人权益保护与营销支持服务协议
- 医疗机构中患者隐私与知情权平衡协议
- 互联网企业版权保护与知识产权代理合同
- 航空器部件制造与检测技术服务合同
- 抖音短视频内容创作者权益保护与收益分配协议
- 中老铁路物流运输车辆排放达标与环保治理合作协议
- 【MOOC】外国教育史-河南大学 中国大学慕课MOOC答案
- 抗肿瘤药物管理工作组成员及职责
- 2024年辽宁省中考生物真题卷及答案解析
- 第47届世界技能大赛江苏省选拔赛计算机软件测试项目技术工作文件
- 2024年湖南高考真题化学试题(解析版)
- 多元热流体发生器在提高稠油采收率中的应用
- 江苏科技大学《工程流体力学》2021-2022学年第一学期期末试卷
- 危险化学品事故应急处理规章制度
- 飞艇项目运营指导方案
- GB/T 44570-2024塑料制品聚碳酸酯板材
- 高考真题+知识总结+方法总结+题型突破44导数中的函数零点问题专题练习(学生版+解析)
评论
0/150
提交评论