现在的位置: 首页 > 综合 > 正文

《sql—教学反馈系统-阶段项目1》

2013年11月07日 ⁄ 综合 ⁄ 共 11233字 ⁄ 字号 评论关闭
文章目录
--修改列
--把 "Address" 栏位改名为 "Addr"。这可以用以下的指令达成: 
--ALTER table customer change Address Addr char(50)

------------------------------------------------------------------------
--1 通过给定的数据库表结构关系图和表格中定义的规范,创建数据库数据表
--a) 创建数据库
--	使用T-SQL创建数据库feedback,要求:
	--①一个主要文件(存放在第一个硬盘分区C:\project文件夹下),初始大小为10M,最大为200M,文件自动增长率为15% 
	--②一个次要数据文件(分别存放在第二个硬盘分区D上) 
	--③一个日志文件(存放在第三个硬盘分区E:上)  
	--④检查数据库是否已存在,如果存在则先删除
--提示:使用xp_cmdshell调用DOS命令创建文件夹;
--使用exists判断数据库是否存在

------------------------------------------------------------------------
--	创建文件夹
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
GO
-- 调用DOS命令创建project文件夹
EXEC xp_cmdshell 'mkdir c:\project'
GO  

-- 判断是否存在该数据库,若存在则删除
USE master
GO
IF EXISTS (SELECT * FROM sysdatabases WHERE NAME='feedback')
	DROP DATABASE feedback;
GO

--根据要求创建数据库
USE master
GO
CREATE DATABASE feedback
ON PRIMARY 
( 
	NAME = feedback_data,
	FILENAME = 'C:\project\feedback.mdf',
	SIZE = 10MB,
	MAXSIZE = 200MB,
	FILEGROWTH = 15%
),
(	 
	NAME = feedback_data1,
	FILENAME = 'd:\feedback.ndf'
)
LOG ON 
( 
	NAME = feedback_log,
	FILENAME = 'e:\feedback.ldf'
)
GO

------------------创建表----------------------
--1创建 人员类型表
USE feedback
IF EXISTS(SELECT * FROM sysobjects WHERE NAME='usertype')
	DROP TABLE usertype
GO
CREATE TABLE usertype 
(
	usertypeid INT IDENTITY(1,1) PRIMARY KEY,
	utypename VARCHAR(20) NOT NULL UNIQUE
--CONSTRAINT FK_feedback FOREIGN KEY (username)
)

--2创建 考核方式类型表
IF EXISTS(SELECT * FROM sysobjects WHERE NAME='methodtype')
	DROP TABLE methodtype
GO
CREATE TABLE methodtype 
(
	methodtypeid INT IDENTITY(1,1) PRIMARY KEY,
	typename VARCHAR(20) NOT NULL UNIQUE,
	description VARCHAR(100) 
)

--3创建 考核项表
IF EXISTS(SELECT * FROM sysobjects WHERE NAME='item')
	DROP TABLE item
GO
CREATE TABLE item 
(
	itemid INT IDENTITY(1,1) PRIMARY KEY,
	itemname VARCHAR(60) NOT NULL UNIQUE,
	methodtypeid INT NOT NULL REFERENCES methodtype(methodtypeid),
	usertypeid INT NOT NULL REFERENCES usertype(usertypeid)
)

--4建立 反馈模板表
IF EXISTS(SELECT * FROM sysobjects WHERE NAME='template')
	DROP TABLE template
GO
CREATE TABLE template 
(
	templateid INT IDENTITY(1,1) PRIMARY KEY,
	templatename VARCHAR(30) NOT NULL UNIQUE,
	status INT NOT NULL DEFAULT 0,
	usertypeid INT NOT NULL REFERENCES usertype(usertypeid)
)
--修改表的列
/*
SELECT * FROM template
ALTER TABLE template DROP CONSTRAINT CK_status
ALTER TABLE template DROP COLUMN status
ALTER TABLE template ADD  status INT NOT NULL DEFAULT 0
*/
--添加约束 CHECK 0正常(默认) 1删除
ALTER TABLE template
	ADD CONSTRAINT CK_status CHECK(status in (0,1))

--5建立 反馈模板与考核项关联表
IF EXISTS(SELECT * FROM sysobjects WHERE NAME='templateanditem')
	DROP TABLE templateanditem
GO
CREATE TABLE templateanditem 
(
	id INT IDENTITY(1,1) PRIMARY KEY,
	templateid INT NOT NULL REFERENCES template(templateid),	--与考核项编号一起唯一
	itemid INT NOT NULL REFERENCES item(itemid)	--与考核项编号一起唯一
)
ALTER TABLE templateanditem
	ADD CONSTRAINT UK_templateid_itemid UNIQUE(templateid,itemid)

