课程管理系统数据库设计及实现
数据库课程设计 仓库管理系统数据库的设计与实现

仓库管理系统数据库设计与实现一.实验时间、地点时间:第十三周(11月21日——25日)地点:软件楼305二.实验目的通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。
三、课程设计要求:1.对各个系统进行系统功能需求分析2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图)3. 设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定4. 通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代码实现),要求建立相关的索引5. 根据系统功能需求设计相应的查询视图6. 要求根据系统功能需求建立存储过程7. 根据功能需求建立相应的触发器以保证数据的一致性8. 通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份与恢复(此内容选作)四.仓库管理系统实验要求描述:设计一个仓库管理系统,实现下列功能:1.零件信息登记(包括种类,名称和库存数量等信息);2.零件进库登记(包括种类,名称和库存数量等信息);3.零件出库登记(包括种类,名称和库存数量等信息);五.实现思路1.关系模式零件信息表(零件编号,零件名,单价,数量,零件类型号,生产厂家号)生产商情况表(生产厂家号,生产厂家名,生产厂家地址,生产厂家电话)入库登记表(零件编号,零件名,入库数量,零件类型,生产厂家号,入库时间)出库登记表(零件编号,零件名,出库数量,出库时间)零件类型信息表(零件类型号,类型)2.设计思路仓库管理系统设计了五个二维表,他们的设计表如下(1)零件信息设计表(2)生产商情况设计表(3)入库登记设计表(4)出库登记设计表(5)零件类型信息设计表3.仓库管理系统全局E—R图零件信息重量单价数量零件编号 零件类型号颜色 出库入库入库登记零件编号零件名入库数量 入库时间出库时间颜色生产商号零件类型生产 商号零件名 零件编号零件名出库 数量出库 性质提货人员出 库 登 记六.实现过程create database 仓库管理系统 on (name=仓库_dat,Filename='e:\microsoft SQL Server\MSSQL\Date\仓库.mdf', Size=10, Maxsize=150 )Log on (name=仓库_log,Filename='e:\microsoft SQL Server\MSSQL\Date\仓库.ldf', Size=10, Maxsize=80 )create table 零件信息表(零件编号 char(10) primary key, 零件名 char(10) not null,单价 money constraint 单价_Chk check(单价 between 80 and 660), 数量 int,零件类型号 char(10),生产商情况 生产商生产商名 生产商号零件类型生产厂家电用途 类型零件类型零件信息卖 出 类型生产厂家号 char(6));select * from 零件信息设计表/***创建并查询零件信息表索引***/create unique index 零件信息_index on 零件信息表(零件编号) exec Sp_helpindex 零件信息表create table 生产厂家信息表(生产厂家号 char(6) primary key ,生产厂家名 varchar(16) not null,生产厂家地址 varchar(40),生产厂家电话 char(12));select * from 生产厂家信息表/***创建并查询生产厂家信息索引***/create index 生产厂家信息_index on 生产厂家信息表(生产厂家号)exec Sp_helpindex 零件信息表create table 零件类型信息表(零件类型号 char(10) primary key,类型 char(10);select * from 零件信息设计类型表/***创建并查询零件类型信息索引***/create index 零件类型信息表_index on 零件类型信息表(零件类型号) exec Sp_helpindex 零件类型信息表create table 入库登记表(零件编号 char(10),零件名 char(10) not null,入库数量 int,零件类型 char(8),生产厂家号 char(6),入库时间 datetime);select * from 入库登记设计表/***创建并查询入库登记表索引***/create index 入库登记表_index on 入库登记表(零件编号)exec Sp_helpindex 入库登记表create table 出库登记表(零件编号 char(10),零件名 char(10),出库数量 int,出库时间 datetime);select * from 出库登记设计表/***创建出库登记表索引***/create index 入库登记表_index1 on 出库登记表(零件编号)create index 入库登记表_index2 on 出库登记表(出库数量)create index 入库登记表_index3 on 出库登记表(出库时间)/***查询零件名为“硬盘”的信息***/select 零件编号,零件名,单价,数量,生产厂家信息表.生产厂家名,生产厂家地址,生产厂家电话,零件信息类型设计表.类型from 零件信息表,生产厂家信息表,零件信息类型设计表where(零件信息设计表.零件类型号=零件信息类型设计表.零件类型号and 生产厂家信息设计表.生产厂家号=零件信息设计表.生产厂家号and 零件名='硬盘')查询结果为:/***创建零件信息表视图***/create view v_lj as select * from 零件信息表/***创建生产厂家信息表视图***/create view v_sc as select * from 生产厂家信息表create view select_零件信息表 asselect 零件信息设计表.零件编号,零件信息设计表.零件名,零件信息设计表.零件类型号 from 零件信息设计表inner join 零件信息类型设计表 on 零件信息设计表.零件类型号 = 零件类型信息设计表.零件类型号/***创建数量在200—900之间的规则,并绑定规则***/create rule 数量_ruleas @数量>=200 and @数量<=900exec sp_helptext'数量_rule'exec sp_bindrule'数量_rule','零件信息表.数量'exec sp_unbindrule'零件信息表.数量'drop rule 数量_rule/***创建向表中添加信息的存储过程***/create procedure insert_零件信息( @零件编号 char(10),@零件名 char(10),@单价 money,@数量 int,@零件类型号 char(10),@生产厂家号 char(6))asinsert into 零件信息表 values(@零件编号,@零件名,@单价,@数量,@零件类型号,@生产厂家号)exec insert_零件信息 @零件编号='001',@零件名='鼠标',@单价=80,@数量='1000',@零件类型号='L1',@生产厂家号='01'select * from 零件信息表/***删除存储过程***/drop procedure insert_零件信息/***创建触发器并向利用触发器向表内添加信息***/create trigger ChangDisplayon 零件信息表for insertasselect * from 零件信息表insert into 零件信息表 values('002','数据线',80,'800','L2','06')七.实验总结本系统是一个面向小型企业,具有一定实用性的数据库仓库管理系统。
数据库课程设计--学校教务管理系统

学校教务管理的数据库设计I.需求分析:随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长.面对庞大的信息量,就需要有学生教务信息管理系统来提高学生管理工作的效率。
通过这样的系统,可以做到信息的规范管理、科学统计和快速的查询,从而减少管理方面的工作量。
学校为方便教务管理,需开发一个教务管理系统。
为便于学生,老师,教务管理人员信息查询,注册以及信息修改,学校把学生的信息,包括姓名、性别、年龄,成绩等信息输入教务管理系统的数据库,然后在管理终端可以对数据进行查询和修改操作。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。
并要求系统界面要简单明了,易于操作,程序利于维护。
一、信息分析:(1)学校教务管理的数据库,包含以下信息:学校有若干个系,每个系有若干名教师和学生,每个教师可以担任若干门课程,并参加多个项目,每个学生可以同时选修多门课程,每门课程每学期可能有多名教师教授,课程分为必修、选修、任选三种。
(2)学校的教务管理的信息包括:学生姓名、学号、班级、性别、班号,籍贯、出生日期、所属系编号、所属系名称、系主任,教师编号,教师姓名,教师职称,教师所授课程、课程编号,课程名,课程学分,项目编号,项目名称,项目负责人,学生选修课程及成绩。
学生如果课程及格,可以取得该课程的学分。
学生的各类型课程学分和总学分累计到一定程度,学生可以毕业。
根据成绩高低,可以计算学分积。
及格学生的学分积公式:课程学分积=(该课程成绩-50)/10×该课程学分。
二、功能分析:(1)用户能够使用友好的图形用户界面实现对系、班级、学生、教师、课程、选课等内容进行增、删、改,以及对信息的查询。
对于查询要实现比较强大的功能,包括精确查询、模糊查询以及统计查询。
(2)具体查询在数据库中要实现以下的功能:1)所有来自某省的男生2)所有某课程成绩〉90的同学3)教授某课程的老师4)某班年龄最大的5名同学5)某年以后出生的男同学6)选修某课程的学生及其成绩7)没有授课的教师8)某学生所选课程的总学分9)教授某学生必修课程的老师情况10)某学生选修了哪些系的课程11)某系学生所学的所有课程12)按总学分找出某系学习最好的5名同学13)按总学分积找出某系学习最好的5名同学14)可以毕业的学生三、软、硬件配置程序运行的环境:具体运行环境为软件方面,操作系统为windows2000/XP,并且系统装有SQL Server2000数据库管理系统.硬件方面,CPU主频500MHz以上,内存128M或更高。
数据库系统-设计实现与管理第三版教学设计

