毕业设计管理系统 数据库设计

一、需求分析

1.1 可行性分析

1.1.1经济可行性

该管理系统的设计使用的是 Microsoft SQL Server2016数据库开发平台进行代码编写、运行和调试,该软件都可以免费的获得。 因此,在经济上本系统的开发是可行的。

1.1.2管理可行性

对系统进行管理只需要拥有计算机和互联网即可,互联网已经是生活必不可少的东西。由于本系统是由PC机作为服务器的,系统用户对系统操作都很方便,因此系统在管理上也是可行的。

1.2 功能需求

通过前面的分析已经明确系统用户共有如下3类,不同的用户可以通过系统进行不同的操作。分别如下:

1.2.1管理员功能需求

系统管理员作为系统维护的主体,在系统中的主要任务和操作有以下的方面:
(1)管理员登录:管理员需要登录后可以进入系统进行操作。
(2)管理审核题目:查看、添加、修改、删除。
(3) 管理员可以为没有选题的学生分配题目。
开题报告信息查询。
(4)导师管理。 管理员可以对导师进行管理(查看、添加、修改、删除各个信息)。
(5)学生管理。 管理员可以对学生进行管理(查看、添加、修改、删除各个信息)。
(6)权限管理。 管理员可以对用户进行权限设置。

1.2.2导师用户功能需求

老师作为系统的二级管理员,具有以下功能:
(1)用户登录。
(2)负责毕业论文(设计)参考题目的发布:查看、添加、修改、删除论文题目。
(3)修改个人信息。
(4)论文(设计)撰写过程中的评阅,输入学生成绩:查看,添加,无法修改。

1.2.3学生用户功能需求

学生作为系统普通用户,具有以下功能:
(1)用户登录。
(2)可以参加论文(设计)选题:添加,修改。
(3)修改个人信息。
(4)查看导师的评阅和最终的答辩成绩:仅查看。

1.3构造系统逻辑模型(数据流图)

1.3.1顶层数据流图

1.3.2数据流图

1.4系统实现过程(系统功能结构图)

这是毕业设计管理系统的功能模块图,该图是按照数据流图画出。

二、概念模型设计

2.1概念设计

根据需求分析的数据项和数据结构以及画出的功能模块图,可以规划出本系统的三大类用户:系统管理员、学生(毕业)和导师。由于管理员、学生和导师的权限和操作功能大不相同,因此在本系统中需要分别进行数据记录,首先需要如下3个用户数据实体。

  1. 学生数据实体:学号,姓名,性别,班级编号,专业编号,出生年月,论文编号,成绩。
  2. 导师数据实体: 导师编号,姓名,性别,专业编号,职称,办公地点,联系电话
  3. 管理员数据实体:管理员编号,姓名,性别,专业编号,联系电话。
    由于操作模块的名称对应权限,在程序初始化时这些数据都应该添加,按照各个用户使用论文管理系统的目的进行论文管理,因此还要包括如下的几个数据实体:
  4. 成绩数据实体:学号,平时成绩,答辩成绩,论文分数。
  5. 论文数据实体:论文编号,导师编号,论文名称,论文类型。
  6. 专业数据实体:专业编号,专业名称 ,学院名称,办公地点。

2.2E-R图设计

专业实体、导师实体、学生实体等各实体的E-R图。具体如下图所示。

2.2.1局部E-R图

2.2.1.1学生实体E-R图

2.2.1.2导师实体E-R图

2.2.1.3管理员实体E-R图

2.2.1.4专业实体E-R图

2.2.1.5论文实体E-R图

2.2.1.6成绩实体E-R图

2.2.2整体E-R图

三、逻辑结构设计

注:1.主键是能确定一条记录的唯一标识。
2.外键用于与另一张表的关联,是能确定另一张表记录的字段,用于保持数据的一致性。

3.1关系模式中范式的判断:

(1)学生(学号,姓名,性别,班级编号,专业编号,出生年月,论文编号,总评成绩),其中学号是主键;专业编号,论文编号是外键;这里所有属性都是不可再分的基本数据项,所以属于第一范式。由于存在多个学生可以选择同一论文题,论文编号依赖于学号,但学号不依赖于论文编号,各属性不完全依赖于主键,所以属于第二范式。这里的学号设置上与专业编号,班级编号没有任何关系,因此没有非主属性对于码的传递函数依赖,是第三范式。
也可以将联系中的选题单独设置关系模式(学号,论文编号,总评成绩)。
(2)导师(导师编号,姓名,性别,专业编号,职称,联系电话)导师编号是主键;专业编号是外键;这里所有属性都是不可再分的基本数据项,所以属于第一范式,各属性完全依赖于主键,所以属于第二范式,这里的导师编号设置上与专业编号没有任何关系,没有非主属性对于码的传递函数依赖,是第三范式。
(3)论文(论文编号,导师编号,论文名称,论文类型)论文编号是主键;导师编号是外键;这里所有属性都是不可再分的基本数据项,所以属于第一范式,每个论文题只对应一个导师,一个导师可以对应多个论文题,因此这里的导师编号依赖于论文编号,论文编号不依赖于导师编号,所以各属性完全依赖于主键,所以属于第二范式,这里的学号与专业编号,班级编号没有任何关系,因此没有非主属性对于码的传递函数依赖,是第三范式。
(4)专业(专业编号,专业名称,办公地点)专业编号是主键;这里所有属性都是不可再分的基本数据项,所以属于第一范式,各属性完全依赖于主键,所以属于第二范式,这里没有非主属性对于码的传递函数依赖,是第三范式。
(5)管理员(管理员编号,姓名,性别,专业编号,联系电话)管理员编号是主键,没有外键;这里所有属性都是不可再分的基本数据项,所以属于第一范式,各属性完全依赖于主键,所以属于第二范式,这里的管理员编号设置上与专业编号没有任何关系,没有非主属性对于码的传递函数依赖,是第三范式。
(6)成绩(学号,平时成绩,答辩成绩,论文分数)学号既是主键也是外键;之所以没有在该关系模式设置总评成绩,是因为学号→(平时成绩,答辩成绩,论文分数),而(平时成绩,答辩成绩,论文分数)→总评成绩,如果添加上这里就只能属于第二范式(不过事实上为了提高效率可以保留该数据冗余,不用再对关系模式进行分解),这里使用视图来处理这一关系。这里所有属性都是不可再分的基本数据项,所以属于第一范式,各属性完全依赖于主键,所以属于第二范式,没有非主属性对于码的传递函数依赖,是第三范式。
由此可做数据库的关系模型:

3.2数据库关系模型

3.3 子(外)模式的设计(代码见5.2)

目的:1.使用更符合用户习惯的别名。
2.针对不同级别的用户定义不同的视图,以保证系统的安全性。 3.简化用户对系统的使用:如果某些局部应用中经常要使用某些很复杂的查询,为了方便用户,可以将这些复杂查询定义为视图。
(1)可以将学号,姓名,平时成绩,答辩成绩,论文成绩,总评成绩放在一起成为一个视图,方便查询。
(2)导师表中直接显示专业编号,因为专业编号才是专业表的主键,为了达到第三范式,没有显示专业名称,可以建立这样的视图,直接显示导师的专业名称,也可显示其办公地点。
(3)为了简化使用,查询总评成绩时,将学生表中的学号,论文编号,总评成绩单独作为一个视图,即选题(学号,论文编号,总评成绩)。

3.4 数据字典

为了使该系统的各数据表的含义更加清晰,对其功能做如下描述:

成绩表

论文表

专业表

学生表

导师表

管理员表

四、创建关系图
(注意:关系图中表名上不能有“*”号,这表示没有保存的状态。)

五、物理结构设计

数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。

5.1建立索引

索引就是表中数据和相应存储位置的列表,使用索引可以大大减少数据的查询时间。

  1. 聚集索引(主键索引):在数据库里面,所有行数都会按照主键索引进行排序。
  2. 非聚集索引:就是给普通字段加上索引。
  3. 联合索引:就是好几个字段组成的索引,称为联合索引。
    对于一个确定的关系,通常在下列情况下可以考虑建立索引:
    (1)在主键属性列和外键属性列上通常都可以分别建立索引,不仅有助于唯一性检查和完整性检查,而且可以加快连接查询的速度。 
    (2) 以查询为主的关系可建立尽可能多的索引。 
    (3) 对等值连接,但满足条件的元组较少的查询可以考虑建立索引。 
    (4) 如果查询可以从索引直接得到结果而不必访问关系,则对此种查询可以建立索引。 
    该毕业论文管理系统数据库可建立以下索引:

聚集索引:

1.每个表的主键(学生学号,导师编号,管理员编号,论文编号,专业编号,学号)就是唯一性索引。
2.为了方便查询成绩,可以在学生表建立成绩降序的索引。

CREATE INDEX Rep_Scno ON 学生(总评成绩 DESC);

3.为了方便查询学生,可以在学生表建立学号的唯一索引。

CREATE UNIQUE INDEX Stu_Sno ON 学生(学号);

非聚集索引:

4.为了方便查询成绩的具体信息,可以在成绩表建立答辩成绩,论文成绩降序的索引。

CREATE INDEX Re1_Scno ON 成绩(答辩成绩 DESC);
CREATE INDEX Re2_Scno ON 成绩(论文成绩 DESC);

5.为了方便查询学生的专业,年龄信息,可以在学生表建立专业编号,出生年月的索引。

CREATE INDEX AGE_Scno ON 学生(专业编号 DESC);
CREATE INDEX MAJ_Scno ON 学生(出生年月);

5.2建立视图

(1)将学号,平时成绩,答辩成绩,论文成绩,总评成绩放在一起成为一个视图,方便查询。

CREATE  VIEW  C_Student
AS
SELECT  学生.学号,姓名,平时成绩,答辩成绩,论文成绩,总评成绩
FROM  学生,成绩
WHERE 学生.学号=成绩.学号
WITH CHECK OPTION

(2)建立直接显示导师的专业名称的视图。

CREATE  VIEW  C_Teacher
AS
SELECT  导师.导师编号,姓名,导师.专业编号,专业.专业名称,专业.办公地点,联系电话
FROM  导师,专业
WHERE 导师.导师编号=专业.专业编号
WITH CHECK OPTION

(3)选题(学号,论文编号,总评成绩)。

CREATE  VIEW  C_SELECT
AS
SELECT  学号,姓名,论文编号,总评成绩
FROM  学生
WITH CHECK OPTION

六、数据库实施

6.1创建基本表

6.1.1创建数据库和使用

CREATE  DATABASE sjkUSE sjk

6.1.2创建数据表

/*创建论文表 */
create table 论文( 
导师编号 char(6),
论文编号 char(6),   
论文名称 char(30),   
论文类型 char(10), 
primary key (论文编号), 
) 
/*  创建专业表 */
create table 专业( 
专业编号 char(6),    
专业名称 char(30),    
办公地点 char(30),
primary key (专业编号)
) 
/*  创建管理员表 */
create table 管理员(
管理员编号 smallint,
姓名 char(8),
性别 char(2),
专业编号 char(6),
联系电话 char(12),
primary key (管理员编号),
foreign key (专业编号) references 专业(专业编号)
)
/*  创建导师表 */
create table 导师(
导师编号 char(6) ,
姓名  char(8) not null,/*约束不能为空*/
性别 char(2) not null, /*约束不能为空*/
专业编号 char(6) not null, /*约束不能为空*/
职称 char(10),
联系电话 char(12),
primary key (导师编号), /*导师编号为主键,必须唯一,不为空*/
foreign key (专业编号) references 专业(专业编号)
)
/*  创建学生表 */
create table 学生(
学号  char(13),
姓名 char(8) not null,/*约束不能为空*/
性别 char(2) not null, /*约束不能为空*/
班级编号 char(6) not null, /*约束不能为空*/
专业编号 char(6) not null, /*约束不能为空*/
出生年月 datetime not null, /*约束不能为空*/
论文编号 char(6),
总评成绩 smallint,
primary key (学号), /*学号为主键,必须唯一,不为空*/
foreign key (论文编号) references 论文(论文编号),
foreign key (专业编号) references 专业(专业编号)
)/*  创建成绩表 */
create table 成绩(
学号 char(13),
平时成绩 smallint,
论文成绩 smallint,
答辩成绩 smallint,
primary key (学号),
foreign key (学号) references 学生(学号),
)