/*
2人员类型表的增/删/改
a) 使用T-SQL向人员类型表中插入4条测试数据(①教员、②班主任、③机房维护员、④教务人员)
b) 使用T-SQL删除人员类型表中的“教务人员”
c) 使用T-SQL修改人员类型表中的数据,将“机房维护员”改为“机房管理员”
*/

--a) 使用T-SQL向人员类型表中插入4条测试数据(①教员、②班主任、③机房维护员、④教务人员)
INSERT INTO usertype (utypename) VALUES ('教员')
INSERT INTO usertype (utypename) VALUES ('班主任')
INSERT INTO usertype (utypename) VALUES ('机房维护员')
INSERT INTO usertype (utypename) VALUES ('教务人员')
GO
--查询 usertype 表内数据
SELECT * FROM usertype

--b) 使用T-SQL删除人员类型表中的“教务人员”
DELETE usertype WHERE utypename='教务人员'

--c) 使用T-SQL修改人员类型表中的数据,将“机房维护员”改为“机房管理员”
UPDATE usertype SET utypename='机房管理员' WHERE utypename='机房维护员' 
GO
/*
3考核方式类型表的增加
a) 使用T-SQL向考核方式类型表中插入2条测试数据
(①按回答评定、②按分数评定/评价标准:5分[优秀] 4分[良好] 3分[一般] 2分[差] 1分[很差])
*/
--查询数据
SELECT * FROM methodtype

INSERT INTO methodtype (typename,description) VALUES ('answer','按回答评定')
INSERT INTO methodtype (typename,description) VALUES ('sorce','按分数评定/评价标准:5分[优秀] 4分[良好] 3分[一般] 2分[差] 1分[很差]')
GO
/*
4考核项的增加
a) 使用T-SQL向考核项表中插入10条测试数据
(数据由学员根据现实自己模拟,适用于教员的5条,其中2条按回答评定;
适用于班主任的3条;适用于机房管理员的2条)
*/
SELECT * FROM item

--查出考核方式的编号
SELECT methodtypeid FROM methodtype WHERE typename='answer' --> 1
SELECT methodtypeid FROM methodtype WHERE typename='sorce' --> 2

--(1).适用于教员的5条,其中2条按回答评定

--查出教员的类型编号即usertypeid
SELECT usertypeid FROM usertype WHERE utypename='教员' --> 1

INSERT INTO item (itemname,methodtypeid,usertypeid) VALUES ('对该教员有什么建议?',1,1)
INSERT INTO item (itemname,methodtypeid,usertypeid) VALUES ('该教员哪方面对你有帮助?',1,1)

INSERT INTO item (itemname,methodtypeid,usertypeid) VALUES ('讲课是否活跃?',2,1)
INSERT INTO item (itemname,methodtypeid,usertypeid) VALUES ('内容是否详细?',2,1)
INSERT INTO item (itemname,methodtypeid,usertypeid) VALUES ('是否热心帮助同学?',2,1)

--删除某项
/*
DELETE item WHERE itemname='上课是否准时?'
DELETE item WHERE itemname='课前是否备课?'
DELETE item WHERE itemname='讲课是否活跃?'
DELETE item WHERE itemname='内容是否详细?'
DELETE item WHERE itemname='是否热心帮助同学?'
*/
GO
--(2).适用于班主任的3条
SELECT * FROM usertype

SELECT usertypeid FROM usertype WHERE utypename='班主任' --> 2

INSERT INTO item (itemname,methodtypeid,usertypeid) VALUES ('感觉班主任哪些方面需要改进',1,2)

INSERT INTO item (itemname,methodtypeid,usertypeid) VALUES ('是否经常开班会?',2,2)
INSERT INTO item (itemname,methodtypeid,usertypeid) VALUES ('是否关心班级的相关事情?',2,2)
GO
--(3).适用于机房管理员的2条
SELECT usertypeid FROM usertype WHERE utypename='机房管理员' --> 3

INSERT INTO item (itemname,methodtypeid,usertypeid) VALUES ('对该管理的服务态度有什么建议?',1,3)