数据库系统-设计实现与管理第三版教学设计一、课程简介《数据库系统-设计实现与管理》是一门旨在向学生介绍数据库系统原理、设计及实现的课程。
本课程将从数据管理的基础开始,包括建立数据库模式、查询语句和事务处理。
并且将介绍各种关系数据库管理系统(RDBMS)的安装、配置和管理。
本课程将帮助学生掌握常见的数据库管理工具,如SQL和PL/SQL,并了解数据模型的设计和实现。
二、教学目标1.学习基本的数据库概念,包括数据模型、逻辑设计和物理设计。
2.掌握各种数据库管理系统的安装、配置和管理。
3.了解SQL和PL/SQL等数据库管理工具的使用。
4.了解数据模型的设计和实现方法。
5.了解常见的数据库管理问题和应对措施。
三、教学内容1. 数据库概念•数据库和数据库管理系统的概念•数据模型的基础知识•逻辑设计和物理设计2. 数据库管理系统安装、配置和管理•各种RDBMS的安装和配置•数据库管理系统的设置及管理•数据库备份和还原的方法3. SQL和PL/SQL•SQL的基本知识•SQL查询和查询优化•PL/SQL的语法和核心内容4. 数据模型的设计和实现方法•数据建模的基础知识•实体关系图(ER图)的设计•数据库范式和反范式的概念5. 常见的数据库管理问题和应对措施•数据库的安全和维护问题•性能调优•数据库异常情况下的应对方法四、教学方法1. 授课模式本课程旨在以理论和实践相结合的方式教学,因此采用课堂授课和实验室实践相结合的模式进行教学。
2. 课堂教学本课程将采用面对面的课堂授课方式,以讲解各种数据库管理的核心概念、原理及其应用为主。
3. 实验室实践本课程将为学生提供实验室实践的机会,以加深学生的理解和应用能力,此部分将着重于让学生练习各种数据库管理工具的实践操作。
五、考核方式本课程的考核方式主要分为两个部分:1.作业:课程期间,通过分配的作业来检验学生的掌握程度。
2.实验:在本课程的实验室中,准备实验报告以检验学生的数据库管理实践能力。
学习管理系统(LMS)架构设计与实现