结果:命令已成功完成。

6.1.3创建约束条件

PS:由于还有部分外键约束没有添加,所以需要再添加外键约束。

ALTER TABLE 论文
ADD CONSTRAINT FK__论文__导师
FOREIGN KEY(导师编号)
REFERENCES 导师(导师编号)
ON DELETE CASCADE

结果:命令已成功完成。

6.2创建用户操作

6.2.1创建学生,导师的登录用户、数据库用户,密码默认123456
/*  创建学生用户 */
EXEC sp_addlogin '学生','123456','sjk'
Use sjk
Exec sp_grantdbaccess '学生'
/*  创建导师用户 */
EXEC sp_addlogin '导师','123456','sjk'
Use sjk
Exec sp_grantdbaccess '导师'

结果:命令已成功完成。

6.2.2创建管理员的登录用户、数据库用户,密码默认123456

EXEC sp_addlogin '管理员','123456','sjk'
Use sjk
Exec sp_grantdbaccess '管理员'

结果:命令已成功完成。

6.3分配权限操作

6.3.1学生用户权限

/*个人信息的管理*/
GRANT SELECT,UPDATE
ON  学生
TO 学生;
/*导师表的查询*/
GRANT SELECT
ON 导师
TO 学生;
/*成绩的查询,*/
GRANT SELECT
ON 成绩
TO 学生;
/*专业的查询*/
GRANT SELECT
ON 专业
TO 学生;
/*论文表的查询*/
GRANT SELECT
ON  论文
TO 学生;

6.3.2导师用户权限

/*学生表的增删查改*/
GRANT SELECT
ON  学生
TO 导师;
/*个人信息的管理*/
GRANT SELECT,UPDATE
ON 导师
TO 导师;
/*成绩的查询,插入*/
GRANT SELECT,INSERT
ON 成绩
TO 导师;
/*专业的查询*/
GRANT SELECT
ON 专业
TO 导师;
/*论文表的增删查改*/
GRANT SELECT,DELETE,INSERT,UPDATE
ON  论文
TO 导师;

6.3.3管理员用户权限

/*学生表的增删查改*/
GRANT SELECT,DELETE,INSERT,UPDATE
ON  学生
TO 管理员;
/*教师表的增删查改*/
GRANT SELECT,DELETE,INSERT,UPDATE
ON  导师
TO 管理员;
/*论文表的增删查改*/
GRANT SELECT,DELETE,INSERT,UPDATE
ON  论文
TO 管理员;
/*个人信息的查询*/
GRANT SELECT,UPDATE
ON 管理员
TO 管理员;
/*成绩的查询*/
GRANT SELECT,DELETE,INSERT,UPDATE
ON 成绩
TO 管理员;
/*专业的查询*/
GRANT SELECT,DELETE,INSERT,UPDATE
ON 专业
TO 管理员;

结果:命令已成功完成。

6.4插入操作

6.4.1插入基本数据(学生表,导师表,管理员表,专业表)

