完整版中南大学数据库系统安全课程.docx
- 文档编号:24428649
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:39
- 大小:711.07KB
完整版中南大学数据库系统安全课程.docx
《完整版中南大学数据库系统安全课程.docx》由会员分享,可在线阅读,更多相关《完整版中南大学数据库系统安全课程.docx(39页珍藏版)》请在冰豆网上搜索。
完整版中南大学数据库系统安全课程
CENTRALSOUTHUNIVERSITY
数据库系统安全课程设计报告
题目大学学生成绩管理系统
学生姓名
专业班级
学号
学院信息科学与工程学院
指导教师李祖德
实验时间2015年01月
第一章问题描述及设计目标………………………………2
第二章系统需求分析………………………………………3
2.1需求描述…………………………………………………3
2.2系统功能结构……………………………………………3
2.3数据流图…………………………………………………4
第三章数据库设计…………………………………………5
3.1全局E-R图………………………………………………5
3.2数据字典…………………………………………………5
3.3数据库内关系表定义……………………………………7
第四章数据库实现…………………………………………8
4.1数据库创建SQL代码………………………………………8
4.2关系表(及相关视图)创建SQL代码………………………8
4.3存储过程、触发器等的创建SQL代码………………………14
第五章RBAC应用场境描述…………………………………18
5.1场境1描述………………………………………………18
5.2场境2描述………………………………………………20
5.3场境3描述………………………………………………22
5.4场境4描述………………………………………………23
第六章心得体验……………………………………………26
第七章总结…………………………………………………26
第一章问题描述及设计目标
1.1问题描述
随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生成绩管理仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低。
除此之外,虽然大量数据库实现了基于角色的访问控制功能,却没有对其特征集达成一致。
缺乏广为接受的模型,导致了对基于角色的访问控制作用和含义理解的不规范性和不确定性。
基于以上情况,为了解决学生成绩查询和管理上遇到的实际困难,设计了一套基于RBAC模型的大学学生成绩管理系统,使学生成绩的录入和管理更加信息化、智能化,使成绩的查询更加高效,系统价值有了更高的体现。
1.2设计总目标
(1)掌握如何在真实数据库系统中实现基于角色访问控制(RBAC)模型。
(1)掌握如何在特定软件系统中基于RBAC模型访问和操控数据库。
1.3设计总要求
∙在真实数据库系统中实现RBAC模型
∙开发应用演示界面,演示如何基于RBAC访问某数据库
o演示界面最好是可实际操作的可视化界面,要能演示。
o如果未可视化,必须演示代码运行过程及结果。
∙数据库依据应用系统的需求而定,应用系统从如下列表中选择。
1.4RBAC简介
基于角色访问控制(RBAC)是当前主流的数据库访问控制技术。
RBAC的一般模型如下:
第二章系统需求分析
2.1需求描述
2.1.1学生成绩管理
负责对学生成绩的录入、删除、更改、查询以及其他功能的管理。
(1)管理员负责学生表、教师表、课程表等基本表的基本数据的录入、删除和更改,并且可修改成绩表的选课情况。
(2)教师、学生分别可以查询及更改教师表、学生表中属于自己的相应数据。
(3)教师可以查询及更改成绩表中所教学生的成绩,学生只能查询成绩表中属于自己的成绩。
2.1.2用户和权限管理
实现对系统用户以及不同角色的权限的管理
(1)管理员可以创建、删除系统用户
(2)用户可以在登录系统后修改自己的相应资料
(3)每个用户在创建时须赋于相应角色
(4)每个角色在被创建时可以赋于相应权限,其所具有的权限可以修改
(5)角色创建后可以修改、删除
(6)默认的系统角色:
管理员
教师
班长
学生
数据库
系统结构图:
界面显示模块主要面向用户完成相应操作,并收集操作相关信息,向上提交给逻辑处理模块。
逻辑处理模块收集界面显示模块返还的信息,并判断数据的真实性和合法性,将合法数据封装好后提交给传输模块。
本地管理模块通过与数据库连接池获取数据库连接后,将相关信息传输到数据库进行操作。
2.2系统功能结构
权限管理
用户管理
角色查询管理
成绩录入管理
权限分配管理
操作管理
角色管理
角色分配管理
数据库系统结构图
2.3数据流图
界面显示模块
用户操作用户操作信息
合法数据信息
传输数据
数据库
数据库连接池
查询结果信息数据操作信息
第三章数据库设计
3.1全局E-R图
全局E-R图如下:
课程
3.2数据字典
3.2.1表单信息
数据库表名
说明
users
用户表
roles
角色表
user_role
用户角色映射表
Permissions
权限表
role_permission
角色权限映射表
Student
学生信息表
Teacher
教师信息表
Course
课程信息表
SCT
成绩表
LoginInfo
登录用户信息表
3.2.1各表信息
表名:
users
userid
用户ID
username
用户姓名
userpassword
用户密码
表名:
roles
rolerid
角色ID
rolename
角色名称
表名:
user_role
userid
用户ID
roleid
角色ID
表名:
Permissions
Pid
权限ID
Operation
执行动作
objtable/view
对象表/视图
objcolumn
对象列名
表名:
role_permission
roleid
角色ID
Pid
权限ID
表名:
Student
Sno
学号
Sname
姓名
Ssex
性别
Sage
年龄
Sdept
专业
Sentertime
入学时间
Sclass
班级
表名:
Teacher
Tno
教师编号
Tname
姓名
Tsex
性别
Tage
年龄
表名:
Course
Cno
课程编号
Cname
课程名
Ccredit
学分
表名:
SCT
Sno
学号
Sname
姓名
Cno
课程编号
Tno
教师编号
Grade
成绩
表名:
LoginInfo
CURRENTUSER
当前登录用户ID
3.3数据库内关系表定义
数据库内关系图如下:
第四章数据库实现
4.1数据库创建SQL代码
USE[master]
GO
CREATEDATABASE[StudentGrade]ONPRIMARY
(NAME=N'StudentGrade',FILENAME=N'D:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\StudentGrade.mdf',SIZE=2304KB,MAXSIZE=UNLIMITED,FILEGROWTH=1024KB)
LOGON
(NAME=N'StudentGrade_log',FILENAME=N'D:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\StudentGrade_log.LDF',SIZE=832KB,MAXSIZE=2048GB,FILEGROWTH=10%)
GO
ALTERDATABASE[StudentGrade]SETCOMPATIBILITY_LEVEL=100
GO
IF(1=FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC[StudentGrade].[dbo].[sp_fulltext_database]@action='enable'
end
GO
4.2关系表(及相关视图)创建SQL代码
Student表的建立:
CREATETABLE[dbo].[Student](
[Sno][varchar](20)NOTNULL,
[Sname][varchar](20)NULL,
[Ssex][char]
(2)NULL,
[Sage][smallint]NULL,
[Sdept][varchar](20)NULL,
[Sentertime][date]NULL,
[Sclass][varchar](50)NULL,
PRIMARYKEYCLUSTERED
(
[Sno]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
Teacher表的建立:
CREATETABLE[dbo].[Teacher](
[Tno][varchar](9)NOTNULL,
[Tname][varchar](20)NULL,
[Tsex][char]
(2)NULL,
[Tage][smallint]NULL,
PRIMARYKEYCLUSTERED
(
[Tno]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
Course表的建立:
CREATETABLE[dbo].[Course](
[Cno][varchar](4)NOTNULL,
[Cname][varchar](40)NULL,
[Ccredit][smallint]NULL,
PRIMARYKEYCLUSTERED
(
[Cno]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SCT表(成绩表)的建立:
CREATETABLE[dbo].[SCT](
[Sno][varchar](20)NOTNULL,
[Sname][varchar](20)NULL,
[Cno][varchar](4)NOTNULL,
[Tno][varchar](9)NOTNULL,
[Grade][smallint]NULL,
CONSTRAINT[PK__SCT__8AC4525145F365D3]PRIMARYKEYCLUSTERED
(
[Sno]ASC,
[Cno]ASC,
[Tno]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
ALTERTABLE[dbo].[SCT]WITHCHECKADDCONSTRAINT[FK__SCT__Cno__48CFD27E]FOREIGNKEY([Cno])
REFERENCES[dbo].[Course]([Cno])
ONUPDATECASCADE
ONDELETECASCADE
GO
ALTERTABLE[dbo].[SCT]CHECKCONSTRAINT[FK__SCT__Cno__48CFD27E]
GO
ALTERTABLE[dbo].[SCT]WITHCHECKADDCONSTRAINT[FK__SCT__Sno__47DBAE45]FOREIGNKEY([Sno])
REFERENCES[dbo].[Student]([Sno])
ONUPDATECASCADE
ONDELETECASCADE
GO
ALTERTABLE[dbo].[SCT]CHECKCONSTRAINT[FK__SCT__Sno__47DBAE45]
GO
ALTERTABLE[dbo].[SCT]WITHCHECKADDCONSTRAINT[FK__SCT__Tno__49C3F6B7]FOREIGNKEY([Tno])
REFERENCES[dbo].[Teacher]([Tno])
ONUPDATECASCADE
ONDELETECASCADE
GO
ALTERTABLE[dbo].[SCT]CHECKCONSTRAINT[FK__SCT__Tno__49C3F6B7]
GO
users表的建立:
CREATETABLE[dbo].[users](
[userid][varchar](50)NOTNULL,
[username][varchar](100)NOTNULL,
[userpassword][varchar](100)NULL,
[userremark][varchar](100)NULL,
CONSTRAINT[PK__users__CBA1B257145C0A3F]PRIMARYKEYCLUSTERED
(
[userid]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
roles表的建立:
CREATETABLE[dbo].[roles](
[roleid][int]NOTNULL,
[rolename][varchar](100)NULL,
[roleremark][varchar](100)NULL,
CONSTRAINT[PK__roles__CD994BF21B0907CE]PRIMARYKEYCLUSTERED
(
[roleid]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
user_role表的建立:
CREATETABLE[dbo].[user_role](
[connectionid][int]IDENTITY(1,1)NOTNULL,
[userid][varchar](50)NOTNULL,
[roleid][int]NOTNULL,
[Premark][varchar](100)NULL,
CONSTRAINT[PK__user_rol__A042C108267ABA7A]PRIMARYKEYCLUSTERED
(
[connectionid]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
ALTERTABLE[dbo].[user_role]WITHCHECKADDCONSTRAINT[FK_user_role_roles]FOREIGNKEY([roleid])
REFERENCES[dbo].[roles]([roleid])
ONUPDATECASCADE
ONDELETECASCADE
GO
ALTERTABLE[dbo].[user_role]CHECKCONSTRAINT[FK_user_role_roles]
GO
ALTERTABLE[dbo].[user_role]WITHCHECKADDCONSTRAINT[FK_user_role_users]FOREIGNKEY([userid])
REFERENCES[dbo].[users]([userid])
ONUPDATECASCADE
ONDELETECASCADE
GO
ALTERTABLE[dbo].[user_role]CHECKCONSTRAINT[FK_user_role_users]
GO
Permissions表的建立:
CREATETABLE[dbo].[Permissions](
[Pid][int]NOTNULL,
[Operation][varchar](50)NULL,
[objtable/view][varchar](50)NULL,
[objcolumn][varchar](50)NULL,
CONSTRAINT[PK__Permissi__C57059386383C8BA]PRIMARYKEYCLUSTERED
(
[Pid]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
role_permission表的建立:
CREATETABLE[dbo].[role_permission](
[roleid][int]NOTNULL,
[Pid][int]NOTNULL,
PRIMARYKEYCLUSTERED
(
[Pid]ASC,
[roleid]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
ALTERTABLE[dbo].[role_permission]WITHCHECKADDFOREIGNKEY([roleid])
REFERENCES[dbo].[roles]([roleid])
ONUPDATECASCADE
ONDELETECASCADE
GO
ALTERTABLE[dbo].[role_permission]WITHCHECKADDCONSTRAINT[FK__role_permis__Pid__01142BA1]FOREIGNKEY([Pid])
REFERENCES[dbo].[Permissions]([Pid])
ONUPDATECASCADE
ONDELETECASCADE
GO
ALTERTABLE[dbo].[role_permission]CHECKCONSTRAINT[FK__role_permis__Pid__01142BA1]
GO
LoginInfo表的建立:
CREATETABLE[dbo].[LoginInfo](
[CURRENTUSER][varchar](20)NOTNULL,
PRIMARYKEYCLUSTERED
(
[CURRENTUSER]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
视图Student1(学生信息视图,角色为学生可以查看)的建立:
CREATEVIEW[dbo].[Student1]
AS
SELECT*
FROMdbo.Student
WHERE(Sno=CURRENT_USERORSno=(SELECTCURRENTUSERFROMLoginInfo))
GO
视图Student2(同班学生信息视图,角色为班长可以查看)的建立:
CREATEVIEW[dbo].[Student2]
AS
SELECT*
FROMdbo.Student
WHERE(Sclass=(SELECTSclassFROMStudentWHERE
Sno=CURRENT_USERORSno=(SELECTCURRENTUSERFROMLoginInfo)))
GO
视图Student1(教师信息视图,角色为教师可以查看)的建立:
CREATEVIEW[dbo].[Teacher1]
AS
SELECT*
FROMdbo.Teacher
WHERE(Tno=CURRENT_USERORTno=(SELECTCURRENTUSERFROMLoginInfo))
GO
视图SCT1(成绩信息视图,角色为学生或教师可以查看)的建立:
CREATEVIEW[dbo].[SCT1]
AS
SELECT*
FROMdbo.SCT
WHERE((Sno=CURRENT_USERORSno=(S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 中南 大学 数据库 系统安全 课程