INSERT INTO item (itemname,methodtypeid,usertypeid) VALUES ('对该管理员的态度打多少分?',2,3)
GO
/*
5考核模板的增加/修改/删除
a) 使用T-SQL向考核模板表中插入3条适用于教员、
1条适用于班主任、1条适用于机房管理员的测试数据(数据由学员根据现实自己模拟)
b) 使用T-SQL修改考核模板表中适用于教员的任1条测试数据,
要求必须修改模板名称和调整模板中包含的考核项
c) 使用T-SQL删除考核模板表中适用于教员的任1条测试数据
*/

--a) 使用T-SQL向考核模板表中插入3条适用于教员、
--1条适用于班主任、1条适用于机房管理员的测试数据

SELECT * FROM template
SELECT * FROM item

SELECT usertypeid FROM usertype WHERE utypename='教员' --> 1
SELECT usertypeid FROM usertype WHERE utypename='班主任' --> 2
SELECT usertypeid FROM usertype WHERE utypename='机房管理员' --> 3

INSERT INTO template (templatename, usertypeid) VALUES ('理论课评定', 1)
INSERT INTO template (templatename, usertypeid) VALUES ('毕业设计课评定', 1)
INSERT INTO template (templatename, usertypeid) VALUES ('上课情况评定', 1)
INSERT INTO template (templatename, usertypeid) VALUES ('班主任代班工作的调查', 2)
INSERT INTO template (templatename, usertypeid) VALUES ('机房管理工作的调查', 3)
GO

--关联数据
SELECT templateid FROM template WHERE templatename='理论课评定' --> 1
SELECT templateid FROM template WHERE templatename='毕业设计课评定' --> 2
SELECT templateid FROM template WHERE templatename='上课情况评定' --> 3
SELECT templateid FROM template WHERE templatename='班主任代班工作的调查' --> 4
SELECT templateid FROM template WHERE templatename='机房管理工作的调查' --> 5

INSERT INTO templateanditem (templateid, itemid) VALUES (1, 1)
INSERT INTO templateanditem (templateid, itemid) VALUES (1, 2)
INSERT INTO templateanditem (templateid, itemid) VALUES (1, 3)
INSERT INTO templateanditem (templateid, itemid) VALUES (1, 4)
INSERT INTO templateanditem (templateid, itemid) VALUES (1, 5)
INSERT INTO templateanditem (templateid, itemid) VALUES (2, 2)
INSERT INTO templateanditem (templateid, itemid) VALUES (3, 3)
INSERT INTO templateanditem (templateid, itemid) VALUES (4, 6)
INSERT INTO templateanditem (templateid, itemid) VALUES (4, 7)
INSERT INTO templateanditem (templateid, itemid) VALUES (4, 8)
INSERT INTO templateanditem (templateid, itemid) VALUES (5, 9)
INSERT INTO templateanditem (templateid, itemid) VALUES (5, 10)
GO
DELETE templateanditem WHERE id = 11 or id = 12

GO
--b) 使用T-SQL修改考核模板表中适用于教员的任1条测试数据,
--要求必须修改模板名称
UPDATE template SET templatename = '理论课的评定' WHERE templatename = '理论课评定'
GO

SELECT * FROM template

--c) 使用T-SQL删除考核模板表中适用于教员的任1条测试数据

--先删除关联数据
--SELECT templateid FROM template WHERE usertypeid = (SELECT usertypeid FROM usertype WHERE utypename = '教员')
SELECT * FROM template WHERE usertypeid = (SELECT usertypeid FROM usertype WHERE utypename = '教员')
--DELETE templateanditem WHERE templateid = (...)

UPDATE template SET status = 1 WHERE templateid = 1

/*
6考核模板的综合查询	
a) 使用T-SQL查询适用于教员和班主任的考核模板,要求显示格式如下图所示:
提示:使用子查询、IN…、CASE…WHEN…THEN…
b) 使用T-SQL查询所有正常状态的考核模板及其包含的考核项,没有考核项则显示”无考核项”,要求显示格式如下图所示:
提示:使用子查询、CASE…WHEN…THEN…
*/

--a) 使用T-SQL查询适用于教员和班主任的考核模板,要求显示格式如下图所示:
--提示:使用子查询、IN…、CASE…WHEN…THEN…

SELECT * FROM template
SELECT * FROM usertype

SELECT templatename AS '模板名称', utypename AS '适用人员类型',
(CASE status
	WHEN 0 THEN '正常'
	WHEN 1 THEN '已删除'
END) AS '状态'
FROM template, usertype WHERE template.usertypeid = usertype.usertypeid

--b) 使用T-SQL查询所有正常状态的考核模板及其包含的考核项,没有考核项则显示”无考核项”,要求显示格式如下图所示:
--提示:使用子查询、CASE…WHEN…THEN…