/*插入基本数据*/
/*插入专业表*/
insert into 专业 values ('1000','计算机科学与技术','工科楼')
insert into 专业  values ('1001','软件工程','理科楼')
insert into 专业  values ('1002','水利大类','文科楼')
insert into 专业  values ('1003','给排水科学与技术','综教楼')
insert into 专业  values ('1004','给排水科学','综实楼')/*用于删除操作*/
/*插入导师表*/
insert into 导师 values ('002201','李琦','男' ,'1000','讲师','19923419234')
insert into 导师 values ('002202','李奇微','男','1001','副教授','19923452345')
insert into 导师 values ('002203','刘益斌','女','1002','教授','16678766345')
insert into 导师 values ('002204','刘益','男','1003','讲师','14590008888')
insert into 导师 values ('002205','王学','男','1000','副教授','15834568888')
insert into 导师 values ('002206','李平','男','1002','讲师', '15123453421')
insert into 导师 values ('002207','王强','男','1003','副教授', '18834523454')
insert into 导师 values ('002208','刘君','女','1001','教授','15530201231')
insert into 导师 values ('002209','刘平','女','1004','教授','15530201881')/*用于删除操作*//*插入管理员表*/
insert into 管理员 values (001301,'田新','男','1000','19968419234')
insert into 管理员 values (001302,'魏新','男','1001','18834545254')
insert into 管理员 values (001303,'周新','男','1002','16530201931')
insert into 管理员 values (001304,'李新','男','1003','15577771881')
/*插入学生表*/
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180001','田新民','男', '03/30/2000', '0001', '1000')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180002','王新','男', '09/04/2000','0001','1000')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180003','田新民','男', '03/04/2000','0001','1000') /*同名检测*/
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180004','王新','男', '09/04/2000','0002','1000')/*生日相同检测*/
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180005','田新民','男', '03/09/2000','0002','1000') /*同名检测*/
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180006','王新','男', '09/04/2001','0003','1001')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180007','郭黎明','男', '08/24/2000','0003','1001')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180008','郭黎','女', '09/04/2001','0004','1001')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180009','何明慧','女', '01/04/2002','0004','1001')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180010','何明','男', '02/22/2001','0004','1001')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180011','姜明明','男', '03/23/2002','0005','1002')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180012','姜明明','女', '10/02/2001','0005','1002')/*同名检测*/
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180013','何漓江','男', '09/03/2000','0005','1002')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180014','何漓','女', '08/22/2001','0006','1002')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180015','康嘉家','男', '05/23/2000','0006','1002')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180016','康纪平','女', '04/22/2001','0007','1003')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180017','包立琪','女', '09/12/2001','0007','1003')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180018','王海洋','男', '02/03/2000','0008','1003')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180019','王立平','女', '12/12/2001','0008','1003')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180020','王立','男', '04/22/2001','0008','1003')
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180021','假学生','男','04/22/2001','0008','1003')/*用于删除操作*/
insert into 学生(学号,姓名,性别,出生年月,班级编号,专业编号)
values ('20180022','空空','男', '04/22/2002','0008','1003')/*用于查询操作*/

6.4.2导师用户插入成绩表

/*插入成绩表*/
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180001',90,78,78)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180002',95,90,68)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180003',99,89,90)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180004',95,78,90)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180005',60,60,60)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180006',80,75,70)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180007',78,90,45)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180008',85,90,80)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180009',95,67,80)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180010',89,79,90)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180011',78,90,67)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180012',67,54,24)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180013',89,67,34)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180014',100,90,90)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180015',95,89,80)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180016',96,99,93)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180017',90,90,90)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180018',80,80,80)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180019',90,88,88)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180020',97,78,90)
insert into 成绩(学号,平时成绩,论文成绩,答辩成绩)  values ('20180021',88,78,90)/*用于删除操作*/

结果:(1 行受影响)….

6.4.3管理员用户插入论文表

/*插入论文表*/
insert into 论文 values('002201','003601','论文1','论证型')
insert into 论文 values('002201','003602','论文2','应用型')
insert into 论文 values('002201','003603','论文3','研究型')
insert into 论文 values('002201','003604','论文4','论证型')
insert into 论文 values('002202','003605','论文5','研究型')
insert into 论文 values('002202','003606','论文6','应用型')
insert into 论文 values('002202','003607','论文7','论证型')
insert into 论文 values('002202','003608','论文8','研究型')
insert into 论文 values('002203','003609','论文9','理论型')
insert into 论文 values('002203','003610','论文10','研究型')
insert into 论文 values('002203','003611','论文11','应用型')
insert into 论文 values('002203','003612','论文12','研究型')
insert into 论文 values('002204','003613','论文13','论证型')
insert into 论文 values('002204','003614','论文14','研究型')
insert into 论文 values('002204','003615','论文15','应用型')
insert into 论文 values('002204','003616','论文16','研究型')
insert into 论文 values('002204','003617','论文17','论证型')
insert into 论文 values('002205','003618','论文18','理论型')
insert into 论文 values('002205','003619','论文19','研究型')
insert into 论文 values('002205','003620','论文20','论证型')

结果:(1 行受影响)….

6.5修改操作

6.5.1学生用户修改个人信息,选论文

