数据库-教务管理系统-综合实验报告
教务管理系统__数据库实习

数据库系统实验报告组长: 周珊组员:李邓鹏、孙辉、张希磊、魏佳、程威、黄鹏飞班号:材实1001指导教师:庞盛永各成员任务分配周珊:数据库的总体结构设计、及相关查询功能代码张希磊:数据库表的设计,实习报告的填写(需求分析、概念设计等)黄鹏飞:数据库表的设计,数据库的备份等后续工作李邓鹏:实习报告的填写、流程图的制作孙辉: E-R 图的绘制,部分查询代码的书写魏佳:逻辑结构的设计,协助报告书写程威:查阅资料、报告总结实习题目:HUB系统一、需求分析1 实体和关系:教务管理系统涉及的实体有:1、教师(教师号、姓名、职称、工资)2、学生(学号、姓名、性别、出生年月、年龄、家庭情况)3、班级(班号、班长)4、学院(学院名、学院主任)5、课程(课程号、课程名、学分)这些实体之间的相互联系如下:每个学生都属于一个班,每个班都属于一个学院,每个教师也都属于一个学院。
2、一名教师可以教多门课,一门课可以有几位老师,但不同老师讲的同一门课其课序号是不同的。
3、一名同学可以选多门课,一门课可被若干同学选中。
4、一名同学选中课程有相应成绩。
5、一个学院可以开很多门课,一门课只能由一个学院开。
2 实现功能:教学系统主要提供数据维护、选课和信息查询。
学校为方便教务管理,需开发一个教务管理系统。
为便于学生,老师,教务管理人员信息查询,注册以及信息修改,学校把学生的信息,包括姓名、性别、年龄,成绩等信息输入教务管理系统的数据库,然后在管理终端可以对数据进行查询和修改操作。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。
并要求系统界面要简单明了,易于操作,程序利于维护3、完整性要求:1、各种信息记录的完整性,关键信息记录内容不能为空;2、各种数据间相互的联系的正确性;3、相同的数据在不同记录中的一致性。
二、概念设计1、概念模型(E-R图):数据流流程图三 、逻辑结构设计E-R 图向关系模型的转换(关系的码用下横线表出) 1、教师(教师号、姓名、职称、工资)此为“教师”实体对应的关系模式。
教务管理系统数据库实训报告

教务辅助管理系统数据库设计数据库设计一般包括以下四个部分:数据库需求分析、数据库概念结构设计、数据库逻辑结构设计、数据库物理结构实现。
一、数据库需求分析:(1)通过调研得出教务辅助管理系统具备的功能:1)对上课教师基本信息进行管理。
2)对全院开设的课程进行管理。
3)录入教师基本上课信息。
4)实现自动排课功能。
5)简单计算工作量。
6)能够进行各种数据统计。
7)能够输出相应的报表。
8)具有数据备份和数据恢复功能。
(2)由以上功能得出数据库需求分析的DAD(数据流图)和DD(数据字典):<1>数据流图(DAD):图8.0 教务辅助管理系统最高数据流图图8.1.1教师基本信息管理数据流图图8.1.1 .A应聘数据流图图8.1.1. B编辑数据流图图8.1.2教师上课信息管理数据流图注:由于“编辑上课信息”与“图8.1.1 B编辑数据流图”类似,这里不再制定数据流图。
图8.2安全设置数据流图图8.3课程管理数据流图<2>数据字典(DD):1)教师基本信息,包括数据项有:教师编号、姓名、性别、职称、身份证号、专业、住址、电话等。
2)上课信息,包括数据项有:教师编号、姓名、性别、课程号、课程名称、上课时间、上课班级、月工资等。
3)课程信息,包括数据项有:课程号、课程名称、上课班级、上课时间、教师姓名等。
4)工资信息,包括数据项有:教师编号、教师姓名、月工资、总金额等。
二、数据库概念结构设计:根据上面设计规划出的实体,我们对各个实体具体描述的E-R图分析如下:(1)分E-R图:图1 教师基本信息E-R图图2 上课信息E-R图图3 课程信息E-R图图4 薪水信息E-R图(2)实体与实体之间的关系E-R图:三、数据库逻辑结构设计:教师基本信息表上课信息表课程信息表薪水信息表四、数据库物理结构实现:根据以上的逻辑分析所得到的表的关系,我们使用T_SQL语言得到数据库和数据表。
1、create database teacterHalpOn(Name=pos_dat,Filename=’D:\pos_dat.mdf’,Size=5,MaxSize=20,Filegroup=1)LOG on(Name= pos_log,Filename=’D:\pos_log.ldf’,Size=5,MaxSize=20,Filegroup=1)2、create table Teacher_information(T_no char (8) not nullconstraint PK_bno primary key,T_name char(8) not null,T_sex char(2) check CK_hy sex in(‘男’,’女’)not null,T_zc varChar(9) not null,T_sfno char(18) not null,T_zy varChar(20) not null,T_address varChar(20) not null,T_tel char(7) not null)go3、create table Class_information(T_no char(8) not null,C_no char(4) not nullconstraint PK_con primary key,T_salOne Money(4) not null)go4、create table Course_information(C_no char(4) not nullconstraint PK_don primary key,C_name char(8) not null,C_class char(8) not null,C_time char(8) not null)go5、create table Pay_information(T_no char(8) not nullconstraint PK_eon primary key,T_salOne Money(4) not null,T_salAll Money(4) not null)go五、数据库扩展功能实现:1、CREATE TRIGGER triger_1ON Class_informationafter insertupdata Pay_informationset T_salAll= T_salAll+(select Class_information from insert ) 2、3、4、。
数据库教务管理组织系统综合实验报告

