)
create table 销售记录
(类型char(4) not null check(类型='主食'or 类型='酒水' or 类型='其他') default '主食', 数量int not null,
方式char(4) not null check(方式='现场' or 方式='预定' or 方式='外卖') default '现场',
金额money not null, 日期datetime not null, 备注varchar(30) )
create table 评价情况
(职员编号 char(6) not null foreign key references 职员资料(职员编号) on update cascade on delete cascade,
评价级别char(4) not null check(评价级别in ('优','良','一般','差')) default '优',
日期datetime not null default getdate(), 备注varchar(30) )
create table 工资表
(职员编号char(6) not null foreign key references 职员资料(职员编号) on update cascade on delete cascade, 工资money not null, 日期datetime not null, 备注varchar(30) )
所有表的截图如下:
三、 视图设计
1. 为了方便查看职员的评价与对应的职员,所以要建一个“职员信息与评价表”,
以显示职员的评价的同时,还可以看到该职员的一些个人信息。 create view 职员信息与评价表 as
select 姓名,性别,职位,联系电话,评价级别,日期 from 职员资料 a, 评价情况b where a.职员编号=b. 职员编号
2. 为了方便查看物品的销售记录以及物品的信息,所以建立一个“物品信息与
销售情况表”。
create view 物品信息与销售情况表 as
select 物品名字,所属类型,价格,品牌,方式,日期,数量 from 销售记录 a, 物品表 b where a.类型=b. 所属类型
3. 为了在职员信息中,可以方便看到该职员的工资,所以建立一个“职员信息
工资表”
create view 职员信息工资表 as
select 姓名,性别,职位,联系电话,工资(元),日期 from 职员资料 a, 工资表 b where a.职员编号=b. 职员编号
四、 存储过程
1. 创建一个存储过程,通过给定职位可查看该职位所有职员的个人信息。
create proc 查询所指定职位的职员基本信息 @职位 varchar(20) as
select 职位,姓名,性别,民族,籍贯,出生日期,身份证号,婚姻状况,家庭住址,联系电话,备注 from 职员资料 where职位=@职位
2. 创建一个存储过程,通过给定职员编号可删除该职员
create proc 删除所指定的职员 @职员编号 char(6) as
delete 职员资料
where 职员编号=@职员编号
五、 触发器
1. 在评价情况表中添加记录后,统计某职员的优评数量,在本月1号到到添加
日期这段时间的好评达到10次将在职员资料表中为该职员的备注栏添加上“工作中表现优秀!”
create trigger 优评备注 on 评价情况 after insert as
declare @a varchar,@b int begin
select @a=职员编号 form inserted where 评价级别=’优
select @b=count(*)form 评价情况 where 评价级别=’优’and 职员编号=@a and dateadd(day,-1,getdate())<30 and dateadd() group by 评价级别,职员编号 if @b>10 begin
update 职员资料
set 备注=” 工作中表现优秀!” where 职员编号=@a end else end
2. 在评价情况表中添加记录后,统计某职员的优评数量,在本月1号到到添加
日期这段时间的差评达到10次将在职员资料表中为该职员的备注栏添加上“工作中表现糟糕!”。
create trigger 优评备注 on 评价情况 after insert as
declare @c varchar,@d int begin
select @c=职员编号 form inserted where 评价级别=’差
select @d=count(*)form 评价情况 where 评价级别=’差’and 职员编号=@c and dateadd(day,-1,getdate())<30 and dateadd() group by 评价级别,职员编号 if @d>10 begin
update 职员资料
set 备注=” 工作中表现糟糕!”
where 职员编号=@a end else end
六、 权限设置
我们所设计的教师档案管理系统根据实际情况会用到四类用户,有食堂所有者、管理者、普通员工,还有客户。
食堂所有者在这管理系统种具有全部权限,
食堂的管理人员具有职员管理,物品管理,营业管理,评价管理的添加删改权限。
食堂普通职员具有席位管理的添加删改权限,方便对日常工作的管理。 客户具有在评价情况表上添加对职员的评价情况的权限,但是不能修改和删除。
1、新建了三个用户分别代表四类用户,所有者、管理者、普通员工,客户,分别设有密码。 命令如下:
exec sp_addlogin '所有者','111' exec sp_addlogin '管理者','222' exec sp_addlogin '普通员工','333' exec sp_addlogin '客户','444'
2、授予所有者所有权限
给 '所有者' 授予食堂管理系统数据库访问权,并给其分配为该数据库的拥有者:db_owner,在该数据库中拥有所有权限;命令如下: use 食堂管理系统
exec sp_grantdbaccess '所有者' go
exec sp_addrolemember 'db_owner','所有者'
2、通过所有者用户给普通员工授予权限,命令如下: use 食堂管理系统
exec sp_grantdbaccess '普通员工' go
grant select on 席位表 to 普通员工
3、通过所有者用户给管理者授予权限,命令如下: use 食堂管理系统
exec sp_grantdbaccess '管理者' go
grant select,insert,update on 职员资料 to 管理者 grant select,insert,update on 物品表 to 管理者 grant select,insert,update on 销售记录 to 管理者
grant select,insert,update on 评价情况 to 管理者
七、 数据备份与恢复设计
为了防止数据可能在运行过程中出现某些意外的错误而导致数据丢失等严重问题,数据库的备份与恢复在实际的数据库系统开发中有着十分重要的意义。 1. 针对系统的数据库分析:为了防止突发事件对现存数据库的破坏,应该随时
将数据库信息进行备份,考虑到三种备份空间与时间上的优化,我们采取备份策略:
1) 有规律的进行完整数据库备份,可以隔一段时间,在操作数据库不
频繁的时间段进行;
2) 在较小的时间间隔内进行差异备份,比如一天;
3) 在相邻的两次差异备份之间进行事务日志备份,可以每半个小时一
次,以补充备份在完整数据库备份与差异备份进行之间之间进行的事务。
2. 考虑食堂管理系统实际情况,我们采取恢复策略:先恢复最近一次的数据库
备份,接着进行差异备份恢复,最后进行事务日志备份的恢复。因为我们同样关心数据库状态之间的变化,所以采用完整数据库恢复策略。
3. 由于食堂管理系统的数据量会随时间不断增多,可能出现很多的人员的调动
和调整,占据存储空间的同时又降低数据库访问的效率,针对这方面我们采取:每1年对教师教师基本信息进行数据备份,备份数据另保存,同时将这些已备份的数据从食堂管理系统中删除。 数据库备份 备份:数据库备份就是制作数据库结构和数据的拷贝,以便在数据库遭到破坏的时候能够恢复数据库。 备份数据库语法
backup database 要备份的数据库名 to 用来备份的备份设备名/备份文件名 with
format/init/noinit/restart/differential format:完全删除备份设备原内容后备份 init:完全删除备份设备除标题外的原内容 noinit:备份内容添加到备份设备原有内容后 restart:在中断点重新备份 differential:进行差异性备份 事务日志备份的语法:
backup log 要备份的数据库名
to 用来备份的备份设备名/备份文件名 恢复数据库
1、数据库恢复:数据库恢复就是把数据库备份加载到系统中。数据库备份后,一旦系统发生崩溃或者执行了错误的数据库操作,就可以从备份文件中恢复数据库。系统在恢复数据库的过程中,自动执行安全性检查、重建数据库结构以及完整数据库内容。
2、下面三个情况会导致恢复失败: