当前位置:首页 > 《数据库认证》大作业
《数据库认证》大作业2011-2012(2)
USE Northwind; GO
CREATE PROCEDURE getProductbyPage WITH ENCRYPTION AS
SET NOCOUNT ON;
SELECT ProductID, ProductName,SupplierID, CategoryID, Unitprice FROM Products; GO
2.可以利用企业管理器对登录用户账户的管理:
首先打开数据库,以Windows身份验证进入数据库,在对象资源管理器的安全节点 下右键点击登录名并新建登录名。在文本框中输入新建管理员帐号名,输入密码,单击服务器角色。在服务器角色面板中选择相应的选项,然后点击用户映射,对需要管理的数据库进行选择。
数据库的用户操作日志的管理可以提高安全性,利用日志可以还原数据库。 3.如果主数据库可以备份出最新日志,则可以使用下面的语句 先备份主数据库的最新的事务日志
BACKUP LOG Northwind TO DISK=''d:\\test_log.bak'' WITH FORMAT 再在备用数据库中恢复最新的事务日志,并且使备用数据库可读写 RESTORE LOG Northwind _bak FROM DISK='d:\\test_log.bak'
(3)数据库使用中的自定义提示非常重要,它可以更加直观的把一些操作不当的数据库行为提示给用户。利用 RAISEERROR语句完成如下的功能:
首先自定义一个错误号为50512的用户自定义错误,错误的严重级别为10,错误的文本消息为’Can’t find the customer ID. ’,另外消息中还要加上表名和输入的CustomerID, 并且当发生消息时将消息写入 Microsoft? Windows NT? 应用程序日志中。然后创建一个名为ExistCustomerID的存储过程,以用它来找出SQL SERVER中的northwind数据库的Customer表中,指定的CustomerID是否存在,如果存在返回0,如果不存在返回错误号50512,并将消息写入 Microsoft? Windows NT? 应用程序日志中。写出定义错误消息和创建存储过程的语句。
9 / 11
《数据库认证》大作业2011-2012(2)
答:定义自定义错误消息:
EXEC sp_addmessage @msgnum = 50512, @severity = 10,
@msgtext = 'Can’t find the customer ID:%s at table %s.', @with_log ='true'
创建存储过程的语句如下: USE NorthWind GO
CREATE PROC ExistCustomerID @CustomerID char (5) AS
SELECT CustomerID
From Customers WHERE CustomerID=@CustomerID IF @@ROWCOUNT=0 BEGIN
RAISEERROR(50512, 10, 1, @ CustomerID, @DBNAME) RETURN END RETURN 0
10 / 11
《数据库认证》大作业2011-2012(2)
总结及分析
三.Northwind库在设计过程中是否存在不足,从实际项目开发的需求中就行分析。 注:从主外键的设计是否满足软件开发的需要、各数据库对象是否安全存储、是否存在必要的冗余等方面对Northwind进行分析。
答:1、表\中添加了“FK_Employees_Employees”外键是多余的,应将其cut
2、在订单明细表(Order Details)中用订单编号(OrderID)和产品编号(ProductID)做联合主键不妥,应给订单明细表单独设立主键。
3 、没有设置相应的用户权限,使得数据库数据存在很大的安全隐患,应该设置相应的用户权限,并且要对数据库进行加密处理,提高数据库的安全性。
4、冗余方面表CustomerCustomerDemo表CustomerDemographics和表Customers完全可以合并到一起,因为三表去全部描述的都是客户的信息,没有必要分开来增加冗余。 5、订单表Orders的发货信息和货主信息应该分别再建立两张新表,减少冗余。
11 / 11
共分享92篇相关文档