/*个人信息管理*/
update 学生 set 姓名='田一' where 学号='20180003'
update 学生 set 姓名='田中军' where 学号='20180005'
/*选论文题*/
update 学生 set 论文编号='003601' where 学号='20180001'
update 学生 set 论文编号='003602' where 学号='20180002'
update 学生 set 论文编号='003601' where 学号='20180003'
update 学生 set 论文编号='003602' where 学号='20180004'
update 学生 set 论文编号='003603' where 学号='20180005'
update 学生 set 论文编号='003604' where 学号='20180006'
update 学生 set 论文编号='003605' where 学号='20180007'
update 学生 set 论文编号='003606' where 学号='20180008'
update 学生 set 论文编号='003607' where 学号='20180009'
update 学生 set 论文编号='003607' where 学号='20180010'
update 学生 set 论文编号='003608' where 学号='20180011'
update 学生 set 论文编号='003608' where 学号='20180012'
update 学生 set 论文编号='003609' where 学号='20180013'
update 学生 set 论文编号='003610' where 学号='20180014'
update 学生 set 论文编号='003611' where 学号='20180015'
update 学生 set 论文编号='003612' where 学号='20180016'
update 学生 set 论文编号='003613' where 学号='20180017'
update 学生 set 论文编号='003614' where 学号='20180018'
update 学生 set 论文编号='003614' where 学号='20180019'
update 学生 set 论文编号='003615' where 学号='20180020'

6.5.2导师用户修改个人信息与论文表,无法修改成绩

update 导师 set 姓名='李奇' where 姓名='李奇微'
update 论文 set 论文类型='应用型' where 论文编号='003606'

(结果:(1 行受影响)…)

update 成绩 set 平时成绩=100 where 学号='20180001'

(结果:消息 229,级别 14,状态 5,第 3 行
拒绝了对对象 ‘成绩’ (数据库 ‘’,架构 ‘dbo’)的 UPDATE 权限。)

6.5.3管理用户修改个人信息,学生、导师、成绩、论文表

/计算总成绩/

update 学生
set 总评成绩=平时成绩*0.2+论文成绩*0.4+答辩成绩*0.4
FROM 成绩
WHERE 学生.学号=成绩.学号

(结果:(21 行受影响)…)
/* 修改个人信息,学生、导师、成绩、论文表*/

update 成绩 set 平时成绩=95 where 学号='20180001'
update 管理员 set 姓名='田田' where 姓名='田新民'
update 学生 set 姓名='田中' where 姓名='田新民'
update 导师 set 姓名='李奇' where 姓名='李奇微'
update 论文 set 论文类型='研究型' where 论文编号='003606'

(结果:(1 行受影响)…)

6.6删除操作

PS:学生用户没有任何删除权限。

6.6.1导师用户删除论文表

delete  from 论文 where 论文编号 = '003616'
delete  from 论文 where 论文编号 = '003617'

6.6.2管理员用户删除论文,学生,导师,成绩表

/由于存在外键约束,需要注意删除的顺序/

/*删除论文表*/
delete  from 论文 where 论文编号 = '003618'
delete  from 论文 where 论文编号 = '003619'
delete  from 论文 where 论文编号 = '003620'
/*删除成绩表*/
delete  from 成绩 where 学号 = '20180021'
/*删除学生表*/
delete  from 学生 where 学号 = '20180021'
/*删除导师表*/
delete  from 导师 where 导师编号 = '002209'
/*删除专业表*/
delete  from 专业 where 专业编号 = '1004'