SELECT * FROM template
SELECT * FROM usertype
SELECT * FROM item
SELECT * FROM templateanditem


SELECT templatename AS '模板名称',uypename AS '适用人员类型',(
	CASE 
		WHEN itemname is null THEN '无考核项'
		when itemname is not null THEN itemname
	END
	) AS '考核项'
FROM template left join templateanditem
	ON template.templateid=templateanditem.templateid
left join item
	ON templateanditem.itemid=item.itemid
left join usertype
	ON template.usertypeid=usertype.usertypeid
WHERE status = 0

教学反馈系统-阶段项目1

第一部分 案例描述

       案例目的

         学习T-SQL基本概念、实体模型、ER图技术,建库、建表、基本增删改查,复杂查询(条件、关联、复合),培养学生关于数据库的设计能力与T-SQL编码能力。

       案例难度

         ★★★

       案例覆盖技能点

1、  T-SQL基本概念

2、  ER图技术

1)       能够看懂数据库ER图、表结构关系图

3、  建库、建表、基本增删改查等T-SQL技术

1)       根据E-R图使用T-SQL语句建库、建表

2)       对数据库进行增删改查

4、  高级查询技术

1)       会使用 IN,NOTIN,EXISTS,NOT EXISTS关键字

2)       会使用CASE…WHEN…THEN…

3)       会使用关联查询

4)       会使用子查询

       推荐案例完成时间

          0.5天

适用课程和对象

         SQLSERVER数据库基本技术

        

第二部分 需求和开发环境

       使用技术和开发环境

         SQLServer 2005

项目背景

中国经济数年来持续高增长带来了专业性职业人才的需求激增,职业教育作用日益显现,优秀企业也孕育而生。他们的作用不仅仅为社会培养了专业人才,在产业经营领域,他们也扮演了重要的角色。改革开放以来,随着中国经济社会的发展,职业教育越来越受到国家的高度重视和社会的广泛关注。随着经济社会的发展,中国的职业教育取得了长足的发展,在职业教育理念的实践群体中,若想更好地成为佼佼者,无疑是在在规模化发展中保障教学质量是其中一个比较重要的方面。

       案例需求

教学质量是学校生存与发展的生命线,不断提高课堂教学水平是学校和每一位教师的共同心愿。及时了解课堂教学的主体—学生对教学情况的评价及建议,有利于教师发现自己教学中的优点以及不足,从而进一步改进教学方法,提高教学水平。为了更好的提高教学水平,建立学校与学员的更好勾通,院领导研究决定研发本系统,并提供考核内容管理、反馈项目管理、反馈表管理、数据统计分析等主要功能,本阶段案例主要以考核内容管理为主要分析目标,详细功能描述如下:

1、  考核内容管理

a)    考核项设置

根据学院内部人员类型(/班主任/机房维护员,等学院内部工作)分别进行考核项的管理和维护,包括对考核项的添加、修改、删除、查看、批量删除。考核项的详细信息包括:考核内容编号、考核项内容、考核方式(按分数评定/按回答评定)、人员类型。

考核内容列表

添加考核内容

b)    反馈模板设置

对学院内部反馈模板进行管理和维护,包括对反馈模板的添加、修改、删除、查看、批量删除。反馈模板的详细信息包括:反馈模板编号、反馈模板名称、被评价人类型、多项考核内容。

反馈模板列表

添加反馈模板

 

 

 

 

                  系统基本模块包括:

功能点

难度

 

数据库与表的建立

★★

 

人员类型表的增/删/改

★★

 

考核方式类型表的增加

 

考核项的增加

 

考核模板的增加/修改/删除

★★★

 

考核模板的综合查询

★★★★

 

 

功能点介绍

数据库表结构关系图

 

表1 人员类型表

表名

usertype (人员类型表)

列名

描述

数据类型

空/非空

约束条件

usertypeid

类型编号

int

非空

主键,标识列

utypename

类型名称

Varchar(20)

非空

唯一

 

表2 考核方式类型表

表名

methodtype (考核方式表)

列名

描述

数据类型

空/非空

约束条件

methodtypeid

考核方式编号

int

非空

主键,标识列

typename

考核方式名称

Varchar(20)

非空

唯一

description

描述

Varchar(100)

 

 

 

表3 考核项表

表名

item (考核项表)

列名

描述

数据类型

空/非空

约束条件

itemid

考核项编号

int

非空

主键,标识列

itemname

考核项名称

Varchar(60)

非空

