安全需求
对该系统输出的访问会受限于学生和教师,一些来自不属于学校的外人的访问需要得到授权,而其他的一些访问只是来自该机构的本地网络。该校可能需要喜爱通过Internet传送数据的时候要使用到加密技术,并且通过用户名和密码机制来控制对数据库服务器的访问。
数据库的命名规则 (1)表的命名:以名词和名词短语;
(2)列的命名:采用有意义的命名,能表达其表示的内容的名词短语;
(3)视图与存储均与表的命名类似。
数据库涉及字符规则
采用26个英文字母(区分大小写)和0 -9这十个自然数,加上下划线_组成,共63个字符。不能出现其他字符(注释除外)。
数据库对象命名规则
数据库对象包括表、视图(查询)、存储过程(参数查询)、函数、约束。对象名字由前缀和实际名字组成,长度不超过30。
前缀:使用小写字母。如:
表
tb
视图
vi
存储过程
sp
函数
fn
实际名字
实际名字尽量描述实体的内容,由单词或单词组合,每个单词的首字母大写,其他字母小写,不以数字和_开头。因此,如合法的对象名字类似如下。
表
tbUser_Info、tbMessage_Detail
视图
vi_MessageList
存储过程
sp_MessageAdd
数据库表命名规则
字段由前缀和实际名字组成。实际名字中首单词一个系统尽量采取同一单词。
前缀:使用小写字母tb,如表示表。
例如:tbMember tbMember_Info t bForum_Board tbForum_Thread1
字段命名规则
数字、字符、日期/时间、lob(大对象)、杂项,字段由表的简称、下划线,实际名字加后缀组成。
后缀:使用小写字母,代表该字段的属性。
例如: User_Idint User_Namestr User_RegDatedtm
视图命名规则
字段由前缀和实际名字组成,中间用下划线连接。
前缀:如使用小写字母vi,表示视图。
例如:vi_User vi_UserInfo
存储过程命名规则
字段由前缀和实际名字组成,中间用下划线连接。
前缀:如使用小写字母sp,表示存储过程。
例如:sp_User
SQL语句规则
所有SQL语句的关键词全部大写或首字母大写,比如SELECT,UPDATE,FROM,ORDER,BY等。
概念结构设计 数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ERD)。如果采用面向对象方法(OOAD),这里实体相当于类(class)。
逻辑结构设计 VS表
VS(队名,巴西,墨西哥,......,阿尔及利亚)
result表
result(场次,主场,客场,主场分数,客场分数)
team表
team(队名,组别)
物理结构设计 (1)主要是设计表结构。一般地,实体对应于表,实体的属性对应于表的列,实体之间的关系成为表的约束。逻辑设计中的实体大部分可以转换成物理设计中的表,但是它们并不一定是一一对应的。
(2)对表结构进行规范化处理(第三范式)。
表汇总
表名
功能说明
VS
记录预测分差
team
记录队伍的队名和组别
result
记录比赛比分结果
表VS
表名
VS
列名
数据类型(精度范围)
空/非空
约束条件
队名
Nvarchar(255)
非空
主键
巴西
Float
可以为空
无
墨西哥
Folat
可以为空
无
……
……
……
……
阿尔及利亚
Float
可以为空
无
补充说明
记录预测分差
表team
表名
team
列名
数据类型(精度范围)
空/非空
约束条件
队名
Nvarchar(255)
非空
主键
组别
Nvarchar(255)
非空
无
补充说明
记录队伍的队名和组别
表result
表名
result
列名
数据类型(精度范围)
空/非空
约束条件
场次
Float
非空
主键
主场
Nvarchar(255)
非空
无
客场
Nvarchar(255)
非空
无
主场分数
Float
非空
无
客场分数
Float
补充说明
记录比赛比分结果
数据保护设计 提高软件系统的安全性应当从"管理"和"设计"两方面着手。这里仅考虑数据库的安全性设计。
防止用户直接操作数据库的方法 该系统用户帐号全部由系统管理员管理,在数据库中,对组和用户访问数据库权限的设置工作,只能通过管理员完成。设置的权限包括:"打开/运行",读取设计、修改设计、管理、读取数据,更新数据、插入数据和删除数据用户只能用通过认证的帐号登陆到应用软件,通过应用软件访问数据库,而没有其他途径操作数据库,且用户的操作权限有限,不能任意修改数据库中的关键数据,只能对数据进行读取和输入等常规操作,因能能很好的保护数据库的数据。
1.用户权限控制
给每个用户角色限制权限,不同的角色拥有不同的权限,用户只能行使自己权限范围内的权限,如普通用户只能查看自己的借阅记录不能任意修改,而管理员和超级管理员则可以修改用户的借阅记录,通过角色,权限等的一系列授予和回收操作可以有效的进行用户的权限控制,从而防止用户恶意操作、篡改数据库信息。
2.数据库登录设密
给数据库设置登录账号和密码,只有拥有直接访问数据库权限的用户在键入正确的账号和密码后才能通过软件登录到数据库进行操作,可防止用户恶意操作数据库。
3.限制操作系统存取权限
使用数据库系统是依存在操作系统之上的,如果操作系统被人侵入,那么通过修改配置文件等一系列方法,数据库的安全性也将荡然无存,所以对于安全性高的数据库,可以通过限制操作系统的存取权限来提高数据库的安全性。
用户帐号密码的加密方法 使用MD5加密方法对用户账号密码进行加密。
MD5方法采用单项加密的加密方法,即只能对数据进行加密,而不能对加密后的数据进行解密,这样经过MD5算法处理的账号和秘密存储在数据库中即使被人恶意获取到,也不可能知道密码的具体数据,即做到了对账号密码的更强的保护。
角色与权限 确定每个角色对数据库表的操作权限,如创建、检索、更新、删除等。每个角色拥有刚好能够完成任务的权限,不多也不少。在应用时再为用户分配角色,则每个用户的权限等于他所兼角色的权限之和。
角色
可以访问的表与列
操作权限
用户
result
增改查
VS
改查
team
查
实施与优化 在数据库的设计过程中经常要添加、删除数据库对象,这会使数据库内部留有许多碎片,不能有效地利用磁盘空间,文件会逐渐增大。这有点象文件系统经过多次的增删操作,会导致文件碎片,浪费磁盘空间,而且读写效率降低。可以用 Access 提供的工具来压缩数据库,它将重新安排数据库文件在磁盘中保存的位置,并释放磁盘空间,通常文件的容量会缩小成原来的几分。
分析并优化数据库的"时-空"效率,尽可能地"提高处理速度"并且"降低数据占用空间"。
(1)分析"时-空"效率的瓶颈,找出优化对象(目标),并确定优先级。
(2)当优化对象(目标)之间存在对抗时,给出折衷方案。
(3)给出优化的具体措施,例如优化数据库环境参数,对表格进行反规范化处理等。
优先级
优化对象(目标)
措施
高
数据库索引
根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量
高
数据库碎片
定期整理数据库产生的碎片,提高数据库的性能
高
数据库缓存
优化数据库缓存方案
高
数据库对象
优化数据库对象的放置策略,尽量让数据库对象均匀地把数据分布在系统的磁盘中,平衡I/O访问,避免I/O瓶颈。
运行管理与维护说明
数据库的转储和恢复
DBA(即本系统的管理员)要针对不公的应用要求制定不同的转储计划,定期对数据库和日志文件进行备份,以保证数据库中数据在遭到破坏后能及时进行恢复。
维护数据库的完整性与安全性
DBA应采取有效的措施保护数据不受非法盗用和遭到任何破坏
通过权限管理、口令、跟踪及审计来保证数据库的安全。
通过行政手段,建立一定规章制度以确保数据库的安全
数据库应备有多个副本并保存在不同的安全地点
采取有效的措施防止病毒入侵,当出现病毒后应及时查杀
监测并改善数据库性能
DBA需要随时观察数据库的动态变化,并在数据库出现错误、故障或产生不适应情况时能够随时采取有效措施保护数据库
数据库的重组和重构
因为不断的删除会造成磁盘区内碎块的增多从而影响I/O速度,所以应该适时的进行数据库的重组和重构
数据库备份方案
添加任务计划,定期定时运行备份批处理命令,实现自动备份。
设计一个物理备份和逻辑备份相结合的数据库备份方案,以保证数据的完整性和0损失恢复。
逻辑备份:
星期一 完全备份 在00:00时备份
星期二 增量备份 在00:00时备份
星期三 增量备份 在00:00时备份
星期四 增量备份 在00:00时备份
星期五 累积备份 在00:00时备份
星期六 增量备份 在00:00时备份
星期日 增量备份 在00:00时备份
分析:每天在00:00时备份是因为在这个时段的访问量相对很少,星期一完全备份可以将数据库中的信息全部备份,而之后的几天采用增量备份可以减少备份量,加快备份速度。在在星期五选择累计备份,是考虑到数据库出错时恢复的考虑,当数据库在某一周有错误时,可以直接恢复到星期五的数据,而不用一天一天的按增量备份的数据恢复。
物理备份:
备份方法
备份频率
备份时间
备份目的
备注
本地热备
1次/天
00:00
保留最近一周的备份数据
本地冷备
1次/一月
每周星期五下午
保留数据库全部数据
异地导出备份
1次/天
12:00
保留最近一周的备份数据