自动排课系统——数据库大作业
数据库实验大作业

数据库实验大作业一、介绍在数据库实验大作业中,我们将深入研究数据库相关的主题。
本文将从数据库的基本概念、数据模型、数据存储和查询优化等方面进行全面、详细且深入地探讨,以满足作业的要求。
二、数据库基本概念2.1 什么是数据库数据库是指长期存储在计算机内、有组织、可共享的数据集合。
它通过数据模型将现实世界的对象和关系映射为计算机可以理解的数据结构。
数据库管理系统(DBMS)是用于管理数据库的软件系统。
2.2 数据库的组成数据库由数据、数据库管理系统(DBMS)和数据库应用程序三部分组成。
数据是数据库中存储的实际信息,DBMS是管理和操作数据库的系统,数据库应用程序是通过DBMS访问数据库的程序。
2.3 数据库的优势数据库具有以下优势:•数据共享:多用户可以同时访问数据库,提高数据的共享性和使用效率。
•数据独立性:数据库将数据与应用程序分离,保证数据的独立性,提高系统的可维护性和可扩展性。
•数据一致性:数据库可以通过事务机制确保数据的一致性和完整性。
•数据安全性:数据库可以通过权限控制和加密机制保证数据的安全性。
三、数据模型3.1 关系型数据模型关系型数据模型是最常用的数据库模型之一,它以表格(关系)的形式组织数据。
表格由行和列组成,每行表示一个实体记录,每列表示一个属性。
3.2 非关系型数据模型非关系型数据模型是相对于关系型数据模型而言的,它不依赖于固定的表格结构。
非关系型数据模型可以分为键值对存储模型、文档存储模型、列存储模型和图形存储模型等。
3.3 数据模型的选择在选择数据模型时,需要根据实际情况和需求考虑各种因素,包括数据的结构、访问方式、数据量和性能要求等。
四、数据存储4.1 数据库的存储结构数据库的存储结构是指数据库中数据在存储介质上的组织方式。
常见的数据库存储结构包括堆存储结构、索引存储结构和散列存储结构等。
4.2 数据库的物理存储数据库的物理存储是指数据库在存储介质上的具体存储方式。
常见的数据库物理存储方式包括顺序存储、链式存储和哈希存储等。
数据库大作业

