资源描述:
《数据库系统概论第五章章数据库完整性剖析课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章数据库完整性要点和难点数据库完整性的含义数据库完整性控制方法SQLServer2000中的完整性控制第五章数据库完整性数据库的完整性是指:数据的正确性和相容性数据库的安全性是指:保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏数据的完整性和安全性是两个不同的概念,但它们又密切相关完整性防止数据库中存在不符合语义的数据(即垃圾进垃圾出),安全性防止恶意破坏和非法存取(即非法用户和操作)。密切相关表现在可采用相同的机制来实现完整性和安全性。第五章数据库完整性为了维护数据库的完整性,DBMS必须能够:1、提供定义完整性约束条件的机制2、提供完整性检查的方法3、
2、违约处理完整性定义与检查控制由DBMS实现,不必由应用程序来完成,从而减轻了应用程序员的负担。目前的关系系统中对违反实体完整性和用户自定义完整性一般采用拒绝执行方式。第五章数据库完整性5.1实体完整性实体完整性在CREATETABLE中用PRIMARYKEY定义,例如:CREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeSMALLINT,PRIMARYKEY(Sno,Cno))以后每当用户程序对基本表插入一个元组或修改一个元组的主码时,DBMS将按照实体完整性规则自动进行检查,包括:1、检查主码值是否唯一,若不唯一则拒绝插入或修改2、检查
3、各主属性是否为空,只要有一个为空就拒绝插入或修改第五章数据库完整性5.2参照完整性参照完整性在CREATETABLE中用FOREIGNKEY定义外码,用REFERENCES指明被参照表的主码。实现参照完整性时要考虑的几个问题1、外码能否接受空值外码在本关系中是主属性时不能取空值2、被参照关系中删除元组时的违约处理级联删除、拒绝删除、置空删除(不一定可以)3、被参照关系中修改元组的主码时的违约处理级联修改、拒绝修改、置空修改(不一定可以)4、参照关系中插入元组时的违约处理:拒绝插入5、参照关系中修改元组的外码时的违约处理:拒绝修改第十章数据库安全性10.3SQLServ
4、er2000中完整性一、CREATETABLECREATETABLE[database_name.[owner].
5、owner.]table_name({
6、column_nameAScomputed_column_expression
7、::=[CONSTRAINTconstraint_name]}
8、[{PRIMARYKEY
9、UNIQUE}[,...n])::={column_namedata_type}[COLLATE][[D
10、EFAULTconstant_expression]
11、[IDENTITY[(seed,increment)[NOTFORREPLICATION]]]][ROWGUIDCOL][][...n]第十章数据库安全性10.3SQLServer2000中完整性::=[CONSTRAINTconstraint_name]{[NULL
12、NOTNULL]
13、[{PRIMARYKEY
14、UNIQUE}[CLUSTERED
15、NONCLUSTERED][WITHFILLFACTOR=fillfactor][ON{fil
16、egroup
17、DEFAULT}]]]
18、[[FOREIGNKEY]REFERENCESref_table[(ref_column)][ONDELETE{CASCADE
19、NOACTION}][ONUPDATE{CASCADE
20、NOACTION}][NOTFORREPLICATION]]
21、CHECK[NOTFORREPLICATION](logical_expression)}第十章数据库安全性10.3SQLServer2000中完整性::=[CONSTRAINTconstraint_name]{[{PRIMARYKEY
22、UNIQUE}[
23、CLUSTERED
24、NONCLUSTERED]{(column[ASC
25、DESC][,...n])}[WITHFILLFACTOR=fillfactor][ON{filegroup
26、DEFAULT}]]
27、FOREIGNKEY[(column[,...n])]REFERENCESref_table[(ref_column[,...n])][ONDELETE{CASCADE
28、NOACTION}][ONUPDATE{CASCADE
29、NOACTION}][NOTFORREPLICATION]
30、CHECK[NOTFORREPLICATION](search_c