学习管理系统(LMS)架构设计与实现随着在线学习和远程教育的不断普及,学习管理系统(Learning Management System,LMS)的需求和重要性不断提升,作为一种可以帮助教育机构、培训机构和企业进行在线学习和培训的平台,LMS已经成为很多机构不可或缺的系统之一。
在这篇文章中,我们将探讨LMS架构设计和实现的相关问题,包括系统架构、技术选型、数据模型设计等。
一、系统架构设计LMS的架构设计主要包括应用层、业务层、数据层和基础设施层四个部分。
下面我们分别来介绍一下这四个部分的具体功能和相应的设计原则。
1.应用层应用层是LMS的用户界面,包括了学生端、教师端、管理员端等。
应用层的设计应该符合用户的习惯和用户体验的要求,具有可扩展性和可定制性。
同时,应用层的安全性也是非常重要的,应采用合适的加密算法来确保用户的数据安全。
2.业务层业务层是LMS的核心部分,包括了用户管理、课程管理、培训管理等。
业务层的设计应该具有强大的扩展性、灵活性和稳定性,同时还应该具有高效的业务处理能力,以支持大规模的并发访问。
3.数据层数据层是LMS的数据存储部分,包括了数据库、文件系统等。
数据库是LMS的核心数据存储组件,应该具有高可用性、高可靠性和高性能的特点,同时还应该支持容灾和备份。
文件系统是保存课程视频、文档等多媒体资源的地方,应该具有高可用性、高可靠性和高效性。
4.基础设施层基础设施层是LMS的基础组件,包括了网络、操作系统、服务器等。
基础设施层的设计应该具有高可用性、高可靠性和可伸缩性,以支持大规模的用户访问。
二、技术选型LMS的技术选型应该根据具体的需求和设计原则来确定。
下面我们列举了一些常用的技术选型,供读者参考。
1.应用层应用层常用的技术包括前端框架、移动开发框架、HTML/CSS/JavaScript等。
前端框架包括Bootstrap、AngularJS、React等;移动开发框架包括Ionic、PhoneGap等。
学生选课管理系统(数据库课程设计)

数据库系统原理及其应用教程课程设计报告设计题目选修课程管理系统的设计与实现指导教师摘要随着计算机技术的日新月异,极大的推动的各个行业的信息化进程。
各大高校也急需进行信息化改革,以促进教学质量和工作效率快速提升.本文是在对各大高校全校公开课学生选课情况进行实地调查后,进行详细分析讨论后撰写的学生选课管理系统数据库设计报告.全文从最初的系统规划,到需求分析、概念设计、逻辑设计、物理设计.每一阶段都进行了详细的分析。
接下来的实现、运行与维护阶段,还进行了对本系统的测试,最后是本次项目开发的心得和体会以及本文的参考文献。
本系统主要功能是对学生选课及相关信息进行管理。
较行业同类产品而言,本系统人机界面设计更加合理、人性化,用户操作简单方便。
数据库的安全性更高,对用户访问权限进行了严格控制。
数据存取速度更快,使用年限更长。
可以很好的满足高校公开课学生选课的要求,极大的提高了学校的工作效率.关键字:学生选课管理系统;分析;设计目录一、概述 ...................................................................................................... 错误!未定义书签。
261.1设计背景ﻩ1.2设计目的................................................................................. 错误!未定义书签。
1。
3设计内容...................................................................................... 错误!未定义书签。
二、需求分析ﻩ错误!未定义书签。
2。
1功能分析.................................................................................... 错误!未定义书签。
数据库管理系统(DBMS)课程设计

数据库系统原理课程设计文档学号:姓名:一、DBMS的实现方式(一)文件存储的设计思想如下:本数据库管理系统(DBMS)主要有一下文件:database.ini:用于存储本数据库管理系统(DBMS)的关系数据库、数据库表信息;[tablename].ini:以关系数据库表名(tablename)命名的.ini文件主要用于存储数据库表的配置信息,如完整性约束,关系表属性名、属性类型、主键等信息;[Tablename]_info.ini:以关系数据库表名(tablename)命名的_info.ini文件主要用于存储数据库表的数据信息(Data information),所有的数据库表数据信息全部存储在此类文件中;[Tablename]_index.ini:以关系数据库表名(tablename)命名的_index.ini文件主要用于存储数据库表的索引文件。
此数据库管理系统(DBMS)中,除数据文件_info.ini、索引文件_ index.ini 外其余的均采用节点名、键名、键值之间的对应关系存储本DBMS系统的关系数据库、数据库表信息和数据库表的配置信息;数据文件的存储,数据文件采用流式文件,字段之间采用Tab间隔开,从左到右根据数据库表的配置信息依次存储关系表数据;在最前端设置一删除标志,为0表示次元组已经被删除,为1表示次元组未被删除;索引文件的建立采用稠密索引方式,每条记录对应于一条索引记录,在索引文件中存放了每条数据元组在数据文件中具体的位置。
这样,由于索引文件较数据文件小很多,故大大加快了数据元组查询速度;图1:文件存储的设计思想(二)DBMS系统流程控制设计思想如下:鉴于此数据库管理系统(DBMS)采用SQL执行,故设计如下程序控制流程:(1)超级管理员、一般管理员、普通用户通过各自的用户名、密码口令登陆系统;(2)对SQL进行编译,本DBMS中采用CCompiler类进行编译,编译过程当中可以对要执行的SQL操作进行信息收集并保存在相应的数据结构(或类)当中。
《课程教学管理系统的设计与实现》范文