数据库教务管理组织系统综合实验报告华北科技学院计算机系综合性实验实验报告课程名称《数据库系统A》实验学期2011 ⾄2012 学年第 2 学期学⽣所在系部计算机学院年级2010 专业班级⽹络B101班学⽣姓名学号任课教师实验成绩计算机系制_ 《数据库系统A》课程综合性实验报告开课实验室:软件开发实验室(⼀)2012年6⽉6⽇也被合并为班级的外码。
存在的函数依赖为Class →(Ccredit, Tno.Dno ),其中Class →Tno,⽽Tno →Dno,即存在对候选码的传递依赖,所以只满⾜2NF。
(2)设计合适的视图在将E-R图向关系模型转换后,还应根据局部应⽤的需求,对不同级别的⽤户定义不同的视图,这样不仅可以在视图中重新定义某些属性名,使⽤户使⽤更⽅便,⽽且还可以通过视图保证系统的安全性。
在本次的教务管理系统数据库中,我针对使⽤该数据库最频繁的学⽣和教师⽤户建⽴了相关视图,其中包括对系别、教师、课程的分配视图;对学⽣学号、成绩、等相关信息的查询和教师基本信息的查询等三个视图,这样,对这些经常使⽤的查询,⽤户就可以通过视图来查询,⼤⼤简化了⽤户的使⽤。
创建的三个视图的截图如下:教师授课安排视图:学⽣成绩查询视图:教师基本信息查询视图:4.物理设计该数据库中每⼀个关系模式的主码分别为系统⾃动设置的索引,如学⽣关系模式中的学号,教师关系模式中的⼯作证号,系别中的系别号等,同时,通过对实际操作的思考,为了查询某系的⽼师的⽅便,我们还需要在Teacher表中建⽴⼀个“系代号”Dno 的索引;⼜因为查询操作很多都通过学⽣姓名查找的,所以还需要在Student表姓名列sname上建⽴⼀个索引等,这样⼤⼤简化查询操作。
5.数据库的实现(1)创建库、表在该教务管理系统中包括了学⽣表、教师表、选课表、系别表、班级表、课程表、教师与班级的联系表等多个表。
在此,我以学⽣表为例进⾏说明表的创建。
另外,在创建表的同时还要注意有时需要创建两个表之间的级联,例如,此教务管理系统中SC表是参照学⽣表的学号和课程表的课号建⽴的,所以应该在SC表中建⽴其与Student表与Course表的级联;课程表⼜是参照教师表中的教师⼯作证号建⽴的,所以应该建⽴⼀个course表与教师teacher表的级联;班级表也是参照教师表中的教师⼯作证号建⽴的,所以也应该建⽴⼀个class表与教师teacher表的级联,这样当参照表发⽣改变时能同时在⽬标表中也发⽣相应改变,保证数据库中数据的正确有效性。
数据库实习报告-教务管理系统.