数据库大作业XXX数据库大作业——学生成绩管理系统学院(系):专业:学生姓名:学号:指导教师:评阅教师:完成日期:1.数据库设计1.1 系统名称学生成绩管理系统1.2 背景介绍1.2.1 概述学生成绩管理系统是学校教学管理系统的一个功能模块,可以方便地对学生成绩进行管理,包括学生成绩录入、查询和修改等。
本系统主要需要实现以下功能:院系信息管理:包括录入、修改和查询院系信息,提供给管理人员和院系管理人员进行查询。
班级信息管理:包括录入、修改和查询班级信息,提供给管理人员和本班级班长进行查询。
学生信息管理:包括录入、修改和查询学生信息,提供给管理人员和学生个人进行查询。
课程信息管理:包括录入、修改和查询课程信息,提供给管理人员和授课教师进行查询。
学生成绩查询:提供给学生个人,能够查询本人的各项成绩,但不能录入和修改。
课程成绩查询:提供给教授本门课程的老师,能够查询、修改、删除成绩,能够对数据进行分析,例如求得平均分、优秀率、不及格人数等。
1.2.2 信息需求分析1)院系信息管理:包括录入、修改和查询院系信息,提供给管理人员和院系管理人员进行查询。
2)班级信息管理:包括录入、修改和查询班级信息,提供给管理人员和本班级班长进行查询。
3)学生信息管理:包括录入、修改和查询学生信息,提供给管理人员和学生个人进行查询。
4)课程信息管理:包括录入、修改和查询课程信息,提供给管理人员和授课教师进行查询。
5)学生成绩查询:提供给学生个人,能够查询本人的各项成绩,但不能录入和修改。
6)课程成绩查询:提供给教授本门课程的老师,能够查询、修改、删除成绩,能够对数据进行分析,例如求得平均分、优秀率、不及格人数等。
1.3 数据库的概念模型设计一个学生属于一个院系,一个院系包含多个学生;一个学生属于一个班级,一个班级包含多个学生;一个学生可以选多门课程,一门课程可以包含多个学生。
1.3.1 实体与属性分析学生:学号、姓名、年龄、性别、地址、系号、班级号课程:课程号、课程名、学分、学时院系:院系号、院系名、电话1.3.2 E-R图班级——班级号、人数、班长学号分数院系——拥有学生、研究课程属于班级关系模型:学生(学号、姓名、性别、地址、系号、班级号)候选码:学号主码:学号外码:系号、班级号课程(课程号、课程名、学时、学分)候选码:课程号主码:课程号2.1.2建立班级表create tableclass(classno char(5) primary key。
数据库系统大作业设计总结

数据库系统大作业设计总结在进行数据库系统大作业设计的过程中,我通过学习与实践,深入了解了数据库系统的原理与应用。
在设计总结中,我将从需求分析、数据库模型设计以及系统实现和优化等方面进行总结。
首先,在进行大作业设计之前,我进行了充分的需求分析。
通过与客户沟通和讨论,我了解到了他们的具体需求和期望。
在这个阶段,我主要关注数据的组织结构、数据之间的关系以及用户的查询需求等方面。
通过对需求的深入分析,我能够更好地设计数据库模型和优化系统性能。
其次,根据需求分析的结果,我进行了数据库模型的设计。
在这一步骤中,我使用了ER图来表示实体和实体之间的关系,并将其转化为关系模式。
在设计过程中,我注重规范化以及模型的简洁性和灵活性。
通过合理地选择主键、外键和索引等,我能够保证数据的完整性和一致性,提高系统的查询效率。
在数据库模型设计完成后,我开始着手实现系统。
我选择了合适的数据库管理系统以及编程语言,并根据设计的模型创建了相应的表和约束。
在编写查询语句时,我注重语句的效率和可读性,避免了潜在的性能问题。
同时,我还进行了系统的安全性设计,包括用户权限管理和数据加密等措施,以确保数据的机密性和完整性。
在系统实现完成后,我进行了一系列的性能优化工作。
首先,我对系统的查询语句进行了优化,通过合理地使用索引和优化查询计划等手段,提高了查询的效率。
其次,我对数据库的表结构进行了优化,包括拆分大表、合并小表以及优化字段类型和长度等。
最后,我还对系统进行了压力测试和性能调优,通过监控和调整系统的各项指标,提高了系统的并发处理能力和响应速度。
总的来说,数据库系统大作业设计是一项复杂而又有挑战性的任务。
通过这次设计,我不仅掌握了数据库系统的基本原理和应用技巧,还提高了自己的分析和设计能力。
同时,我还深刻体会到了数据库设计对系统性能的重要性,以及如何通过合适的优化手段提高系统的性能和可用性。
这次设计为我今后在数据库领域的学习和工作打下了坚实的基础。
数据库技术及应用课程数据库系统原理课程大作业任务书

《数据库系统原理》课程大作业任务书、选题每班同学不可以从所给的10 个中任选一题完成作业,必须从客观实际出发自己选题完成作业。
在同一个班,要求1~2 人一题,原则上选题不能相同。
①商品销售管理系统的设计与实现②图书管理子系统的设计与实现③药品管理子系统的设计与实现④校运动会子系统的设计与实现⑤库存管理子系统的设计与实现⑥学生选课子系统的设计与实现⑦人事管理子系统的设计与实现⑧工资管理子系统的设计与实现⑨项目管理子系统的设计与实现⑩门诊管理子系统的设计与实现二、目标通过对本综合性实验的训练,学生能够比较熟练地掌握数据库的系统构成、关系型数据库、SQL语句、查询优化、数据库的安全保护以及数据库的设计方法。
通过大作业的训练,使得学生全面掌握SQL-SERVE数据库的使用方法,加深对数据库的理解,尤其是完整性约束的理解,深刻体会团队开发的力量,为学生后续课程的学习以及开发大型软件打下良好的基础。
三、对象选修《数据库系统原理》课程的全体同学。
四、要求①要求每个小组的学生进行需求分析、概念设计、逻辑设计和物理设计,并在SQL-SERVER20I数据库上实现所设计的数据库。
②要求每个学生熟练掌握SQL-SERVER200数据库的体系结构,熟练掌握SQL-SERVER200数据库的脚本语言,以及实际运用SQL-SERVER200数据库的能力③要求每个学生熟练运用SQL-SERVER200数据库来解决实际问题。
熟练运用触发器完成复杂的完整性约束,使用存储过程和函数完成相应复杂的数据查询、数据统计和企业业务处理等工作,使用视图、SQL-DC语言、触发器和存储过程实现相应的安全控制。
④培养每个学生提出问题、分析问题和解决问题的能力,老师提出问题,由学生通过大量阅读文献、上网求助、不断探索来完成任务,提高既具有熟练驾驭工具的能力又具有自主创新的素养。
⑤每个班每人为一组单独完成,培养学生的自主学习能力和创新能力,学会编写标准文档,涉及的文档包括综合性实验报告、需求分析、概念设计、逻辑设计和物理设计,最终在SQL-SERVER20I数据库上实现。
数据库大作业实训报告

一、实训背景随着信息技术的飞速发展,数据库技术在各行各业中扮演着越来越重要的角色。
为了提高学生的数据库应用能力,培养实际操作经验,本学期我们进行了数据库大作业实训。
本次实训旨在通过实际操作,让学生深入理解数据库的基本原理、设计方法和应用技术,提高学生的数据库应用能力。
二、实训内容1. 实训目标(1)掌握数据库的基本概念、原理和设计方法;(2)熟练运用SQL语言进行数据库操作;(3)学会使用数据库设计工具,如PowerDesigner、MySQL Workbench等;(4)具备独立设计和开发数据库应用系统的能力。
2. 实训内容(1)数据库设计:包括需求分析、概念结构设计、逻辑结构设计和物理结构设计;(2)数据库开发:包括创建数据库、创建表、插入数据、查询数据、更新数据、删除数据等;(3)数据库管理:包括数据库备份、恢复、用户权限管理等。
三、实训过程1. 需求分析本次实训以学生信息管理系统为例,分析并确定系统的功能需求。
主要包括以下模块:(1)学生信息管理:包括学生信息的录入、修改、删除、查询等;(2)课程信息管理:包括课程信息的录入、修改、删除、查询等;(3)成绩管理:包括学生成绩的录入、修改、删除、查询等;(4)教师信息管理:包括教师信息的录入、修改、删除、查询等。
2. 概念结构设计根据需求分析,设计学生信息管理系统的概念结构图。
主要包括以下实体:(1)学生:包括学号、姓名、性别、年龄、班级、联系方式等属性;(2)课程:包括课程编号、课程名称、学分、上课时间、上课地点等属性;(3)成绩:包括学号、课程编号、成绩等属性;(4)教师:包括教师编号、姓名、性别、职称、联系方式等属性。
3. 逻辑结构设计根据概念结构图,设计学生信息管理系统的逻辑结构图。
主要包括以下表:(1)学生表(Student):包含学号、姓名、性别、年龄、班级、联系方式等字段;(2)课程表(Course):包含课程编号、课程名称、学分、上课时间、上课地点等字段;(3)成绩表(Score):包含学号、课程编号、成绩等字段;(4)教师表(Teacher):包含教师编号、姓名、性别、职称、联系方式等字段。
数据库课程设计大作业

数据库课程设计大作业一、教学目标本课程的教学目标是使学生掌握数据库的基本概念、原理和设计方法,能够运用数据库技术解决实际问题。
具体目标如下:1.理解数据库的基本概念,如数据、数据库、表、关系等。
2.掌握数据库的设计原理,如实体-关系模型、E-R图等。
3.熟悉数据库的操作语言,如SQL语句。
4.了解数据库的性能优化和事务管理。
5.能够使用数据库管理系统(如MySQL、Oracle等)进行数据库的创建、表的设计、数据的增删改查等操作。
6.能够运用实体-关系模型和E-R图进行数据库的设计。
7.能够编写简单的SQL语句进行数据库的操作。
8.能够对数据库的性能进行简单的优化。
情感态度价值观目标:1.培养学生的团队合作意识,能够协同完成数据库的设计和操作。
2.培养学生对数据库技术的兴趣,认识到数据库在现代社会中的重要性。
3.培养学生认真负责的学习态度,养成良好的编程习惯。
二、教学内容根据课程目标,教学内容主要包括以下几个方面:1.数据库的基本概念:数据、数据库、表、关系等。
2.数据库的设计原理:实体-关系模型、E-R图、关系模型等。
3.数据库的操作语言:SQL语句的编写和应用。
4.数据库的性能优化:索引、分区、事务管理等。
5.数据库的实际应用案例:关系型数据库和非关系型数据库的使用场景。
6.数据库的基本概念(2课时)–数据的定义和分类–数据库的概念和功能–表的概念和基本操作7.数据库的设计原理(4课时)–实体-关系模型–E-R图的绘制和转换–关系模型的概念和性质8.数据库的操作语言(6课时)–SQL语句的编写和应用–数据库的增删改查操作–数据库的高级查询功能9.数据库的性能优化(2课时)–索引的使用和优化–分区和分表的概念及应用–事务管理的基本原理10.数据库的实际应用案例(2课时)–关系型数据库(如MySQL)的使用场景–非关系型数据库(如MongoDB)的使用场景三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合的方式进行教学。
数据库大作业总结

数据库大作业总结在数据库大作业中,我学到了很多关于数据库设计和实现的知识和技巧。
这次大作业要求我们创建一个完整的数据库系统,包括数据库设计、表结构的创建、数据的插入和查询等。
首先,我学会了如何进行数据库设计。
在设计数据库时,我们需要考虑到数据库的目标和需求,确定数据库的主题和范围。
然后,我们需要分析数据库中的实体和关系,将其转化为实体关系模型(ER模型)。
在ER模型的基础上,我们可以继续进行表结构的设计,确定每个表的字段和数据类型。
在完成数据库设计之后,我学会了如何使用SQL语句创建表结构和插入数据。
SQL语句是数据库管理系统与用户之间进行交互的语言。
通过使用SQL语句,我们可以创建表格、定义字段以及插入数据。
我学会了创建主键和外键,以及如何利用索引来提高查询效率。
接下来,我学会了如何编写SQL查询语句。
通过使用SELECT语句,我们可以从数据库中检索所需的数据。
我学会了使用WHERE子句来过滤数据,使用ORDER BY子句来排序数据,以及使用JOIN语句来连接多个表。
这些查询语句可以帮助我们根据特定条件来获取所需的数据。
在数据库大作业中,我还学会了如何进行数据库的备份和恢复。
数据库的备份是为了防止数据丢失或损坏,可以通过创建数据库的镜像或者将数据导出为文件的方式来进行备份。
而数据库的恢复则是在数据库出现故障或数据丢失时,将备份的数据重新导入到数据库中。
总的来说,通过这次数据库大作业,我对数据库的设计和实现有了更深入的理解。
我学会了如何进行数据库设计,如何创建表结构和插入数据,以及如何编写SQL查询语句。
这些知识和技巧对于我未来的工作和学习都非常有帮助。
数据库大作业

一、大作业目的和要求目的:掌握数据库设计的基本方法;综合运用掌握的数据库知识与技术开发设计某小型数据库应用系统。
内容从应用出发,分析用户需求,设计数据库概念模型、逻辑模型、物理模型,并创建数据库,优化系统参数,了解数据库管理系统提供的性能监控机制,设计数据库的维护计划。
要求1、结合某一具体应用,调查分析用户需求,做出需求分析文档;2、设计数据库概念模型;3、选择一数据库管理系统,根据其所支持的数据模型,设计数据库的逻辑模型,并针对系统中的各类用户设计用户视图;4、在所选数据库管理系统的功能范围内设计数据库的物理模型;5、根据所设计的数据模型创建数据库,并加载若干初始数据;6、了解所选数据库管理系统允许设计人员对哪些系统配置参数进行设置,以及这些参数值对系统的性能有何影响,再针对具体应用,选择合适的参数值;7、了解数据库管理系统提供的性能监控机制;8、在所选数据库管理系统的功能范围内设计数据库的维护计划。
报告主要内容1、数据库设计各阶段的书面文档,说明设计的理由;2、各系统配置参数的功能及参数值的确定;3、描述数据库系统实现的软件、硬件环境,说明采用这样环境的原因。
4、说明在数据库设计过程碰到的主要困难,所使用的数据库系统在哪些方面还有待改进。
提交内容A: 设计报告一份,包含需求分析;概念设计(画出相应的E-R 图);创建数据库及表结构;按照实际情况在数据库中输入部分数据;设计并进行相应的检索操作;设计过程中遇到的问题或者感想。
B:提交学习报告一份,包含自己对数据库的理解及学习感悟。
题目:参考大作业备选题目,但不限于此,也可以自拟题目。
注:总量不能少于12 页,格式参考毕业设计论文撰写规范。
、大作业备选题目及描述1 图书借阅管理子系统设计本系统模拟学生在图书馆借阅图书的管理内容,包括查询图书、借书、借阅后的查询、统计、超期罚款等的处理情况,简化的系统需要管理的情况如下:1、可随时查询出可借阅图书的详细情况,如图书编号(BN0)、图书名称(BNA)、出版日期(BDA)、图书出版社(BPU)、图书存放位置(BPL)、图书总数量(BNU)等,这样便于学生选借。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自动排课系统一.系统需求1该“自动排课系统”只是对数据库应用技术的一个样本数据库的实例,重在对数据库一些方法的熟悉与掌握,其中包括从数据库的概念模型到ER图的绘制,再到数据库模式的建立(即为数据库及其基本表的建立),而后数据的录入(在此从略),最后完成一些简单的关系运算表达式的表达和相关的Select 查询语句的使用。
2系统结构简述:2.1本系统包括六个实体:课程,学生,教室,教师,学院,班级2.2实体之间的多对多联系:教学计划,选课2.2.1一个学生可选多门课,一门课可被多个学生选修。
2.2.2一门课可使用多个教室,一个教室可被多门课占用。
2.3实体之间的一对多联系:教学,隶属,从属,属于,开设2.3.1一个学院有多个教师,一个教师只隶属于一个学院。
2.3.2一个学院有多个班级,一个班级只隶属于一个学院。
2.3.3一个学院可开设多门课程,一门课程只能被一个学院开设。
2.3.4一个班级有多名学生,一个学生只隶属于一个班级。
2.3.5一个老师可教多门课程,一门课程只能被一个老师教。
实体之间的关系转换为其他三个表:教学(一对多),教学计划(多对多),选课(多对多)。
注:各个基本表中关键字已在关系模式中说明。
3经过分析,得到自动排课系统的如下功能:3.1部分属性插入时添加默认值。
3.1.1为选课表中属性是否重修创建并绑定默认值’NO’。
3.1.2为教师表中属性是否可用创建并绑定默认值’YES’。
3.2对教学计划表插入数据时检查数据是否合理。
3.2.1当插入课程人数多于教室容量的数据时,无法插入数据。
3.2.2当插入课程占用不可被占用的教室的数据时,无法插入数据。
3.3部分表添加唯一约束,使插入数据的数据值受到限制。
3.3.1教学计划表中,每一门课程在一天只能安排一次。
3.3.2教学表中,一门课程只能被一个老师教。
3.4数据检索3.4.1学生查询所选某门课程的成绩。
3.4.2输入:学生学号,课程编号3.4.3输出:课程名称,成绩3.4.4教师查询选修所教课程的学生的信息。
3.4.5输入:教师编号3.4.6输出:学生姓名,学生学号,学生性别,籍贯3.4.7学生查询选修课程授课教师的信息。
3.4.8 输入:学生学号3.4.9 输出:课程编号,教师姓名,教师编号,授课效果,从教时间 3.4.10 学生查询所有选修课程的平均分。
3.4.11 输入:学生学号3.4.12 输出:选课科目数,平均分 3.4.13 教室查询占用教室课程的信息。
3.4.14 输入:教室编号3.4.15 输出:教室编号,课程名称,课程编号,教师名称,教师编号, 3.5 数据插入3.5.1 教室数据插入。
3.5.2 学院数据插入。
3.5.3 教学数据插入。
3.5.4 学生数据插入。
3.6 数据修改3.6.1 教学计划数据修改:修改教学计划时,输入课程编号及所需修改的属性值,完成对教学计划表的修改。
3.6.2 教师数据修改:修改教师数据时,输入教师编号及所需修改的属性值,完成对教师表的修改。
3.6.3 班级数据修改:修改班级数据时,输入班级编号及所需修改的属性值,完成对班级表的修改。
3.7 数据统计与查询3.7.1 学生及其选课的所有信息 3.7.2 教师教授课程情况的所有信息 3.7.3 教室安排情况的所有信息 3.7.4 学院_班级_学生间联系的所有信息二. 概念设计经需求分析,抽象出以下E-R 模型。
1. 图1 课程实体2. 学生实体(图2)3. 教师实体(图3)4. 教室实体(图4)图4 教室实体5. 学院实体(图5)图3教师实体教师教师年龄教师性别教师编号教师姓名图2 学生实体学生出生日期籍贯学生性别学生年龄学生学号学生姓名图7全局E-R 图图5 学院实体6. 班级实体(图6)图6 班级实体7. 全局E-R 图(图7)三.逻辑设计系统中的实体有:课程、教师、教室、学生、学院、班级将实体类型转换为关系模式如下:课程(课程名称,课程编号,课程类型,课程容量,学分,课时数,所属学院编号)教师(教师姓名,教师编号,教师年龄,教师性别,隶属学院编号)教室(教室编号,教室容量,是否可用)学生(学生姓名,学生学号,学生年龄,出生日期,学生性别,籍贯,所在班级编号)学院(学院名称,学院编号,联系电话,通讯地址)班级(班级编号,人数,所属年级,班导师,所在学院编号)系统中的联系有:教学计划(多对多)、教授(一对多)、选修(多对多)将联系类型转换为关系模式如下:教学计划(课程编号,教室编号,起始周数,周数,起始节数,节数,星期),主键为(课程编号,教室编号)教学(课程编号,教师编号,从教时间,授课效果),主键为(课程编号,教师编号)选课(课程编号,学生学号,是否重修,成绩),主键为(课程编号,学生学号)注:有下划线的是主键,有波浪线的是外键。
四.物理设计根据以上关系模式构建数据表如下:表1 课程表(course)结构表2 教师表(teacher)结构表3 教室表(room)结构表4 学生表(student)结构表5 学院表(school)结构表6 班级表(class)结构表7 教学计划表(eduplan)结构表8 教学表(education)结构表9 选课表(sc)结构五.系统实现自动排课系统的系统实现Transact-SQL语句如下:1.建立数据库create database Auto_Arrangementon primary(name=Auto_Arrangement_data,filename='e:\\Auto_Arrangement\\Auto_Arra ngement_data.mdf',size=10MB,filegrowth=2MB,maxsize=500MB),(name=Auto_Arrangement_data1,filename='e:\\Auto_Arrangement\\Auto_Arr angement_data1.ndf',size=5MB,filegrowth=1MB,maxsize=500MB)log on(name=Auto_Arrangement_log,filename='e:\\Auto_Arrangement\\Auto_Arran gement_log.ldf',size=1MB,filegrowth=10%)2.基本表的创建use Auto_Arrangement2.1.教室表的创建create table room(RoomNumber char(10) primary key,RoomVolume smallint not null,Available char(4),check(RoomVolume>=0),check(Available='YES'or Available='NO'))2.2.学院表的创建create table school(SchoolName char(30) not null,SchoolNumber char(10) primary key,Address char(50),Tel char(20))2.3.课程表的创建create table course(CourseName char(10) not null,CourseNumber char(10) primary key,CourseType char(10),CourseVolume smallint not null,Credit smallint not null,Period smallint not null,SchoolNumber char(10),foreign key (SchoolNumber) references school(SchoolNumber))2.4.教师表的创建create table teacher(TeacherName char(10),TeacherNumber char(10) primary key,TeacherAge char(4),TeacherSex char(6),SchoolNumber char(10),check(TeacherAge>=0),check(TeacherSex='Male'or TeacherSex='Female'),foreign key (SchoolNumber) references school(SchoolNumber))2.5.课程表的创建create table class(ClassNumber char(10) primary key,ClassVolume smallint,CGrade smallint not null,Tutor char(10),SchoolNumber char(10),check(ClassVolume>=0),foreign key (SchoolNumber) references school(SchoolNumber))2.6.学生表的创建create table student(StudentName char(10) not null,StudentNumber char(10) primary key,StudentSex char(6),StudentAge smallint,Origo char(10),Birthday datetime,ClassNumber char(10),check(StudentSex='Male'or StudentSex='Female'),check(StudentAge>=0),foreign key (ClassNumber) references class(ClassNumber))2.7.教学计划表的创建create table eduplan(CourseNumber char(10),RoomNumber char(10),StartWeek smallint,Weeks smallint,StartLesson smallint,Lessons smallint,EduDay smallint,check(StartWeek between 1 and 20),check(Weeks>=0),check(StartLesson between 1 and 11),check(Lessons>=0),check(EduDay between 1 and 7),primary key (CourseNumber,RoomNumber),foreign key (CourseNumber) references course(CourseNumber), foreign key (RoomNumber) references room(RoomNumber))2.8.教学表的创建create table education(CourseNumber char(10),TeacherNumber char(10),TeachTime smallint,Effect smallint,check(TeachTime between 1 and 100),check(Effect between 1 and 100),primary key (CourseNumber,TeacherNumber),foreign key (CourseNumber) references course(CourseNumber), foreign key (TeacherNumber) references teacher(TeacherNumber))2.9.选课表的创建create table sc(CourseNumber char(10),StudentNumber char(10),Revamp char(4),Grade smallint,check(Revamp='YES'or Revamp='NO'),check(Grade between 1 and 100),primary key (CourseNumber,StudentNumber),foreign key (CourseNumber) references course(CourseNumber),foreign key (StudentNumber) references student(StudentNumber))3.默认值的创建3.1.创建默认值’NO’,并为选课表中是否重修绑定create default de_Revamp as'NO'exec sp_bindefault 'de_Revamp','sc.Revamp'3.2.创建默认值’YES’,并为教室表中是否可用绑定create default de_Available as'YES'exec sp_bindefault 'de_Available','room.Available'4.触发器的创建4.1.对教学计划表创建触发器,当插入课程人数多于教室容量的数据时,回滚操作create trigger TR_eduplan1 on eduplanfor insertasif(select count(*)from course c inner join inserted i on c.CourseNumber=i.CourseNumber inner join room r on i.RoomNumber=r.RoomNumberwhere datediff(d,CourseVolume,RoomVolume)<0)<>0beginprint'课程人数大于教室容量,无法安排课程,操作无法完成'rollbackend4.2.对教学计划表创建触发器,当插入课程占用不可被占用的教室的数据时,回滚操作create trigger TR_eduplan2 on eduplanfor insertasif(select count(*)from inserted i inner join room r on i.RoomNumber=r.RoomNumberwhere available='NO')<>0beginprint'插入课程占用不可被占用的教室,无法安排课程,操作无法完成'rollbackend5.数据的输入5.1.教室表数据insert into room (RoomNumber,RoomVolume) values('23102',280)insert into room (RoomNumber,RoomVolume) values('23104',280)insert into room (RoomNumber,RoomVolume) values('23106',280)insert into room values('23108',280,'NO')insert into room (RoomNumber,RoomVolume) values('23110',100)insert into room (RoomNumber,RoomVolume) values('23112',100)insert into room (RoomNumber,RoomVolume) values('23114',280)insert into room (RoomNumber,RoomVolume) values('23202',280)insert into room (RoomNumber,RoomVolume) values('23204',280)insert into room (RoomNumber,RoomVolume) values('23206',280)insert into room values('23208',280,'NO')insert into room (RoomNumber,RoomVolume) values('23210',280)insert into room (RoomNumber,RoomVolume) values('23212',280)insert into room (RoomNumber,RoomVolume) values('23214',280)5.2.学院表数据insert into school values('自动化','001','天津市南开区号','22345612') insert into school (SchoolName,SchoolNumber) values('精密仪器','002') insert into school (SchoolName,SchoolNumber) values('机械','003') insert into school (SchoolName,SchoolNumber) values('建筑','004') insert into school (SchoolName,SchoolNumber) values('建工','005') insert into school (SchoolName,SchoolNumber) values('信息','006') insert into school (SchoolName,SchoolNumber) values('化工','007') insert into school (SchoolName,SchoolNumber) values('计算机','008') insert into school (SchoolName,SchoolNumber) values('理学院','009') insert into school (SchoolName,SchoolNumber) values('文法','010')5.3.课程表数据insert into course values('复变','0001','必修',280,2,32,'009')insert into course values('模电','0002','必修',100,4,64,'001')insert into course values('信号','0003','必修',100,3,48,'001')insert into course values('电拖','0004','必修',100,3,48,'001')insert into course values('概率','0005','选修',280,3,32,'009')insert into course values('英语','0006','必修',80,1,16,'010')insert into course values('口语','0007','必修',40,1,16,'010')insert into course values('数据库','0008','选修',280,3,32,'008')insert into course values('电路','0009','必修',100,4,48,'001')insert into course values('大物','0010','必修',100,4,64,'009')insert into course values('马原','0011','必修',280,4,64,'010')5.4.班级表数据insert into class values('zdh01',30,2012,'许','001')insert into class (ClassNumber,ClassVolume,CGrade,SchoolNumber) values('zdh02',30,2012,'001')insert into class (ClassNumber,ClassVolume,CGrade,SchoolNumber) values('zdh03',30,2012,'001')insert into class (ClassNumber,ClassVolume,CGrade,SchoolNumber) values('zdh04',30,2012,'001')insert into class (ClassNumber,ClassVolume,CGrade,SchoolNumber) values('zdh05',30,2012,'001')insert into class (ClassNumber,ClassVolume,CGrade,SchoolNumber) values('zdh06',30,2012,'001')insert into class (ClassNumber,ClassVolume,CGrade,SchoolNumber) values('jsj01',30,2012,'008')insert into class (ClassNumber,ClassVolume,CGrade,SchoolNumber) values('jsj02',30,2012,'008')insert into class (ClassNumber,ClassVolume,CGrade,SchoolNumber) values('jsj03',30,2012,'008')insert into class (ClassNumber,ClassVolume,CGrade,SchoolNumber) values('jsj04',30,2012,'008')5.5.教师表数据insert into teacher values('韩','001','35','Male','009')insert into teacher values('周','002','40','Female','001')insert into teacher values('石','003','45','Male','001')insert into teacher values('费','004','43','Male','001')insert into teacher values('胡','005','37','Male','009')insert into teacher values('田','006','43','Female','010')insert into teacher values('姚','007','45','Male','010')insert into teacher values('喻','008','36','Female','008')insert into teacher values('刘','009','30','Female','001')insert into teacher values('李','010','31','Male','009')5.6.学生表数据insert into student values('白某','1201','Male','20','河北','1993.01.16','zdh01')insert into student values('贾某','1202','Male','21','天津','1992.02.16','zdh01')insert into student values('王某','1203','Male','20','天津','1993.08.06','zdh02')insert into student values('龚某','1204','Female','18','云南','1995.11.11','zdh02')insert into student values('邢某','1205','Male','20','吉林','1993.09.20','zdh03')insert into student values('戴某','1206','Male','20','辽宁','1993.12.16','zdh03')insert into student values('刘某','1207','Female','20','天津','1993.01.16','zdh04')insert into student values('陈某','1208','Female','20','辽宁','1993.08.17','zdh04')insert into student values('韩某','1209','Male','20','安徽','1993.10.19','zdh05')insert into student values('袁某','1210','Female','20','浙江','1993.11.23','zdh05')5.7.教学计划表数据insert into eduplan values('0001','23102',4,16,1,2,1) insert into eduplan values('0002','23104',4,18,3,2,1) insert into eduplan values('0002','23206',4,18,3,2,3) insert into eduplan values('0003','23112',4,16,3,2,2) insert into eduplan values('0004','23214',4,18,1,2,2) insert into eduplan values('0005','23212',4,16,9,3,3) insert into eduplan values('0006','23106',4,16,3,2,3) insert into eduplan values('0007','23110',4,16,5,2,2) insert into eduplan values('0008','23202',4,14,9,3,2) insert into eduplan values('0009','23204',4,12,7,2,3) insert into eduplan values('0009','23206',4,12,3,2,5)5.8.教学表数据insert into education values('0001','001',4,80)insert into education values('0002','002',20,95)insert into education values('0003','003',10,70)insert into education values('0004','004',18,75)insert into education values('0005','005',22,83)insert into education values('0006','006',8,78)insert into education values('0007','007',18,90)insert into education values('0008','008',6,88)insert into education values('0009','009',14,90)insert into education values('0010','010',6,82)5.9.选课表数据insert into sc values('0001','1201','YES',70)insert into sc (CourseNumber,StudentNumber,Grade) values('0002','1201',93)insert into sc (CourseNumber,StudentNumber,Grade) values('0003','1201',67)insert into sc (CourseNumber,StudentNumber,Grade) values('0008','1202',90)insert into sc values('0004','1202','YES',67)insert into sc (CourseNumber,StudentNumber,Grade) values('0006','1202',73)insert into sc (CourseNumber,StudentNumber,Grade) values('0003','1203',98)insert into sc (CourseNumber,StudentNumber,Grade) values('0007','1203',84)insert into sc (CourseNumber,StudentNumber,Grade) values('0005','1204',78)insert into sc (CourseNumber,StudentNumber,Grade) values('0006','1204',62)insert into sc (CourseNumber,StudentNumber,Grade) values('0010','1205',90)insert into sc (CourseNumber,StudentNumber,Grade)values('0009','1206',92)insert into sc (CourseNumber,StudentNumber,Grade)values('0007','1207',88)insert into sc (CourseNumber,StudentNumber,Grade)values('0009','1208',79)insert into sc (CourseNumber,StudentNumber,Grade)values('0005','1209',73)6.索引的创建6.1.课程表(course)按课程编号(CourseNumber)升序排列create index IN_course on course(CourseNumber)6.2.学生表(student)按学生学号(StudentNumber)升序排列create index IN_student on student(StudentNumber)6.3.教师表(teacher)按教师编号(TeacherNumber)升序排列create index IN_teacher on teacher(TeacherNumber)6.4.教室表(room)按教室容量(RoomVolume)降序排列create index IN_room on room(RoomVolume desc)6.5.学院表(school)按学院编号(SchoolNumber)升序排列create index IN_school on school(SchoolNumber)6.6.班级表(class)按班级编号(ClassNumber)升序排列create index IN_class on class(ClassNumber)6.7.教学计划表(eduplan)按课程编号(CourseNumber),星期(EduDay)升序排列,组合索引,唯一索引create unique index IN_eduplan on eduplan(CourseNumber,EduDay)6.8.教学表(education)按课程编号(CourseNumber)升序排列,唯一索引create unique index IN_education on education(CourseNumber)7.视图的创建7.1.学生选课视图create view V_electiveasselects.StudentNumber,s.StudentName,c.CourseNumber,c.CourseName,t.TeacherNu mber,t.TeacherName,sc.Revamp,sc.Gradefrom student s inner join sc on s.StudentNumber=sc.StudentNumberinner join course c on sc.CourseNumber=c.CourseNumberinner join education e on e.CourseNumber=c.CourseNumber inner join teacher t on e.TeacherNumber=t.TeacherNumber7.2.教师授课视图create view V_teachasselect t.TeacherName,c.CourseName,eduplan.RoomNumberfrom teacher as t inner join education as e on t.TeacherNumber=e. TeacherNumberinner join eduplan one.CourseNumber=eduplan.CourseNumberinner join course as c oneduplan.CourseNumber=c.CourseNumber7.3.教室安排视图create view V_room_arrangeasselect r.RoomNumber,c.CourseNamefrom room as r inner join eduplan on r.RoomNumber=eduplan.RoomNumberinner join course as c oneduplan.CourseNumber=c.CourseNumber7.4.学院_班级_学生视图create view V_school_class_studentasselect s.SchoolName,c.ClassNumber,student.StudentNamefrom school as s inner join class as c on s.SchoolNumber=c.SchoolNumber inner join student on student.ClassNumber= c.ClassNumber8.存储过程的创建8.1数据检索8.1.1.为学生创建存储过程查询某门课的成绩create procedure P_SEL_studentgrade (@sno char(10), @cno char(10))asselect c.CourseName,sc.Gradefrom course as c inner join sc on c.CourseNumber=sc.CourseNumberwhere sc.StudentNumber=@sno and sc.CourseNumber=@cno8.1.2.为教师创建存储过程查询选所教课程的学生信息create procedure P_SEL_studentinformation @tno char(10)asselect s.StudentNumber,s.StudentName,s.StudentSex,s.Origofrom education inner join sc on education.CourseNumber=sc.CourseNumber inner join student as s on sc.StudentNumber=s.StudentNumber where education.TeacherNumber=@tno8.1.3.为学生创建存储过程查询所选课程的教师信息create procedure P_SEL_teacherinformation @sno char(10)asselecte.CourseNumber,e.TeacherNumber,e.Effect,e.TeachTime,t.TeacherNamefrom sc inner join education as e on sc.CourseNumber=e.CourseNumberinner join teacher as t on e.TeacherNumber =t.TeacherNumber where sc.StudentNumber=@sno8.1.4.为学生创建存储过程查询所选课程的平均分create procedure P_SEL_averagegrade @sno char(10)asselect count(CourseNumber)as mount,avg(grade)as averagefrom scwhere StudentNumber=@snogroup by StudentNumber8.1.5.为教室创建存储过程查询占用教室的课程的课程信息create procedure P_SEL_roominformation @RoomNumber char(10)asselectRoomNumber,c.CourseName,c.CourseNumber,t.TeacherName,t.TeacherNumber from eduplan ep inner join course c on ep.CourseNumber=c.CourseNumber inner join education e on c.CourseNumber=e.CourseNumber inner join teacher t on e.TeacherNumber=t.TeacherNumber where RoomNumber=@RoomNumber8.2.数据插入8.2.1.插入教室数据create procedure P_IN_room(@RoomNumber char(10),@RoomVolumesmallint,@Available char(4))asinsert into roomvalues(@RoomNumber,@RoomVolume,@Available)8.2.2.插入学院数据create procedure P_IN_school(@SchoolName char(30),@SchoolNumberchar(10),@Address char(50)=null,@Tel char(20)=null)asinsert into schoolvalues(@SchoolName,@SchoolNumber,@Address,@Tel)8.2.3.插入教学数据create procedure P_IN_education(@CourseNumber char(10),@TeacherNumber char(10),@TeachTime smallint,@Effect smallint)asinsert into educationvalues(@CourseNumber,@TeacherNumber,@TeachTime,@Effect)8.2.4.插入学生数据create procedure P_IN_student(@StudentName char(10),@StudentNumber char(10),@StudentSex char(6),@StudentAge smallint,@Origochar(10),@Birthday datetime,@ClassNumber char(10))asinsert into studentvalues(@StudentName,@StudentNumber,@StudentSex,@StudentAge,@Origo,@Bi rthday,@ClassNumber)8.3.数据修改8.3.1.教学计划数据修改create procedure P_UD_eduplan(@CourseNumber char(10),@RoomNumberchar(10)=RoomNumber,@StartWeek smallint=StartWeek,@Weekssmallint=weeks,@StartLesson smallint=StartLesson,@Lessonssmallint=Lessons,@EduDay smallint=EduDay)asupdate eduplansetRoomNumber=@RoomNumber,StartWeek=@StartWeek,Weeks=@weeks,StartLesson =@StartLesson,Lessons=@Lessons,EduDay=@EduDaywhere CourseNumber=@CourseNumber8.3.2.教师数据修改create procedure P_UD_teacher(@TeacherNamechar(10)=TeacherName,@TeacherNumber char(10),@TeacherAgechar(4)=TeacherAge,@TeacherSex char(6)=TeacherSex,@SchoolNumberchar(10)=SchoolNumber)asupdate teachersetTeacherName=@TeacherName,TeacherAge=@TeacherAge,TeacherSex=@TeacherSe x,SchoolNumber=@SchoolNumberwhere TeacherNumber=@TeacherNumber8.3.3.班级数据修改create procedure P_UD_class(@ClassNumber char(10),@ClassVolume smallint=ClassValume,@CGrade smallint=CGrade,@Tutorchar(10)=Tutor,@SchoolNumber char(10)=SchoolNumber)asupdate classsetClassVolume=@ClassVolume,CGrade=@CGrade,Tutor=@Tutor,SchoolNumber=@Sc hoolNumberwhere ClassNumber=@ClassNumber9.附:触发器可行性检测9.1.TRIGGER1 插入课程人数多于教室容量的数据时,回滚操作9.1.1.课程'0001'人数280,教室'23110'容量100insert eduplan values('0001','23110',1,1,1,1,3)9.1.2.课程'0005'人数280,教室'23112'容量100insert eduplan values('0005','23112',1,1,1,1,4)9.1.3.课程'0001'人数280,教室'23104'容量280,可以插入信息insert eduplan values('0001','23104',1,1,1,1,3)9.2.TRIGGER2 插入课程占用不可被占用的教室的数据时,回滚操作9.2.1.教室'23108'不可被占用insert eduplan values('0001','23108',1,1,1,1,3)9.2.2.教室'23208'不可被占用insert eduplan values('0001','23208',1,1,1,1,3)9.2.3.教室'23202'可被占用,可以插入信息insert eduplan values('0001','23202',1,1,1,1,3)10.附:存储过程可行性检测10.1.数据检索存储过程10.1.1.为学生创建存储过程查询某门课的成绩exec P_SEL_studentgrade '1201','0001'10.1.2.为教师创建存储过程查询选所教课程的学生信息exec P_SEL_studentinformation '008'10.1.3.为学生创建存储过程查询所选课程的教师信息exec P_SEL_teacherinformation '1206'10.1.4.为学生创建存储过程查询所选课程的平均分exec P_SEL_averagegrade '1203'10.1.5为教室创建存储过程查询占用教室的课程的课程信息exec P_SEL_roominformation '23104'10.2.数据插入存储过程10.2.1.插入教室数据exec P_IN_room '24110','280','YES'10.2.2.插入学院数据exec P_IN_school '药','011'10.2.3.插入教学数据exec P_IN_education '0011','005',15,8010.2.4.插入学生数据exec P_IN_student '李某','1211','Female','21','杭州','1993.5.12','zdh06'10.3.数据修改存储过程10.3.1.修改教学计划表数据exec P_UD_eduplan '0008','23104',4,16,1,2,410.3.2.修改教师数据exec P_UD_teacher '葛','004','45','Male','003'10.3.3.修改班级表数据exec P_UD_class 'zdh02',30,2012。