《课程教学管理系统的设计与实现》篇一一、引言随着信息技术和数字化时代的飞速发展,传统的教学方式已逐渐与现代教育理念相结合,以更高效、更智能的方式呈现。
在这样一个背景下,课程教学管理系统的设计与实现变得尤为重要。
该系统能够实现对课程资源的高效管理、优化教学过程以及提供数据支持,进而提高教学质量和管理效率。
本文将详细介绍课程教学管理系统的设计与实现过程。
二、系统需求分析首先,我们需要明确课程教学管理系统的基本需求。
主要包括:1. 课程资源管理:系统应支持课程资源的录入、编辑、删除和查询等功能,以便教师和学生能够方便地获取所需的教学资料。
2. 学生信息管理:系统应能够记录学生的基本信息、成绩、学习进度等,以便教师及时掌握学生的学习情况。
3. 课程安排与排课:系统应支持课程的安排与排课功能,以便教务管理人员能够合理安排教师的教学任务。
4. 互动交流平台:系统应提供师生之间的互动交流平台,如在线问答、讨论区等,以促进师生之间的交流与沟通。
5. 数据统计与分析:系统应具备数据统计与分析功能,以便教务管理人员根据数据进行教学评估、决策支持等。
三、系统设计在需求分析的基础上,我们进行系统设计。
主要包括以下几个方面:1. 系统架构设计:采用B/S架构,以便用户通过浏览器访问系统。
同时,采用数据库技术进行数据存储与管理。
2. 数据库设计:设计合理的数据库结构,包括表结构、字段等,以支持系统的各项功能。
3. 功能模块设计:根据需求分析,设计课程资源管理、学生信息管理、课程安排与排课、互动交流平台、数据统计与分析等模块。
4. 界面设计:设计直观、友好的用户界面,以便用户能够方便地使用系统。
四、系统实现在系统设计的基础上,我们进行系统实现。
主要包括以下几个方面:1. 开发环境搭建:搭建开发环境,包括操作系统、开发工具、数据库等。
2. 编程实现:根据设计文档,使用合适的编程语言和技术进行编程实现。
3. 数据库连接与操作:实现数据库的连接与操作,包括数据的增删改查等功能。
MySql数据库课程设计学生管理系统