毕业设计管理系统 数据库设计相关推荐

  1. 商场计算机管理系统,计算机专业毕业论文商场管理系统—数据库设计及人事管理模块设计.doc...

    韶 关 学 院 毕 业 设 计 题 目:商场管理系统 -数据库设计及人事管理模块设计 学生姓名:xx 学 号:xx 系 (院):计算机科学系 专 业:计算机科学与技术 班 级:04级本(2)班 指导教 ...

  2. 基于PHP的毕业设计管理系统的设计与实现(源码+配套论文)

    项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据你想解决的问 ...

  3. 电影院票务管理系统数据库设计(1)

    这两天听到一道面试题:设计一个电影院票务管理系统的表结构. 挺有意思的,我自己也试着做了一做,感觉还是有不少收获的.在本文中我想把做这道题的整个思路重新理一下,也算做个整理了. 现在能得到的需求只有一 ...

  4. 电影院票务管理系统数据库设计(2)

    在电影院票务管理系统数据库设计(1)中我们从一道面试题展开,最后给出如下影院票务管理系统的表关系图 以上的设计是否易用? 首先想一下订票最简单的过程,不包括意外情况. 顾客先来到柜台,跟柜台服务员说要 ...

  5. 固定资产管理mysql_固定资产管理系统数据库设计

    固定资产管理系统数据库设计 如何看待固定资产管理系统数据库设计呢?近年来越来越多的企业在资产管理方面投入着更多的精力,主要就是因资产管理是企业生产经营活动中比较重要的环节.而其中固定资产又是企业中资产 ...

  6. 医院管理系统数据库设计

    医院管理系统数据库设计 数据库名:hisdb 一基本信息表 1.科室表(keshi) 字段名 中文名 类型 能否为空 备注 ID 科室编号 Int N 主键,自增 Name 科室名称 Varchar ...

  7. 学生管理系统的mysql数据库设计_MySQL数据库--学生管理系统数据库设计

    目录 学生管理系统数据库设计 学生管理系统功能介绍 数据库设计步骤 第1步: 找对象 第2步:找属性 第3步: 找关系 建表原则 第4步: 找特例: 等级明显而且不包含敏感数据的信息建议保持为1张表 ...

  8. 权限管理系统数据库设计的简单构思

    最近在工作中接触到权限管理的设计,于是,自己在网上查阅了部分资料,再加上自己的一些思考,构思了一个简单的权限管理系统的数据库设计. RBAC与Tag 说到权限管理,一般都会想到基于角色的访问控制(Ro ...

  9. 学生成绩管理系统数据库设计--MySQLSQL Server

    MySQL 数据库设计-学生成绩管理系统 设计大纲 友情链接 1.医疗信息管理系统数据库–MySQL 2.邮件管理数据库设计–MySQL 3.点餐系统数据库设计–SQL Server 4.商品管理系统 ...

最新文章

  1. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解
  2. 轨迹系列8——记某真实项目中轨迹展示查询效率优化方案一(初步设计)
  3. Myeclipse中快速插入HttpServlet子类中doGet和doPost方法
  4. linux的网络配置
  5. 只安装了JRE,没有手动配置环境变量,eclipse跑不起来,Exit code = -1
  6. 布线管理的设计(一)
  7. 诺基亚9.3再曝光:后置1亿像素圆形五摄 价格或超6000元
  8. 苹果支付35亿元和解iPhone“降速门”:国内用户又被忽略了
  9. 【链接】Eclipse的Debug调试技巧
  10. Java问题解决:错误: 找不到或无法加载主类
  11. django pdf转html5,pytho pdfkit 将网页django2.0教程内容打印成pdf文档
  12. python 指定时间运行代码
  13. 快速查看是哪个文件占用空间大
  14. css3 移动端video视频全屏,横屏展示,适配微信/打包成app
  15. 公务员考试情景面试题设计技术
  16. 2022危险化学品经营单位主要负责人考试题库及答案
  17. 苹果xr截屏怎么截_苹果系统截屏录屏+标记剪辑功能详解( iPhone/iPad/Mac)
  18. 第三方邮件、短信服务
  19. linux如何安装python
  20. 首席新媒体运营黎想教程:社群搭建及运营实操攻略

热门文章

  1. linux使用Quota配额之须配额目录为非独立文件系统并无可分配分区解决办法
  2. 启航——我的第一篇博客
  3. [汇编语言]标志寄存器
  4. 如何白piao一台优质的华为云服务器
  5. 手机里微信更换了头像电脑没同步
  6. @Retention(RetentionPolicy.RUNTIME)
  7. 一起学Python 第1章 出发吧
  8. Java实现网络聊天程序的设计与实现(基于UDP协议)
  9. MATLAB中画折线图:plot函数的简单用法
  10. Sprite的一些有趣的现象