《毕业设计(论文)ASP.NET网上选课系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)ASP.NET网上选课系统设计.doc(46页珍藏版)》请在三一办公上搜索。
1、摘 要大学期间总会有很多公共选修课,以往的选课方法是随堂报名。这种方法虽然直接,但是造成选课的盲目性,有些课堂选课时人满为患,有些课堂无人选课。原因是传统的选课方法没有预见性,大家没有事先协调好。使用了网上选课系统以后,可以在开课前就在网上选课,每个学生的课程在开课前就确定好,不用浪费体力去选课,还可以使教学资源合理平均地分配。该B/S结构的系统在Windows XP系统和VS.NET平台下开发完成,使用C作为ASP.NET的开发语言,SQL Server 2000作为数据库。系统有较高的安全性和较好的性能。其中连接数据库的字符串可以随时在web.config里修改,并经过编码加密,增加了灵活
2、性,保护了数据库的安全。代码中通过使用进程中的Session、尽量使用存储过程和尽量减少数据库连接的打开时间等手段来提高性能。通过分析B/S结构的特点并结合我校公共选修课的实际情况,提出了基于B/S结构网上选课系统的基本设计思想,简要介绍了系统各功能模块及数据库的设计,着重讨论了用 ASP.NET技术和SQL Server 2000开发网上选课系统时的数据库访问技术和动态网页制作技术,并给出了部分实现代码。通过该系统,使学生可以方便地在校园网上进行网上选课。关键词:网上选课; 浏览器/服务器结构; 数据库管理系统; 存储过程ABSTRACTThere are many public elect
3、ive courses during university period, and always we should goto classroom to enroll. Although this method directly, but result in blindness of the course enrollment. Some classrooms overcrowding during course choosing period, on the contrary some classrooms desolate. The reason of this situation is
4、that the traditional method of course choosing lack prescience, and there are no prior coordination. With the help of public elective courses online course elect system, every students courses can be determined before the beginning of the term, saving physical force and reasonably distributing teach
5、ing resources.This B/S structure system is developed under VS.NET platform in Windows XP operating system, using C# as ASP.NET development language and SQL Server 2000 as the database. This system is of higher security and better performance. The character string, which is used to connecting to the
6、database, can be modified at any time in the file “ web.config”. The string is encoded and encrypted, increasing flexibility of the system and security of the database. In code, through using the Session in process, making use of stored procedure and minimizing the database opening time to improve p
7、erformance of the system.This paper gives the basic design idea of the B/Sbased online course elect system by analyzing the characteristic of the B/S structure and combining with the actual public elective courses conditions of our schoolIt introduces the function module and database design briefly,
8、followed by a discussion on database accessing technology and the active page technology of the course elect system based on ASP.NET and SQL Server 2000By using this system,students can elect courses online efficientlyKeywords: online course elect; B/S structure; DBMS; stored procedure目 录 绪 论1课题背景1课
9、题研究的目的和意义1国内外概况1BrowserServer结构2ASP.NET和ADO.NET2本文的工作4第一章 需求分析51.1 系统简介51.2 系统运行环境51.2.1 硬件平台51.2.2 操作系统51.2.3 应用软件及开发平台51.3 系统的功能需求51.4 系统的数据需求6第二章 系统设计72.1 系统的数据库设计72.1.1 数据流图72.1.2 数据字典82.1.3 系统的主要ER图102.1.4 模式图(shema diagram)112.1.5 表的设计122.1.6 数据库模式所达到的范式分析152.1.7 触发器的设计162.1.8 存储过程的设计172.2 系统功
10、能设计212.2.1 学生模块222.2.2 管理员模块22第三章 系统实现233.1 网业设计233.1.1 学生页面设计233.1.2 管理员页面设计273.2 功能模块设计283.2.1学生模块设计293.2.2管理员模块设计303.3 身份认证设计313.4 连接数据库的相关设计343.4.1 连接字符串相关问题343.4.2 绑定数据库数据的相关设计363.5 优化性能的相关设计373.5.1 使用存储在进程中的Session373.5.2 数据库连接打开的时间尽可能短383.5.3 使用带有参数的SQL命令383.5.4 使用SQL Server存储过程38总结与展望39致 谢41
11、参考文献42绪 论课题背景在信息全球化、网络化的今天,校园网已成为每所高校必备的信息基础设施,也成为学校提高教学管理水平的重要手段。为了更好地实现管理的科学化、现代化,进一步提高教学质量和管理水平,各种依托于校园网的管理信息系统应运而生。选修课网上选课系统就是这些信息系统中不可或缺的一员。以往的选课方法是随堂报名。这种方法虽然直接,但是存在很多弊病,如造成选课的盲目性,去不同的课堂报名的学生人数天壤之别,浪费学生的时间和体力,使教学资源不能得到合理的充分利用。这些都是因为传统的选课方法没有预见性,大家没有事先协调好。这就需要有一个选修课网上选课系统来改变这种现状,在课程开始之前就安排好各个学生
12、要上的课程,合理充分地利用好教学资源。课题研究的目的和意义课题研究的意义:(1) 给出解决传统选课方式浪费时间和精力的问题的方法,讨论实现一个网上选课系统的可行性,使在网上进行选课成为可能;(2) 对一个基于B/S结构的选修课网上选课系统进行设计并具体实现,做出一个可以完成基本选课功能及学生信息管理、教师信息管理和课程信息管理功能的MIS系统。国内外概况选修课网上选课系统已经出现很长时间了,实现该系统的方法也多种多样,主要有JSPMySqlTomcat,PHPMySqlApache,ASPSQL ServerIIS和ASP.NETSQL ServerIIS等。这些实现方法中前三种的开发语言都是
13、HTML设计代码和后台编程代码不分离的,造成代码不容易读懂和不利于后期维护。ASP.NET是微软推出的新一代开发工具,实现了HTML设计代码与后台编程代码的分离。该系统中使用ASP.NETSQL ServerIIS,主要考虑到同学们选课主要使用Windows系统,对ASP.NET支持良好,而且ASP.NET代码更易于维护。对于数据库存取操作,多数系统直接将SQL语句写在代码里进行数据库查询,在该系统中,绝大部分功能都使用存储过程来完成数据库访问的工作。BrowserServer结构Browser/Server(B/S)结构是一种以Web技术为基础的新型的MIS系统平台模式。他把传统的 C/S结
14、构中的服务器部分分解为一个数据服务器与一个或多个应用服务器(web服务器),从而构成一个三层结构的客户服务器体系1如图1.1所示。图1.1 三层B/S结构采用这种胖服务器端,瘦客户端的运行模式,主要的数据计算操作都在服务器端进行,应用程序也在服务器端安装,客户端不用安装应用程序,所有操作均通过浏览器来完成。与传统的C/S结构相比,它具备以下的优点: (1)简化了客户端,客户端软件仅需安装浏览器,客户端硬件配置要求较低。 (2)使用户的操作变得更简单,用户只需了解浏览器的使用,就可访问不同的应用,获取所需的信息。 (3)特别适用于网上信息发布与获取,使得传统的MIS的功能有所扩展。 鉴于B/S结
15、构的诸多优点与本系统的实际需求,最终决定采用 B/S结构。 ASP.NET和ADO.NETVisual Studio.NET是Microsoft公司推出的可视化编程工具,ASP.NET作为Visual Studio.NET 的组成部分之一,已经成为Internet中Web应用程序的新 一代开发工具,并逐渐被广大程序员普遍采用2。在微软的.NET战略中,ASP.NET是非常重要的一环,它相对于以前的ASP有了相当大的改进。相对于其他的Web应用开发模型来讲,ASP.NET具有更大的优势,其主要特点包括:ASP.NET与其前版ASP不同,它是在服务器上运行的编译好的公用语言运行时代码,可以更好地提
16、高程序运行性能。ASP.NET与语言无关,它可以采用C、VB.NET以及Jscript等支持.NET框架的语言来进行开发,开发者可以根据自己的情况进行选择。在这个系统中使用的是C作为开发语言。C是一门崭新的语言,学过C的很容易掌握它,而且它和Java也有很多相似之处。它具有开发效率高,应用范围广等特点,成为当前程序开发领域的一大热门。ASP.NET支持开发Web服务,它对XML技术提供了很好的支持,使得Web应用程序的开发更具可扩展性和跨平台性。ASP.NET提供了很多功能强大的服务器端控件,使得程序的开发更趋于简单化。同时,它还提供了HTML设计代码和后台编程代码分离的技术,并在后台代码开发
17、中提供强大的智能化支持,使得开发工具更具有条理性。采用ASP.NET技术开发的系统在性能上有了很大的改善,其主要表现在以下几方面: (1)由于ASP页面每次打开都必须经过先编译后解释的过程,所以页面在反复打开时速度没有任何提升,而ASP.NET页面只需要一次编译后不需要再重新编译,直到该页面被修改或 Web应用程序重新启动。这使得在多次访问时速度有了极大的提升。尤其在这种访问量很大,很多人同时并发访问的情况下,访问速度的提升更加明显。(2)由于ASP没有提供任何输出数据为内容的元件,所以在使用ASP撰写数据库页面时只能借助ADO的RecordSet对象逐笔读取记录,而ASP.NET 通过ADO
18、.NET提供的DataGrid等数据库元件可以直接和数据库联系。在这个选课系统中就是用DataGrid绑定查询结果来展示课程信息,并在DataGrid的列里绑定按钮进行相应的删除和编辑等操作。(3)ASP.NET支持应用程序的实时更新。管理员不必关掉网络服务器或者甚至不用停止应用程序的运行就可以更新应用文件。应用程序文件永远不会被加锁,因此甚至在程序运行时文件就可以被覆盖。当文件更新后,系统会温和地转换到新的版本。 (4)ASP.NET采取”codebehind”方式编写代码,使得代码更易于编写,结构更清晰,降低了系统的开发与维护的复杂度和费用3。ADO.NET用来访问数据库。与数据库相连,A
19、DONET提供了如下3种方式:通过ODBC相连;通过OLEDB相连;直接与SQL Server相连。3种方式由于应用层次的差异,使得效率由低到高,独立性由高到低。在这个系统中,使用SQL Server作为数据库,保证了系统的高效 4。传统的应用程序是通过先建立到数据库的连接,在程序的整个运行过程中维护连接的方式来设计的。ASPNET采取了断开连接方式的数据结构。当浏览器向Web服务器请求网页时,服务器处理这个请求,并将所请求的网页发送给浏览器,然后连接就被断开,直到浏览器发出下一个请求。ADONET的另一个创新是引人了数据集(Dataset)。一个数据集是内存中提供数据关系图的高速缓冲区。数据
20、集对数据源一无所知,它们可以由程序或通过从数据仓库中调入数据而被生成、填充。不论数据从何处获取,数据集都是通过使用同样的程序模板而被操作的,并且它使用相同的潜在的数据缓冲区。 本文的工作本文以 Visual Studio.NET为开发工具,使用ASP.NET(C)为开发语言5,以SQL Server 2000为后台数据库,在需求分析的基础上,提出了系统的设计,并最终实现了选修课网上选课系统.。系统的主要功能有: 课程信息的管理,教师信息的管理,学生信息的管理和学生网上选课的管理。第1章介绍了当前选课系统的发展现状,开发工具和一些背景知识。第2章对该系统进行了需求分析。第3至4章介绍了系统设计与
21、系统的具体实现。第一章 需求分析1.1 系统简介 这是一个在Visual Studio.NET集成环境中使用C开发出来的系统,可以在任何安装有IIS(Internet Information Services)和M framework的windows系统下安装服务器端,数据库可以放在本地,也可以放在网络上的任意位置。但是服务器和数据库连接的网络带宽要足够大,从而保证数据存取的快速有效。在任何装有浏览器并可以上网的电脑上都可以访问该系统。1.2 系统运行环境1.2.1 硬件平台Intel或AMD平台,CPU 1G以上,内存128M以上,硬盘10G以上。1.2.2 操作系统服务器在Windows操
22、作系统中,数据库在服务器可以访问的网络中,浏览器可以在Windows或Unix,Linux系统下。1.2.3 应用软件及开发平台服务器所在的电脑上应安装Windows操作系统,要安装IIS(Internet Information Services)和M framework。开发系统的电脑中要安装Visual Studio.NET开发环境和IIS及SQL Server2000,以便于调试。开发平台为Windows操作系统下的VS.NET平台,使用C作为开发语言。数据库语言为T-SQL6,可以编写存储过程(Stored procedure)和触发器(Trigger)。1.3 系统的功能需求系统需
23、要完成以下功能:(1)课程信息的管理,包括课程的录入,修改,删除等。(2)教师信息的管理,包括教师信息的录入和修改,删除等。(3)学生信息的管理,包括学生信息的录入,修改和删除,学生登录密码初始化等。(4)学生网上选课的管理,包括学生通过浏览器进行选课,取消选课,查询选课及修改登录密码等。这个系统有两种用户,一是学生用户,二是网络管理员,都通过浏览器访问系统。学生用户在这个系统中可以进行的操作不是很多,包括选课,取消选课,查询选课和修改登录密码等。但是因为学生用户很多,而且很可能同时选课,因此要增强系统的并发性,提高性能。网络管理员要进行课程信息、学生信息和教师信息的录入及维护,可以进行的操作
24、比较多,而且有比较大的风险性,因为对一些敏感操作要提醒进行确认;同时由于管理员比较少,不用太多考虑并发性。1.4 系统的数据需求系统需要数据库支持,该系统使用的是SQL Server 2000作为数据库。学生信息,教师信息和课程信息的录入由管理员完成。因为选课系统的数据不是十分海量,所以选用了对系统要求不是很高而且比较易用的SQL Server 2000,同时可以使用ADO.NET更方便地编写程序。在SQL Server 2000中新建一个名为WYH的数据库专门存放该系统所要用到的数据,并新添加一个名为WYH的用户只能访问这个数据库,从而减少数据库的风险。第二章 系统设计2.1 系统的数据库设
25、计数据库的设计是一个MIS系统中至关重要的部分,良好的数据库设计是一个系统成功设计并实现的先决条件。如果数据库设计得不好,系统可能会不稳定,而数据库的修改可能会造成整个系统都要推倒重新编写。可见数据库的设计是至关重要的。一般要求数据库中的关系模式都达到第三范式(3NF)。而存储过程、触发器也是一个基于SQL Server 2000的数据库中不可缺少的部分。2.1.1 数据流图数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出过程中所经受的变换。在数据流图中没有任何具体的物理元素,它只是描绘信息在软件中流动和被处理的情况。因为数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人
26、员也容易理解它,所以是分析员与用户之间极好的通信工具。 本系统的主要数据流图如图2.1和图2.2。图2.1 学生相关的数据流图图2.2 管理员相关的数据流图2.1.2 数据字典为了使各数据流,数据处理过程,存储过程能反映其中的数据层,数据项目,数据特性,所以用数据字典来对数据流图中的各成份进行具体的定义,为系统的分析,设计及以后的实现提供有关元素一致性定义和详细的描述。数据字典是为了描述在结构化分析过程中定义的对象内容而使用的一种半形式化的工具,是描述数据的信息的集合,是对系统中使用的所有数据元素的定义的集合。该系统的主要数据字典如表2.1、表2.2及表2.3所示:表2.1 系统的数据流说明数
27、据流名称数据流来源数据流去向平均/最高流量学生登录学生学生登录验证选课时很高,平时很少修改密码(学生)学生登录验证密码修改1选课时一般,平时很少选课学生登录验证选课处理选课时很高,平时没有删除选课学生登录验证删除选课选课时很高,平时没有查询选课学生登录验证查询选课选课时很高,平时较少管理员登录管理员管理员登录验证学期开始较多,平时较少修改密码(管理员)管理员登录密码修改2较少编辑学生信息管理员登录学生信息处理一般数据流名称数据流来源数据流去向平均/最高流量编辑课程信息管理员登录课程信息处理学期开始较多,平时较少编辑教师信息管理员登录教师信息处理一般初始化学生密码管理员登录学生密码初始化较少表2
28、.2 系统的数据流构成数据流数据组成学生登录学号,学生密码修改密码(学生)学号,学生旧密码,学生新密码选课学号,课程编号删除选课学号,课程编号查询选课学号管理员登录管理员编号,管理员密码修改密码(管理员)管理员编号,管理员旧密码,管理员新密码编辑学生信息学号,要更改的学生相关信息编辑课程信息课程编号,要更改的课程相关信息编辑教师信息教师编号,要更改的教师相关信息初始化学生密码学生学号,学生姓名表2.3 数据流的主要数据项详解数据项名含义别名数据类型长度取值范围取值含义与其他数据项的关系学号学生编号无字符串8字符数字唯一学生密码学生登录密码无字符串420数字、字母学生旧密码学生的原密码密码字符串
29、420数字、字母学生新密码学生的新密码密码字符串420数字、字母课程编号课程的编号无字符串7字符数字唯一管理员编号管理员的编号无字符串3字符数字唯一管理员密码管理员的密码无字符串420数字、字母学生姓名学生的姓名无字符串最多12字母、汉字2.1.3 系统的主要ER图实体关系(E-R)数据模型基于对现实世界的这样一种认识:现实世界由一组称为实体的基本对象以及这些对象间的联系构成。实体是现实世界中可区别于其他对象的一个“事件”或一个“物体”7。该数据库的主要E-R图如图2.3所示。图2.3 数据库设计的主要ER图为了节省篇幅,实体与属性的关系没有用图形表示,每个实体定义的属性如下,其标识码用下横线
30、画出:8院系: 院系简写,院系名称,院系负责人,院系办公电话学生: 学号,学生姓名,性别,年龄,登录密码教师: 教师编号,教师姓名,教师职称,教师性别,教师年龄课程: 课程编号,课程名称,任课老师编号,学时,课程容量,已选人数,开课周次,上课时间,上课教室,备注信息因为每个课程只有一个确定的任课老师,所以把任课老师作为课程的一个属性来存储,也不会出现冗余的现象,而且比较简单,查询信息的时候也避免了大量的自然连接操作,可以提高系统的性能。可是这样的话老师和课程的关系就隐含在属性中,不是那么明显。从数据库模式设计上来说,更好的方法是把课程和任课教师的联系作为一个新的关系模式,而不是把教师作为课程的
31、属性,这样即使一个课程有多个老师也可以表示,但是由于要多一个表,会多使用一定的存储空间。在这里使用了比较简单的方法。2.1.4 模式图(shema diagram)一个含有主码和外码依赖的数据库模式可以用模式图来表示,可以直观地展示出数据库各个表之间的外码依赖。该数据库的关系图如图2.4。7图2.4 数据库设计关系图2.1.5 表的设计表的设计又是数据库设计中最重要的部分,因为它决定了数据库的关系模式能达到哪个范式,是否会出现数据冗余的现象,是否存在数据不一致的风险,是否能达到实体完整性、数据完整性和用户定义完整性的要求。在这个系统中,最重要的是表有4个,包括学生信息表,教师信息表,课程信息表
32、和选课信息表。其中选课信息表是最经常存取的表,因为学生要选课、取消选课或查询自己的选课信息。学生信息表要包含学生的个人信息,还要包含登录选课系统的密码。教师信息表含有教师的信息。课程信息表包含了所有课程信息,而每个课程要有一个老师来上课(在本校的公选课里,每个公选课都有一个课程编号,对应一个任课老师,不同时间的相同课程的课程编号也不一样。所以可以认为每个课程编号只对应一个教师。而且通常情况下,课程编号不同的名称相同的课程也是由同一个老师来上的),所以这个表里有一个属性是教师编号,而教师编号是教师表的主码。选课表保存学生的选课信息。还有一个管理员表和院系信息表,其中管理员表用来记录管理员的基本信
33、息及登录密码,院系信息表用来存储院系信息,而学生和教师都只属于某个特定院系,所以学生表和教师表都有一个“院系编号”的属性,而“院系编号”是院系信息表的主码。各个表的具体设计如下:(1) 院系信息表(Department):这个表用来保存全校各个院系的信息,包括院系简写(dno),院系名称(dname),院系负责人(dmaster)和院系办公室电话(dtel)。一般情况下,每个院系有一个负责人,有一个办公电话。所以简单地这样设计这个表,当然实际情况中还应该有更多的属性。这个系统中只是为了说明学生和教师所在院系才引入这个表的。这个表的各属性详细信息如表2.4。表2.4 表Department的详细
34、说明是否主码属性名属性说明数据类型数据长度可否为空默认值是dno院系简写varchar15不可无dname院系名称varchar40不可无dmaster院系负责人varchar12可以无dtel院系办公电话char8可以无 (2)学生信息表(Student):这个表用来保存所有学生的信息,包括学生学号(sno),学生姓名(sname),学生所在院系(sdept),学生性别(ssex),学生年龄(sage)和学生登录密码(spwd)。学生学号是主码,唯一标识一个学生。学生性别只能为m(male)或f(female),学生年龄要在10岁和40岁之间。为了实际需要,所有项均不可以为空;学生登录密码初
35、始为“8888”,可由学生以后自行更改。学生所在院系(sdept)为外码,引用表Department的dno属性。这个表的各属性详细信息如表2.5。表2.5 表Student的详细说明是否主码属性名属性说明数据类型数据长度可否为空默认值是sno学生学号char8不可无sname学生姓名varchar12不可无sdept学生所在院系varchar15不可无ssex学生性别char1不可无sage学生年龄int4不可无spwd学生登录密码varchar20不可8888(3)教师信息表(Teacher);这个表用来保存全校教师的信息,包括教师编号(tno),教师姓名(tname),教师所在院系(td
36、ept),教师职称(ttitle),教师性别(tsex)和教师年龄(tage)。教师编号是主码,唯一标识一个教师。教师职称为“教授”、“副教授”、“讲师”等有实际意义的字符串,教师性别只能为m(male)或f(female),教师年龄要在20岁和80岁之间。为了实际需要,所有项均不可以为空。教师所在院系(sdept)为外码,引用表Department的dno属性。这个表的各属性详细信息如表2.6。表2.6 表Teacher的详细说明是否主码属性名属性说明数据类型数据长度可否为空默认值是tno教师编号char6不可无tname教师姓名varchar12不可无tdept教师所在院系varchar1
37、5不可无ttitle教师职称varchar16不可无tsex教师性别char1不可无tage教师年龄int4不可无 (4)课程信息表(Course):这个表保存着所有公共选修课的信息,包括课程编号(cno),课程名称(cname),任课老师编号(ctno),课程学时(cperiod),课堂容量(ccapacity),课程的已报名人数(cnumber),课程的开课周次(cweeks),课程的开课时间(ctime),课程所在教室(croom),课程信息备注(cremark)。课程编号是主码,唯一标识一个课程,同一个名称的课可以有不同的课程编号,认为是不同的课。课程学时为课程所对应的课堂节数,而16
38、个学时对应一个课程学分。因为一般来说选修课只有1学分,1.5学分,2学分这三种,所以学时只能在16和32之间,学分只能在1和2之间。而控制课程学时只能出现16,24,32这三种则需要在程序中进行限制(使用Dropdownlist控件而不是使用文本框TextBox,限制可以输入的内容)。输入课程信息时只用给出课程学时即可,学分在查询时自行算出。如果把学分当成这个表的一个属性,则学时决定学分,存在传递依赖,不符合第三范式。关于范式的具体论述见2.1.6节。表2.7 表Course的详细说明是否主码属性名属性说明数据类型数据长度可否为空默认值是Cno课程编号char7不可无Cname课程名称char
39、30不可无Ctno任课教师编号char6不可无Cperiod课程学时int4不可无Ccapacity课程容量int4不可无Cnumber已选人数int4不可0Cweek开课周次varchar20不可无Ctime开课时间varchar8不可无Croom上课教室varchar15不可无Cremark课程信息备注varchar40可以“” (5)选课信息表(SC):这个表存放所有的学生的选课信息,是这个系统中最常访问的表。该表包括学生学号(sno),课程编号(cno)和分数(mark)。其中学生学号和课程编号构成主码,也都是外码,分别引用了Student表的sno和Course表的cno。分数(ma
40、rk)则标识该选课的得分,默认为-1。在学期结束的时候,会有相应的分数,最低为0,最高为100。通过分数可以判定课程是该学期选的还是以前就选了并且通过的。一般情况下,如果公选课没有通过,则将该选课删除,而不是记不及格。所有分数为-1的课程为该学期所选,并通过相应手段控制一个学期最多选2门。这个表的各属性详细信息如表2.8。表2.8 表SC的详细说明是否主码属性名属性说明数据类型数据长度可否为空默认值是Sno学生学号char12不可无是Cno课程编号char7不可无Mark课程得分int4可以-1 (6)管理员信息表(Admin):存放管理员信息,包括管理员编号(ano),管理员名称(aname
41、),管理员电话(dtel),管理员密码(apwd)。其中管理员编号为主码,唯一标识一个管理员,管理员密码用来管理员登录时的身份验证。这个表的各属性详细信息如表2.9。表2.9 表Admin的详细说明是否主码属性名属性说明数据类型数据长度可否为空默认值是Ano管理员编号char3不可无Aname管理员姓名varchar12不可无Atel管理员电话varchar11可以无Apwd管理员密码varchar20不可无2.1.6 数据库模式所达到的范式分析一般而言,关系数据库设计的目标是生成一组关系模式,使之既不必存储不必要的重复信息,又可以方便地获取信息。所以要设计满足适当范式的模式。如果达到了第三范
42、式(3NF),就可以比较好地实现无冗余并不会出现更新或删除错误,不容易出现数据不一致的情况。下面讨论一下本系统所设计的数据库达到了哪个范式。先分析比较简单的Admin表和Department表,显然Admin表里管理员编号(ano)是主码,直接决定了其他三个属性管理员姓名(aname)、管理员电话(atel)和管理员密码(apwd),没有部分函数依赖和传递函数依赖,符合第三范式;Department表和Admin表差不多,院系简写(dno)直接决定了其他三个属性院系名称(dname)、院系负责人(dmaster)和院系电话(dtel),符合第三范式。表Student、表Teacher和表Cou
43、rse相对于先前分析的两个表来说,都多了一个外码。Student和Teacher的所在院系都为Department的主码,Course的任课老师为Teacher的主码。但是这三个表同样都是主码直接决定其他属性,不存在部分函数依赖和传递函数依赖,同样符合第三范式。表SC为选课信息表,它由学生学号sno和课程编号cno共同组成主码,而这两个又都是外码,主码能直接确定其他两个属性,不存在部分函数依赖和传递函数依赖,符合第三范式。如果把学分设计成Course表的一个属性,则学时决定学分,存在传递函数依赖,不符合第三范式。故不把学分设计成Course表的属性,而是在查询数据库时通过学时把学分计算出来展示
44、给用户。这样Course表中就不存传递函数依赖,符合第三范式。综上,该数据库模式符合第三范式(3NF)。2.1.7 触发器的设计触发器是一系列SQL语句的集合,当对数据库作修改时,它自动被执行。数据库就像存储普通数据一样存储触发器,所以它们被永久保存,也可以被所有的数据库操作访问。一旦把一个触发器输入数据库,只要指定的事情发生,相应的条件被满足,数据库系统就有责任去执行它。触发器可以帮助用户做许多很有用的事情,使用户要进行的操作更加简化,同时还可以避免某些数据不一致的情况。在这个系统所用的数据库中,就是为了简化操作、避免数据不一致而使用了触发器。在SC表中如果要插入一行的话,就表示某个学生选取了一门选课。那么这个时候对应的课程的已选人数(cnumber)会加一,留给其他学生的位置变少。这时考虑可以使用触发器实现这个功能:在SC表中建立一个触发器,每当插入一行的时候就触发,这个触发器的作用就是把SC表中增加的这行里对应的课程编号的已选人数(cnumber)在Course表中加一,这样简化了操作,只要在SC中插入一行即可,不用同时考虑Course表的相关动作。下面是这个触发器的代码:Create Trigger AddSCTriggerOn SCAfter InsertAs Set nocount on Declare cno cha