编辑界面:输入框、下拉列 表、按钮等,用于修改和添
加数据
查询界面:输入框、下拉列 表、按钮等,用于查询数据
帮助界面:提供系统使用说 明和帮助信息
模块设计
用户模块:用户注册、登录、修改密码等 课程模块:课程添加、修改、删除等 学生模块:学生添加、修改、删除等 成绩模块:成绩添加、修改、删除等 权限管理模块:用户权限分配、角色管理等 系统管理模块:系统设置、日志管理等
系统的功能
学生信息管理: 课程信息管理:
添加、修改、 添加、修改、
删除、查询学 删除、查询课
生信息
程信息
成绩管理:添 加、修改、删 除、查询学生
成绩
教师信息管理: 添加、修改、 删除、查询教
师信息
系统设置:修 改系统参数, 如密码、用户
权限等
报表生成:生 成学生成绩报 表、课程报表
等
系统的用户
管理员:负责系统管理和维护 教师:负责学生信息的录入、修改和查询 学生:负责个人信息的查询和修改 家长:负责学生信息的查询和修改
数据删除:删除表中 的数据
数据备份与恢复:定 期备份数据,确保数 据安全
界面交互实现
用户登录:输入用户 名和密码信 息、功能菜单、系统
状态等信息
功能菜单:包括学生 管理、课程管理、成
绩管理等功能
学生管理:添加、修 改、删除、查询学生
信息
课程管理:添加、修 改、删除、查询课程
定期检查硬件:确保硬件正常运行, 防止硬件故障
添加标题
添加标题
添加标题
添加标题
定期更新系统:确保系统安全,防 止漏洞攻击
定期培训员工:确保员工熟练掌握 系统操作,提高工作效率
系统安全策略
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大学课程设计报告课程设计题目:“课程管理系统”数据库设计与实现学院:专业班级:年级:姓名:学号:完成时间:年月日成绩:指导教师:目录第1章课程管理系统功能需求分析第2章课程管理系统概念结构设计2.1设计E-R图2.2 E-R模型向关系模型的转换第3章创建视图与索引,授予用户权限3.1创建视图3.2 创建索引3.3 授予权限正文一、需求分析1.近年来,随着各大高校的规模不断扩大,生源的急剧增加,有关学生的各种信息量也成倍增长。
面对庞大的信息量,需要建立一个课程管理系统来提高管理质量,让老师减轻工作量,提高工作效率。
建立课程管理系统就是为了实现信息的规范管理、科学统计与快速查询,从而减少管理方面的工作量。
课程管理系统主要提供教师、学生的学籍管理、成绩管理与课程管理功能。
2.需求功能分析:教师与学生的登录学生学籍的添加、修改、删除、查询课程管理的添加、修改、删除、查询教师授课的安排3.用户需求分析用户的需求具体体现在各种信息的提供、保存、更新、查询方面,这就要求数据库机构能充分满足各种信息的输入与输出。
收集基本数据、数据结构以及数据处理流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
针对课程管理系统的需求,通过对课程管理系统的设计与数据流程的分析,设计如下所示的数据项与数据存储表:登录信息:包括用户号、密码、权限学籍信息:包括用户号、姓名、性别、出生日期、班级、入学日期、家庭住址、电话课程信息:包括课程号、课程名、类型、教师名4.统的总体结构设计该系统共有三个模块:登陆模块、学籍管理模块、课程信息模块。
这几个模块同时还包括数据添加、数据修改、数据删除、数据查询等几个基本操作。
(1)登录模块在登录界面中教师与学生可登录。
在登录界面中分别填入用户名、密码与身份,然后按确认键登录。
如果填入信息有误则弹出错误信息的提示窗口,重新返回登陆窗口。
如果填入信息正确则要根据登录信息表中登录者的权限(“0”或“1”)分别进入教师(“1”)或学生(“0”)管理系统主界面。
(2)学籍管理模块该模块主要完成学生基本信息的添加、修改、删除、查询等功能。
根据登录时权限的判断,权限为“0”时,是学生进入该模块,只可对自己的学籍进行查询,添加、修改、删除功能不可用;权限为“1”时,教师进入该模块,此时可进行所有学生学籍的查询、添加、修改、删除,在此模块中定义了8个数据来进行学生的信息存储,如果修改某个记录,可单击修改按钮进行数据的编辑,此时界面数据内容与数据库内容将同时更新。
(4)课程管理模块该模块主要完成存储课程的所有信息的添加、修改、删除、查询等功能。
根据登录时权限的判断,权限为“0”时,学生进入该模块,只可进行课程查询,添加、修改、删除功能不可用;权限为“1”时,教师进入该模块,可进行查询、添加、修改、删除,在此模块中定义了6个数据来进行课程的信息存储,如果修改某一纪录,可单击修改单按钮进行课程记数据的编辑,此时界面数据内容与数据库内容将同时更新。
2、概念设计数据字典1数据项名数据类型长度注明学生学号字符型10 6位十进制数学生姓名字符型8年龄字符型16籍贯字符型8 学生出生地入学时间日期型教室编号字符型10 以A,B,C,D开头,教师姓名字符型8教师电话字符型20教师邮箱字符型30课程管理系统数据库中的E-R图3、逻辑设计将上面的E-R图转化为如下关系模型,下划横线代表关系的主键:学生(学号,姓名,年龄,籍贯,入学时间,专业代码,班级代码,学院代码)班级(班级代码,专业代码,班级名,学生数)专业(专业代码,学院代码。
专业名称)学院(学院代码,学院名,学员人数)教师(教工号,教师姓名,教师电话,教师邮箱)从属(加工号,学院代码)课程(课程代码,学院代码,课程名,人数,学分)管理员(管理员代码,管理员姓名,管理员电话,管理员邮箱)教室(教室编号,所属校区,教学楼)安排(课程代码,教工号,教室编号,管理员代码,上课时间)分配(学号,教室编号)选择(学号,课程代码)二、转化后的关系模型如图:三、数据库实现1、数据库视图的创建1)创建一个学号为20105263的学生的查询视图;Create view 学生信息(学生学号,所选课程名称,所在班级代号,老师姓名,上课教室)asselect学生学号,课程名,班级代码,教师姓名,教室编号from学生,课程,班级,教师,教室where学生.班级代码=班级.班级代码and 学生.学院代码=学院. 学院代码2)创建一个教工号为5132的教师的查询视图;Create view 教师信息(所教课程名称,所教班级代号,所属学院,上课教室)asselect 课程名,班级代码,学院,教室编号from 课程,班级,学院,教室,教师where 教师.教工号=‘5132’;3)创建一个管理员的查询视图Create view 管理员视图(课程名称,老师姓名,学生姓名,教室编号)asselect 课程名,教师姓名,学生姓名,教室编号from 课程,教师,学生,教室;2、索引的创建我们可以在视图学生信息中的”学号列”上创建一个索引Created index stu_index on 学生信息(学号)。
3、权限管理,安全性设计授予权限1.给学生一个可以查看课程安排的权限Grant select on 安排to 学生2.给教师一个可以查看学生选择课程情况的权限Grant select on 选择to 教师3.给教师一个可以查看课程安排的权限Grant update on 安排to 教师4.给学生一个可以查看自己的选课的权限Grant select on 选择to 学生4.给管理员一个可以查看课程安排的权限Grant select on 安排to 管理员6.给管理员一个删除教师与学生所选课程的权限Grant update on 课程to 管理员代码附录if exists(select 1 from sys.sysforeignkey where role='FK_分配_分配_学生') then alter table 分配delete foreign key FK_分配_分配_学生end if;if exists(select 1 from sys.sysforeignkey where role='FK_学生_属于_班级') then alter table 学生delete foreign key FK_学生_属于_班级end if;if exists(select 1 from sys.sysforeignkey where role='FK_学生_所在_专业') then alter table 学生delete foreign key FK_学生_所在_专业end if;if exists(select 1 from sys.sysforeignkey where role='FK_学生_所属_学院') then alter table 学生delete foreign key FK_学生_所属_学院end if;if exists(select 1 from sys.sysforeignkey where role='FK_选择_选择_学生') then alter table 选择delete foreign key FK_选择_选择_学生end if;drop index if exists 学生.所属_FK;drop index if exists 学生.所在_FK;drop index if exists 学生.属于_FK;drop index if exists 学生.学生_PK;drop table if exists 学生;/*==============================================================*/ /* Table: 学生 */ /*==============================================================*/ create table 学生(学号 varchar(10) not null, 专业代码 varchar(10) not null, 班级代码 varchar(10) not null, 学院代码 varchar(10) not null, 学生姓名 varchar(8) null,年龄 varchar(16) null,籍贯 varchar(8) null,入学时间 timestamp null,constraint PK_学生 primary key (学号));/*==============================================================*/ /* Index: 学生_PK *//*==============================================================*/ create unique index 学生_PK on 学生 (学号 ASC);/*==============================================================*/ /* Index: 属于_FK */ /*==============================================================*/ create index 属于_FK on 学生 (班级代码 ASC);/*==============================================================*/ /* Index: 所在_FK */ /*==============================================================*/ create index 所在_FK on 学生 (专业代码 ASC);/*==============================================================*/ /* Index: 所属_FK */ /*==============================================================*/ create index 所属_FK on 学生 (学院代码 ASC);alter table 学生add constraint FK_学生_属于_班级 foreign key (班级代码)references 班级 (班级代码)on update restricton delete restrict;alter table 学生add constraint FK_学生_所在_专业 foreign key (专业代码)references 专业 (专业代码)on update restricton delete restrict;alter table 学生add constraint FK_学生_所属_学院 foreign key (学院代码)references 学院 (学院代码)on update restricton delete restrict;if exists(select 1 from sys.sysforeignkey where role='FK_学生_属于_班级') then alter table 学生delete foreign key FK_学生_属于_班级end if;if exists(select 1 from sys.sysforeignkey where role='FK_班级_包含_专业') then alter table 班级delete foreign key FK_班级_包含_专业end if;drop index if exists 班级.包含_FK;drop index if exists 班级.班级_PK;drop table if exists 班级;/*==============================================================*/ /* Table: 班级 */ /*==============================================================*/ create table 班级(班级代码 varchar(10) not null, 专业代码 varchar(10) not null, 班级名 varchar(8) null,学生数 integer null,班主任 char(10) null,constraint PK_班级 primary key (班级代码));/*==============================================================*/ /* Index: 班级_PK */ /*==============================================================*/ create unique index 班级_PK on 班级 (班级代码 ASC);/*==============================================================*/ /* Index: 包含_FK */ /*==============================================================*/ create index 包含_FK on 班级 (专业代码 ASC);alter table 班级add constraint FK_班级_包含_专业 foreign key (专业代码)references 专业 (专业代码)on update restricton delete restrict; if exists(select 1 from sys.sysforeignkey where role='FK_专业_含有_学院') thenalter table 专业delete foreign key FK_专业_含有_学院end if;if exists(select 1 from sys.sysforeignkey where role='FK_学生_所在_专业') thenalter table 学生delete foreign key FK_学生_所在_专业end if;if exists(select 1 from sys.sysforeignkey where role='FK_班级_包含_专业') thenalter table 班级delete foreign key FK_班级_包含_专业end if;drop index if exists 专业.所属_FK;drop index if exists 专业.专业_PK;drop table if exists 专业;/*==============================================================*//* Table: 专业 *//*==============================================================*/create table 专业(专业代码 varchar(10) not null,学院代码 varchar(10) not null,专业名 varchar(8) null,constraint PK_专业 primary key (专业代码));/*==============================================================*//* Index: 专业_PK *//*==============================================================*/create unique index 专业_PK on 专业 (专业代码 ASC);/*==============================================================*//* Index: 所属_FK *//*==============================================================*/create index 所属_FK on 专业 (学院代码 ASC);alter table 专业add constraint FK_专业_含有_学院 foreign key (学院代码)references 学院 (学院代码)on update restricton delete restrict; if exists(select 1 from sys.sysforeignkey where role='FK_安排_安排_课程') thenalter table 安排delete foreign key FK_安排_安排_课程end if;if exists(select 1 from sys.sysforeignkey where role='FK_课程_开设_学院') then alter table 课程delete foreign key FK_课程_开设_学院end if;if exists(select 1 from sys.sysforeignkey where role='FK_选择_选择2_课程') then alter table 选择delete foreign key FK_选择_选择2_课程end if;drop index if exists 课程.开设_FK;drop index if exists 课程.课程_PK;drop table if exists 课程;/*==============================================================*//* Table: 课程 *//*==============================================================*/create table 课程(课程代码 varchar(8) not null,学院代码 varchar(10) not null,课程名 varchar(8) null,人数 integer null,所属校区 varchar(10) null,constraint PK_课程 primary key (课程代码));/*==============================================================*//* Index: 课程_PK *//*==============================================================*/create unique index 课程_PK on 课程 (课程代码 ASC);/*==============================================================*//* Index: 开设_FK *//*==============================================================*/create index 开设_FK on 课程 (学院代码 ASC);alter table 课程add constraint FK_课程_开设_学院 foreign key (学院代码)references 学院 (学院代码)on update restricton delete restrict; if exists(select 1 from sys.sysforeignkey where role='FK_专业_含有_学院') thenalter table 专业delete foreign key FK_专业_含有_学院end if;if exists(select 1 from sys.sysforeignkey where role='FK_从属_从属2_学院') thenalter table 从属delete foreign key FK_从属_从属2_学院end if;if exists(select 1 from sys.sysforeignkey where role='FK_学生_所属_学院') then alter table 学生delete foreign key FK_学生_所属_学院end if;if exists(select 1 from sys.sysforeignkey where role='FK_课程_开设_学院') then alter table 课程delete foreign key FK_课程_开设_学院end if;drop index if exists 学院.学院_PK;drop table if exists 学院;/*==============================================================*//* Table: 学院 *//*==============================================================*/create table 学院(学院代码 varchar(10) not null,学院名 varchar(8) null,学院人数 integer null,constraint PK_学院 primary key (学院代码));/*==============================================================*//* Index: 学院_PK *//*==============================================================*/create unique index 学院_PK on 学院 (学院代码 ASC); if exists(select 1 from sys.sysforeignkey where role='FK_安排_安排4_管理员') then alter table 安排delete foreign key FK_安排_安排4_管理员end if;drop index if exists 管理员.教务处_PK;drop table if exists 管理员;/*==============================================================*//* Table: 管理员 *//*==============================================================*/create table 管理员(管理员代码 varchar(20) not null,学生姓名 varchar(8) null,教师电话 varchar(20) null,管理员邮箱 char(10) null,constraint PK_管理员 primary key (管理员代码));/*==============================================================*//* Index: 教务处_PK *//*==============================================================*/create unique index 教务处_PK on 管理员 (管理员代码 ASC); if exists(select 1 from sys.sysforeignkey where role='FK_从属_从属_教师') then alter table 从属delete foreign key FK_从属_从属_教师end if;if exists(select 1 from sys.sysforeignkey where role='FK_安排_安排2_教师') then alter table 安排delete foreign key FK_安排_安排2_教师end if;drop index if exists 教师.教师_PK;drop table if exists 教师;/*==============================================================*//* Table: 教师 *//*==============================================================*/create table 教师(教工号 varchar(10) not null,学生姓名 varchar(8) null,教师电话 varchar(20) null,教师邮箱 varchar(30) null,constraint PK_教师 primary key (教工号));/*==============================================================*//* Index: 教师_PK *//*==============================================================*/create unique index 教师_PK on 教师 (教工号 ASC); if exists(select 1 from sys.sysforeignkey where role='FK_分配_分配2_教室') then alter table 分配delete foreign key FK_分配_分配2_教室end if;if exists(select 1 from sys.sysforeignkey where role='FK_安排_安排3_教室') thenalter table 安排delete foreign key FK_安排_安排3_教室end if;drop index if exists 教室.教室_PK;drop table if exists 教室;/*==============================================================*//* Table: 教室 *//*==============================================================*/create table 教室(教室编号 varchar(10) not null,所属校区 varchar(10) null,教学楼 varchar(8) null,constraint PK_教室 primary key (教室编号));/*==============================================================*//* Index: 教室_PK *//*==============================================================*/create unique index 教室_PK on 教室 (教室编号 ASC); if exists(select 1 from sys.sysforeignkey where role='FK_选择_选择_学生') then alter table 选择delete foreign key FK_选择_选择_学生end if;if exists(select 1 from sys.sysforeignkey where role='FK_选择_选择2_课程') then alter table 选择delete foreign key FK_选择_选择2_课程end if;drop index if exists 选择.选择2_FK;drop index if exists 选择.选择_FK;drop index if exists 选择.选择_PK;drop table if exists 选择;/*==============================================================*//* Table: 选择 *//*==============================================================*/create table 选择(学号 varchar(10) not null,课程代码 varchar(8) not null,constraint PK_选择 primary key clustered (学号, 课程代码)/*==============================================================*//* Index: 选择_PK */ /*==============================================================*/ create unique clustered index 选择_PK on 选择 (学号 ASC,课程代码 ASC);/*==============================================================*//* Index: 选择_FK */ /*==============================================================*/ create index 选择_FK on 选择 (学号 ASC);/*==============================================================*//* Index: 选择2_FK */ /*==============================================================*/ create index 选择2_FK on 选择 (课程代码 ASC);alter table 选择add constraint FK_选择_选择_学生 foreign key (学号)references 学生 (学号)on update restricton delete restrict;alter table 选择add constraint FK_选择_选择2_课程 foreign key (课程代码)references 课程 (课程代码)on update restricton delete restrict; if exists(select 1 from sys.sysforeignkey where role='FK_分配_分配_学生') thenalter table 分配delete foreign key FK_分配_分配_学生end if;if exists(select 1 from sys.sysforeignkey where role='FK_分配_分配2_教室') thenalter table 分配delete foreign key FK_分配_分配2_教室end if;drop index if exists 分配.分配2_FK;drop index if exists 分配.分配_FK;drop index if exists 分配.分配_PK;drop table if exists 分配;/*==============================================================*//* Table: 分配 *//*==============================================================*/create table 分配(学号 varchar(10) not null, 教室编号 varchar(10) not null, constraint PK_分配 primary key clustered (学号, 教室编号));/*==============================================================*//* Index: 分配_PK */ /*==============================================================*/ create unique clustered index 分配_PK on 分配 (学号 ASC,教室编号 ASC);/*==============================================================*//* Index: 分配_FK */ /*==============================================================*/ create index 分配_FK on 分配 (学号 ASC);/*==============================================================*//* Index: 分配2_FK */ /*==============================================================*/ create index 分配2_FK on 分配 (教室编号 ASC);alter table 分配add constraint FK_分配_分配_学生 foreign key (学号)references 学生 (学号)on update restricton delete restrict;alter table 分配add constraint FK_分配_分配2_教室 foreign key (教室编号)references 教室 (教室编号)on update restricton delete restrict; if exists(select 1 from sys.sysforeignkey where role='FK_安排_安排_课程') thenalter table 安排delete foreign key FK_安排_安排_课程end if;if exists(select 1 from sys.sysforeignkey where role='FK_安排_安排2_教师') thenalter table 安排delete foreign key FK_安排_安排2_教师end if;if exists(select 1 from sys.sysforeignkey where role='FK_安排_安排3_教室') thenalter table 安排delete foreign key FK_安排_安排3_教室end if;if exists(select 1 from sys.sysforeignkey where role='FK_安排_安排4_管理员') then alter table 安排delete foreign key FK_安排_安排4_管理员end if;drop index if exists 安排.安排4_FK;drop index if exists 安排.安排3_FK;drop index if exists 安排.安排2_FK;drop index if exists 安排.安排_FK;drop index if exists 安排.安排_PK;drop table if exists 安排;/*==============================================================*//* Table: 安排 *//*==============================================================*/create table 安排(课程代码 varchar(8) not null,教工号 varchar(10) not null,教室编号 varchar(10) not null,管理员代码 varchar(20) not null,上课时间 char(10) null,constraint PK_安排 primary key clustered (课程代码, 教工号, 教室编号, 管理员代码) );/*==============================================================*//* Index: 安排_PK *//*==============================================================*/create unique clustered index 安排_PK on 安排 (课程代码 ASC,教工号 ASC,教室编号 ASC,管理员代码 ASC);/*==============================================================*//* Index: 安排_FK */ /*==============================================================*/ create index 安排_FK on 安排 (课程代码 ASC);/*==============================================================*//* Index: 安排2_FK */ /*==============================================================*/ create index 安排2_FK on 安排 (教工号 ASC);/*==============================================================*//* Index: 安排3_FK */ /*==============================================================*/ create index 安排3_FK on 安排 (教室编号 ASC);/*==============================================================*//* Index: 安排4_FK *//*==============================================================*/create index 安排4_FK on 安排 (管理员代码 ASC);alter table 安排add constraint FK_安排_安排_课程 foreign key (课程代码)references 课程 (课程代码)on update restricton delete restrict;alter table 安排add constraint FK_安排_安排2_教师 foreign key (教工号)references 教师 (教工号)on update restricton delete restrict;alter table 安排add constraint FK_安排_安排3_教室 foreign key (教室编号)references 教室 (教室编号)on update restricton delete restrict;alter table 安排add constraint FK_安排_安排4_管理员 foreign key (管理员代码)references 管理员 (管理员代码)on update restricton delete restrict; if exists(select 1 from sys.sysforeignkey where role='FK_从属_从属_教师') thenalter table 从属delete foreign key FK_从属_从属_教师end if;if exists(select 1 from sys.sysforeignkey where role='FK_从属_从属2_学院') then alter table 从属delete foreign key FK_从属_从属2_学院end if;drop index if exists 从属.从属2_FK;drop index if exists 从属.从属_FK;drop index if exists 从属.从属_PK;drop table if exists 从属;/*==============================================================*//* Table: 从属 *//*==============================================================*/create table 从属(教工号 varchar(10) not null,学院代码 varchar(10) not null,constraint PK_从属 primary key clustered (教工号, 学院代码));/*==============================================================*//* Index: 从属_PK *//*==============================================================*/create unique clustered index 从属_PK on 从属 (教工号 ASC,学院代码 ASC);/*==============================================================*//* Index: 从属_FK *//*==============================================================*/create index 从属_FK on 从属 (教工号 ASC);/*==============================================================*//* Index: 从属2_FK *//*==============================================================*/create index 从属2_FK on 从属 (学院代码 ASC);alter table 从属add constraint FK_从属_从属_教师 foreign key (教工号) references 教师 (教工号)on update restricton delete restrict;alter table 从属add constraint FK_从属_从属2_学院 foreign key (学院代码)references 学院 (学院代码)on update restricton delete restrict;附录2:参考资料数据库系统基础教程(中、英文版,第2版),美国斯坦福大学,机械工业出版社2006.07《数据库设计教程》,何玉洁等翻译,机械工业出版社,2003《数据库系统教程》,王能斌著,电子工业出版社,2002。