数据库系统课程设计学生姓名:班学号:指导教师:教务管理系统1、需求分析1. 1 信息要求:教务管理系统涉及的实体有:●教师——工作证号、姓名、职称、电话等;●学生—-学号、姓名、性别、出生年月等;●班级--班号、最低总学分等;●系——系代号、系名和系办公室电话等;●课程——课序号、课名、学分、上课时间及名额等。
这些实体之间的联系如下:●每个学生都属于一个班,每个班都属于一个系,每个教师也都属于一个系。
●每个班的班主任都由一名教师担任.●一名教师可以教多门课,一门课可以有几位主讲老师,但不同老师讲的同一门课其课序号是不同的(课序号是唯一的 .●一名同学可以选多门课,一门课可被若干同学选中。
●一名同学选中的课若已学完,应该记录有相应成绩.●本单位学生、教师都有重名,工作证号、学号可以作为标识.1。
2 处理要求:教学系统主要提供数据维护、选课和信息查询。
其中常见的查询有:系统中各对象的基本信息查询。
查询指定班、系的学生信息(名单、人数等 .查询学生的成绩、学分情况。
查询教师授课情况和学生选课情况……。
1. 3 安全性与完整性要求:●安全性要求:1。
系统应设置访问用户的标识以鉴别是否是合法用户, 并要求合法用户设置其密码, 保证用户身份不被盗用;2。
系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;3。
系统应对不同用户设置不同的权限,区分不同的用户,如学生,教师,系统管理员。
●完整性要求:1. 各种信息记录的完整性,关键信息记录内容不能为空;2。
各种数据间相互的联系的正确性;3. 相同的数据在不同记录中的一致性。
1. 4 系统功能的设计和划分根据如上得到的用户需求,我们将本系统按照所完成的功能分成以下几部分:第一部分:用户管理部分第二部分:管理员管理部分各部分完成的功能如下:1、用户管理部分1、处理用户注册2、处理用户登录3、用户可以查询学生信息。
4、用户可以查询快件信息.5、用户可以提交与查询报修信息。
教务信息管理系统实验报告

教务信息管理系统实验报告一、引言本实验旨在设计和实现一个简单的教务信息管理系统,通过该系统实现学生信息的录入、查询和删除功能,并能够对学生信息进行统计和打印。
二、系统概述本系统采用C++语言和面向对象的设计思想,具有用户友好的界面和易于操作的功能。
主要包括学生类、教务信息类和系统界面类三个类。
学生类用于存储学生的基本信息,包括学号、姓名、性别、年龄等。
教务信息类用于对学生信息进行管理,包括学生信息的输入、查询、删除和统计等。
系统界面类负责与用户进行交互,显示菜单选项供用户选择。
三、系统功能1.学生信息录入:通过输入学生的学号、姓名、性别、年龄等基本信息,将学生信息保存到文件中。
2.学生信息查询:根据学生的学号查询学生的基本信息,如姓名、性别、年龄等。
3.学生信息删除:根据学生的学号将学生的基本信息从文件中删除。
4.学生信息统计:统计学生的人数、男女比例、平均年龄等统计信息,并显示在界面上。
5.学生信息打印:将学生信息以表格形式打印出来,方便教务工作人员查阅。
四、系统设计1. 学生类设计:学生类包含学号、姓名、性别、年龄等属性,以及相应的get和set方法。
2.教务信息类设计:教务信息类包含学生信息的录入、查询、删除和统计等功能。
其中,学生信息的录入功能通过键盘输入学生的基本信息,并将其保存到文件中;查询功能通过输入学生的学号从文件中读取学生的基本信息并显示在界面上;删除功能通过输入学生的学号将学生的基本信息从文件中删除;统计功能通过读取文件中的学生信息进行统计并将结果显示在界面上。
3.系统界面设计:系统界面类负责显示菜单选项供用户选择,并根据用户的选择调用相应的功能。
五、系统实现1.学生类的实现:通过定义私有成员变量和公共成员函数的方式实现学生类。
其中,私有成员变量用于存储学生的基本信息,公共成员函数用于设置学生信息和获取学生信息。
2.教务信息类的实现:通过定义录入、查询、删除和统计等成员函数的方式实现教务信息类。
数据库 学生管理系统实验报告

计算机科学与技术学院数据库原理实验报告一、实验目的(1)掌握用《数据库系统原理》的知识设计计算机应用课题的思想和方法。
(2)理解和掌握E-R图的设计方法和关系模式的转换。
(3)掌握高级语言连接数据库的基本方法。
二、实验要求开发一个C/S或者B/S的数据库应用系统。
具体要求如下:1.前台开发工具不限制,后台数据库管理系统采用SQL SERVER。
2.后台数据库至少包含3张表。
3.开始启动界面为登录界面,完成用户身份、用户名和密码的验证。
要求用户身份至少有两种,必须通过对后台用户表的访问完成验证。
4.主窗体界面采用菜单操作方式。
并实现不同身份用户能使用的菜单功能不同。
5.窗体完成对基本表数据的信息的管理,具体包括:新增数据、修改数据、删除数据、根据给定条件查询数据。
三、实验结果1、应用系统的业务信息和管理工作的要求(1)系统目标1、学生信息、课程信息、成绩信息的增加、删除、修改、查询。
2、分别设置管理员权限和用户权限。
(2)功能需求分析本系统的功能需求分析如下:1、学生信息查询:学生可以根据学号、姓名等进行模糊查询。
2、学生信息管理:主要是用于学生信息更新、插入、删除。
3、学生成绩录入:用于学生成绩管理,录入学生成绩,也可以更新。
(3)性能需求分析1、登录、用户界面需求:简洁、易懂、易用、友好的用户界面。
2、安全保密性需求:只有凭借用户名和密码登陆系统,才能进行信息的管理等。
2、系统功能结构图3、数据库概念设计(含ER图)4、数据库逻辑设计教务处管理员用户表:AUser:教师用户表:TUser:学生用户表:SUser:学生表:Student:教师表:Teacher:课程表:Course:学生选课表:SC:5、数据库关系图6、视图形成的视图为:7、详细设计(1)登陆安全性检查。
系统会对每一个用户进行安全性检查,只有在数据库中拥有用户信息的才可以进入系统。
截图如下:(2)用户权限登陆用户在输入正确的密码和用户名称之后,点击“用户身份登陆”,就进入了用户界面,界面截图如下:在这个界面正可以查询课程信息,学生信息和学院信息,还可以查看统计信息。
数据库系统综合实训报告

一、实训目的本次数据库系统综合实训旨在使学生通过实际操作,掌握数据库系统的基本原理、设计方法以及数据库管理系统的使用技巧。
通过实训,学生能够提高数据库系统的设计、开发、调试和维护能力,为今后从事数据库相关的工作打下坚实基础。
二、实训环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:Visual Studio Code三、实训原理1. 数据库系统的基本概念:数据库、数据库管理系统、数据库设计、数据库安全等。
2. 数据库设计方法:E-R图、关系模式设计、范式理论等。
3. SQL语言:数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)等。
四、实训过程1. 数据库系统基本概念的学习在实训过程中,我们首先学习了数据库系统的基本概念,包括数据库、数据库管理系统、数据库设计、数据库安全等。
通过学习,我们对数据库系统的组成和功能有了初步的认识。
2. 数据库设计方法的学习接下来,我们学习了数据库设计方法,包括E-R图、关系模式设计、范式理论等。
通过学习,我们掌握了数据库设计的基本流程和规范。
3. 数据库管理系统的使用在实训过程中,我们使用MySQL数据库管理系统进行数据库的创建、修改、删除等操作。
通过实际操作,我们熟悉了MySQL数据库管理系统的界面和功能。
4. 数据库设计实践根据实训要求,我们以“学生管理系统”为例,进行数据库设计实践。
首先,我们分析了系统需求,确定了数据表结构,然后使用E-R图表示实体之间的关系。
接着,我们使用SQL语言创建数据库、表和视图,并进行数据插入、查询、更新和删除等操作。
5. 数据库安全与优化在实训过程中,我们还学习了数据库安全与优化方面的知识,包括用户权限管理、SQL注入防范、索引优化等。
通过实际操作,我们掌握了数据库安全与优化的方法。
五、实训结果1. 成功创建了一个“学生管理系统”数据库,包含学生信息、课程信息、成绩信息等数据表。
学校管理系统实验报告(3篇)

第1篇一、实验目的本次实验旨在通过设计和实现一个学校管理系统,提高学校管理工作的效率和质量。
通过本实验,学生能够掌握数据库的基本操作、编程语言的使用以及系统设计的流程,从而培养学生的实际操作能力和综合应用能力。
二、实验内容1. 需求分析- 确定系统功能:包括学生信息管理、教师信息管理、课程信息管理、成绩管理、教务管理等。
- 确定系统用户:包括学生、教师、教务管理员等。
2. 系统设计- 数据库设计:设计学生表、教师表、课程表、成绩表等。
- 界面设计:设计用户登录界面、学生信息管理界面、教师信息管理界面等。
3. 系统实现- 数据库实现:使用MySQL数据库创建数据库和表。
- 编程实现:使用Java或Python等编程语言编写系统代码。
- 界面实现:使用Swing或Tkinter等图形界面库设计用户界面。
4. 系统测试- 功能测试:测试各个功能的正确性和稳定性。
- 性能测试:测试系统在高并发情况下的性能表现。
- 安全测试:测试系统的安全性,防止非法用户访问。
三、实验步骤1. 需求分析阶段- 通过查阅相关资料,了解学校管理的基本流程和需求。
- 与学校管理人员沟通,确定系统需要实现的功能。
2. 系统设计阶段- 使用E-R图或数据库设计工具设计数据库结构。
- 设计系统界面原型,确定用户界面布局。
3. 系统实现阶段- 使用数据库设计工具创建数据库和表。
- 使用编程语言编写系统代码,实现各个功能模块。
- 使用图形界面库设计用户界面。
4. 系统测试阶段- 编写测试用例,对系统进行功能测试、性能测试和安全测试。
- 根据测试结果,对系统进行修改和完善。
四、实验结果1. 系统功能实现- 学生信息管理:包括学生信息的增删改查、成绩查询、班级管理等。
- 教师信息管理:包括教师信息的增删改查、课程安排等。
- 课程信息管理:包括课程信息的增删改查、选课管理等。
- 成绩管理:包括成绩的录入、查询、统计等。
- 教务管理:包括教务工作的安排、通知发布等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华北科技学院计算机系综合性实验实验报告课程名称《数据库原理及应用教程》实验学期2011 至2012 学年第 2 学期学生所在系部计算机学院年级专业班级学生姓名学号任课教师郭红实验成绩计算机系制《数据库原理及应用教程》课程综合性实验报告教师基信息与学生成绩查询视图:4.物理设计该数据库中每一个关系模式的主码分别为系统自动设置的索引,如学生关系模式中的学号,教师关系模式中的教师号,系别中的系号等,同时,通过对实际操作的思考,为了查询某系的老师的方便,我们还需要在Teacher表中建立一个“系号”Dno的索引;又因为查询操作很多都通过学生姓名查找的,所以还需要在Student表姓名列sname上建立一个索引等,这样大大简化查询操作。
5.数据库的实现(1)创建库、表在该教务成绩管理系统中包括了学生表、教师表、选课表、系别表、授课表、课程表六个表。
在此,我以学生表为例进行说明表的创建。
一个完整的表必须包括对实体完整性、参照完整性、用户定义完整性的三种完整性的定义。
在学生表中,首先考虑表的实体完整性要求,在该学生表中学号被设为主码,用PRIMARY KEY定义,且该表含有多个属性,所以学号就是表级约束条件,从而完成了学生表的实体完整性的定义。
其次,对于学生表的参照完整性,系号(Dno)是该学生表的外码,同时它还是班级系别Sdept表的主码,所以对其用FOREING KEY短语进行定义,并用REFERENCES短语指明该外码是参照那些表的主码,从而完成对表的参照完整性的定义。
最后,是表的用户定义完整性,在该学生表中,结合实际情况我们不难想到应该定义一个姓名Sname为非空的约束条件和性别Ssex只能为“男”或“女”二者选其一的约束条件,其中姓名的非空用NOT NULL定义即可,而性别用CHECK语句定义即可。
创建学生表的代码为:CREATE TABLE student(Sno CHAR(10)PRIMARY KEY,Sname CHAR(20)NOT NULL,Ssex CHAR(2)CHECK(Ssex IN('男','女')),Sage SMALLINT,Dno CHAR(10),FOREIGN KEY (Dno)REFERENCES Sdept(Dno));创建的学生表截图如下:(2)创建用户该教务管理系统的主要用户有学生用户,老师用户,教务管理员和系统管理员等四种,所以需要创建这四种类型的用户,并授予其相应的权限。
对于学生用户就只能授予其查询学生基本信息student表的权限,老师相关信息视图V-teacher表的权限,查询学生成绩视图V_student表的权限,以及查询教师授课TC表的权限;教师则具有查询学生基本信息Student表的权限,查询教师授课TC表的权限,还具有修改自己基本信息teacher表的权限,还有登记插入学生成绩信息即修改SC表的权限;教务管理员具有修改本系一切相关信息的权力,包括查询、删除、增添、修改,而系统管理员具有创建各种表、视图、触发器及存储过程并对各个用户进行相应授权的权力。
下面是建立学生(u1)、教师(u2)、教务处(u3)的用户(登陆名)截图:(3)使用触发器、存储过程等相关技术。
在教务成绩管理数据库中,鉴于存在教师的退休及学生退学或毕业的情况,所以必然会有删除这些信息的操作,为了方便起见,所以有必要设计一个“删除教师信息”触发器以及“删除学生信息”触发器。
同时教务成绩管理系统的数据库必然涉及到学生选课退课的问题,所以还需要设计一个关于选课退课系统的“选课”触发器与“删除选课”触发器。
“删除教师信息”与“删除学生信息”触发器的过程大致相同,就“删除教师信息”触发器来说,当删除教师时如果该教师在TC表中有其授课信息,则当删除该教师后必会引起TC表不可用,所以创建的该触发器当所要删除的教师号存在于TC表里时,系统就应该给出“TC表里有该教师的课程,请先删除TC表里的记录!”的提示信息;就“删除学生信息”触发器来说,如果该学生退学时在选课表里仍有其选课记录,则当删除该学生信息后,在SC表里的相关选课记录必然成为无效,所以在此设置了一个判断即将退学的学生是否能删除的触发器,当退学学生在SC表里有该学生的记录时应该给出“SC表里有该学生的选课课程,请先删除SC表里的记录!”的信息提示。
“删除教师信息”触发器操作演示如下所示:“选课”与“删除选课”触发器的过程大致相同,就“选课”触发器来说当所选课程的课程号存在于课程表里时,系统就会将该条的选课记录添加到SC表中,并给出“选课成功”的信息提示,同样删除选课与此类似,当要删除的选课的课程号存在于SC表时,系统就会将该条的选课记录从SC表中删除,并给出“删除选课成功”的信息提示。
演示执行“选课”触发器的操作结果截图如下:--选课触发器create trigger选课on SCfor insertasif exists(select Cno from course wherecno=(select cno from inserted))beginprint'选课成功'end这样在进行这些相关数据的处理时就可以通过触发器来控制,如果触发动作体执行失败,激活触发器的事件就会终止执行,触发器的目标表或触发器可能影响的其他对象不发生变化。
除了创建相应触发器外,教务成绩管理系统中还用到了数据库的存储过程,在本数据库中我建立了关于指定某个学号的“学生成绩查询”的存储过程,这样学生只需要输入自己的学号就可以查询出自己所选的科目以及其相应的成绩,存储过程的编译及其实现过程如下截图所示:其实,触发器就是一种特殊的存储过程,这样创建完成这些常用功能的存储过程后它们被编译后就能保存在数据库中,它们就像函数一样可以被反复调用,提高运行速度。
四、实验结果及分析这次实验报告我选择的是设计“教务成绩管理系统”的数据库。
通过本次自己独立的设计一个数据库,我更清楚了设计数据库的方法和步骤。
通过一步步的分析、实施、操作,我将理论联系于实际,并把课本上所学的和老师所讲的知识综合的运用起来,这样不仅使我加深了对SQL语句的理解,而且提高了对所学知识的熟练运用程度。
在实验过程中,我了解到创建表时也需要注意一些我们常常容易忽略的问题。
例如:建表中的元组顺序问题,还有一些表格中的属性列的完整性要求是在另一些表的属性列的基础上创建的,所以,这就存在创建表是的一些的顺序问题,如果不按照这个顺序建表,则建表必然会失败。
另外,在创建表的同时还得注意每个属性的数据类型,这个细节问题也是我们常常忽略的问题,对每个属性列都要根据实际情况确定相应的数据类型,并定义一定的长度大小,以提高空间利用率。
我在本次作业中的另一收获是明确了触发器中rollback语句的正确用法,当触发器所设定的操作能正确执行时就不需要添加rollback语句,而当触发器所设定的操作不能完成时需要用rollback语句回滚,并给出相应的提示信息。
这次大作业中,我也看出了我还存在的许多问题,在一些步骤中思考的不够缜密,对某些方面也有些疏漏之处。
所以,这就要求我们查询更多的信息,理论充分联系实际,多多参与在实际数据库的创建中去,在实践中积累经验,不断学习,才能提高自己在数据库方面的能力。
--一、创建表-- 建立系别表CREATE TABLE sdept(Dno CHAR(10)PRIMARY KEY,Dname CHAR(20)UNIQUE,Dphone CHAR(20),);-- 建立教师表create table teacher(Tno CHAR(10)PRIMARY KEY,Tname CHAR(20)not null,Tsex CHAR(2)CHECK(Tsex IN('男','女')),Prof CHAR(4),Tage SMALLINT,Dno CHAR(10),FOREIGN KEY (Dno)REFERENCES Sdept(Dno));-- 建立学生表CREATE TABLE student(Sno CHAR(10)PRIMARY KEY,Sname CHAR(20)NOT NULL,Ssex CHAR(2)CHECK(Ssex IN('男','女')),Sage SMALLINT,Dno CHAR(10),FOREIGN KEY (Dno)REFERENCES Sdept(Dno));-- 建立课程表CREATE TABLE course(Cno CHAR(10)PRIMARY KEY,Cname CHAR(20)UNIQUE,Credit SMALLINT,);--建立授课表CREATE TABLE TC(Cno CHAR(10),Tno CHAR(10),);-- 建立选课表CREATE TABLE SC(Sno CHAR(10),Cno CHAR(10),Grade SMALLINT CHECK(Grade>=0 AND Grade<=100),PRIMARY KEY (Sno,Cno),);------------------------------------------------------------学生的学号、成绩等信息查询的视图create view V_studentasselect student.Sno,Sname,cname,Credit,gradefrom student,SC,coursewhere student.Sno=SC.Sno ando=o--教师基本信息查询的视图create view V_teacherasselect Tname,Prof,Dnamefrom teacher,sdeptwhere teacher.Dno=sdept.Dno------------------------------------------------在教师表中系代号列上建立索引create unique index teadnoon teacher(Tno,Dno);--在学生表姓名列上建立索引create unique index stusnameon student(Sno,sname);-------------------------------------------------创建学生用户create login u1with password='111'use GRADEcreate user学生for login u1--对学生用户进行授权grant selecton studentto学生grant selecton V_studentto学生grant selecton SCto学生grant selecton TCto学生grant selecton V_teacherto学生--创建教师用户create login u2with password='111'use GRADEcreate user教师for login u2--对教师用户进行授权grant selecton studentto教师grant selecton TCto教师grant select,updateon teacherto教师grant select,insert,update(grade) on SCto教师--创建教务管理员用户create login u3with password='111'use GRADEcreate user教务处for login u3--对教务管理员用户进行授权grant select,update,insert,deleteon teacherto教务处grant select,update,insert,deleteon studentto教务处grant select,update,insert,deleteon sdeptto教务处grant select,update,insert,deleteon courseto教务处grant select,update,insert,deleteon sdeptto教务处grant select,update,insert,deleteon courseto教务处grant select,update,insert,deleteon TCto教务处grant select,update,insert,deleteon SCto教务处--------------------------------------------删除教师信息触发器create trigger删除教师信息on teacherfor deleteasif exists(select*from tc where tno=(select tno from deleted)) beginprint'course表里有该教师的课程,请先删除course表里的记录!'rollbackend--演示删除教师信息触发器的操作deletefrom teacherwhere tno='t1'--删除学生信息触发器create trigger删除学生信息on studentfor deleteasif exists(select*from sc where sno=(select sno from deleted))beginprint'SC表里有该学生的选课课程,请先删除SC表里的记录!'rollbackend--演示删除学生信息触发器的操作deletefrom studentwhere sno='s1'--选课触发器create trigger选课on SCfor insertasif exists(select Cno from course where cno=(select cno from inserted)) beginprint'选课成功'end--演示执行“选课”触发器insertinto SC(sno,cno)values('s1','c3')--查询选课结果select*from SC--删除选课触发器create trigger删除选课on SCfor DELETEASif exists(select Cno from sc where cno=(select cno from deleted))beginprint'删除选课成功'end--演示执行“删除选课”触发器deletefrom scwhere sno='s1'and cno='c3'--------------------------------------------------- --查询成绩的存储过程CREATE PROCEDURE查询成绩@sn char(10)asselect student.sno,sname,cname,Credit,gradefrom student,course,SCwhere student.sno=sc.sno ando=o andstudent.sno=@sn--查询学号为“s1”的学生成绩exec查询成绩's1'。