唯一

methodtypeid

考核方式编号

int

非空

外键

usertypeid

适用人员类型编号

int

非空

外键

 

表4 反馈模板表

表名

template (反馈模板表)

列名

描述

数据类型

空/非空

约束条件

templateid

模板编号

int

非空

主键,标识列

templatename

模板名称

Varchar(30)

非空

唯一

status

状态

int

非空

0-正常(默认值)

1-删除

usertypeid

适用人员类型编号

int

非空

外键

 

表5 反馈模板与考核项关联表

表名

templateanditem (反馈模板与考核项关联表)

列名

描述

数据类型

空/非空

约束条件

id

编号

int

非空

主键,标识列

templateid

模板编号

int

非空

外键

与考核项编号一起,唯一

itemid

考核项编号

int

非空

外键

与模板编号一起,唯一

 

 

 

1 通过给定的数据库表结构关系图和表格中定义的规范,创建数据库数据表

a) 创建数据库

使用T-SQL创建数据库feedback,要求:①一个主要文件(存放在第一个硬盘分区C:\project文件夹下),初始大小为10M,最大为200M,文件自动增长率为15% ②一个次要数据文件(分别存放在第二个硬盘分区D上) ③一个日志文件(存放在第三个硬盘分区E:上)  ④检查数据库是否已存在,如果存在则先删除

提示:使用xp_cmdshell调用DOS命令创建文件夹;

使用exists判断数据库是否存在

b) 创建数据表

使用T-SQL分别创建如下几个表:①人员类型表 ②考核方式类型表 ③考核项表④反馈模板表 ⑤考核项和反馈模板关联表。要求:检查数据表是否已存在,如果存在则先删除表结构

c) 添加约束

根据ER图及表结构规范说明,使用T-SQL向各表添加约束,具体要求如下:

ü  所有名称不允许为空,并且唯一

ü  反馈模板状态, 0-正常(默认值)、1-删除

ü  根据ER图,创建外键

提示:使用Alter Table…… Add Constraint……

2人员类型表的增/删/改

a) 使用T-SQL向人员类型表中插入4条测试数据(①教员、②班主任、③机房维护员、④教务人员)

b) 使用T-SQL删除人员类型表中的“教务人员”

c) 使用T-SQL修改人员类型表中的数据,将“机房维护员”改为“机房管理员”

3考核方式类型表的增加

a) 使用T-SQL向考核方式类型表中插入2条测试数据(①按回答评定、②按分数评定/评价标准:5分[优秀] 4分[良好] 3分[一般] 2分[差] 1分[很差])

4考核项的增加

a) 使用T-SQL向考核项表中插入10条测试数据(数据由学员根据现实自己模拟,适用于教员的5条,其中2条按回答评定;适用于班主任的3条;适用于机房管理员的2条)

5考核模板的增加/修改/删除

a) 使用T-SQL向考核模板表中插入3条适用于教员、1条适用于班主任、1条适用于机房管理员的测试数据(数据由学员根据现实自己模拟)

b) 使用T-SQL修改考核模板表中适用于教员的任1条测试数据,要求必须修改模板名称

c) 使用T-SQL删除考核模板表中适用于教员的任1条测试数据

6考核模板的综合查询                                              

a) 使用T-SQL查询适用于教员和班主任的考核模板,要求显示格式如下图所示:

提示:使用子查询、IN…CASE…WHEN…THEN…

b) 使用T-SQL查询所有正常状态的考核模板及其包含的考核项,没有考核项则显示”无考核项”,要求显示格式如下图所示:

提示:使用多表联接查询、CASE…WHEN…THEN…

第三部分 考核评价点

序号

功能列表

功能描述

分数

说明

1

正确设计数据库/数据表,添加约束

根据题目要求正确创建数据库、数据库,并正确添加所有约束

20

必做

2

人员类型表的增/删/改

正确对人员类型表中的数据进行添加、修改和删除功能

10

必做

3

考核方式类型表的增加

正确对考核方式类型表中的数据进行添加功能

5

必做

4

考核项的增加

正确对考核项表中的数据进行添加功能

5

必做

5

考核模板的增加/修改/删除

正确对考核模板表中的数据进行添加、修改和删除功能

20

必做

6

考核模板的综合查询

根据题目要求及显示格式要求,实现对考核模板等数据的综合查询功能

30

必做

7

数据库命名规范

数据库中的表名,列名,都要符合规范要求,不能任意命名

10

必做

 

 

 

【上篇】
【下篇】

抱歉!评论已关闭.