数据库完整性代码
- 格式:doc
- 大小:54.00 KB
- 文档页数:5
数据库的安全性、完好性、并发控制和恢复为了保证数据库数据的安全靠谱性和正确有效, DBMS 一定供给一致的数据保护功能。
数据保护也为数据控制,主要包含数据库的安全性、完好性、并发控制和恢复。
数据库的安全性数据库的安全性是指保护数据库以防备不合法的使用所造成的数据泄漏、改正或损坏。
计算机系统都有这个问题,在数据库系统中大批数据集中寄存,为很多用户共享,使安全问题更加突出。
在一般的计算机系统中,安全举措是一级一级设置的。
在 DB 储存这一级可采纳密码技术,当物理储存设施失窃后,它起到保密作用。
在数据库系统这一级中供给两种控制:用户表记和判定,数据存取控制。
在 ORACLE 多用户数据库系统中,安全体制作以下工作:防备非受权的数据库存取;防备非受权的对模式对象的存取;控制磁盘使用;控制系统资源使用;审计用户动作。
数据库安全可分为二类:系统安全性和数据安全性。
系统安全性是指在系统级控制数据库的存取和使用的体制,包含:有效的用户名 /口令的组合;一个用户能否受权可连结数据库;用户对象可用的磁盘空间的数目;用户的资源限制;数据库审计是不是有效的;用户可履行哪些系统操作。
数据安全性是指在对象级控制数据库的存取和使用的体制,包含:哪些用户可存取一指定的模式对象及在对象上同意作哪些操作种类。
在 ORACLE 服务器上供给了一种随意存取控制,是一种鉴于特权限制信息存取的方法。
用户要存取一对象一定有相应的特权授给该用户。
已受权的用户可随意地可将它受权给其余用户,因为这个原由,这类安全性种类叫做随意型。
ORACLE 利用以下体制管理数据库安全性:数据库用户和模式;特权;角色;储存设置和空间份额;资源限制;审计。
数据库的存取控制ORACLE保护信息的方法采纳随意存取控制来控制所有用户对命名对象的存取。
用户对对象的存取受特权控制。
一种特权是存取一命名对象的同意,为一种规定格式。
ORACLE 使用多种不一样的体制管理数据库安全性,此中有两种体制:模式和用户。
第二章数据库的完整性控制数据完整性(Data Integrity)是指数据的精确性(accuracy)和可靠性(reliability),它是防止数据库中存在不符合语义规定的数据和防止因错误的信息的输入造成无效操作或错误信息而提出的,保证在一个应用程序更新数据的过程中数据的语义正确性。
数据完整性主要分为三类:实体完整性(Entity Integrity),参照完整性(Referential Integrity)以及用户定义的完整性(User-defined Integrity),其中用户定义的完整性主要包括域完整性(Domain Integrity)和其他自定义完整性。
为维护数据库德完整性,数据库管理系统(DBMS)必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。
这些加在数据库数据上的语义约束条件称为数据库完整性规则,它们作为模式的一部分存入数据库中。
完整性控制是指对数据库进行更新操作,要遵守完整性规则,才能保证数据的语义正确性,防止数据库中存在不符合语义的数据。
目的是在合法用户访问数据库的过程中,保证数据的正确性和准确性。
完整性检查机制是指在DBMS中检查数据是否满足完整性条件的机制。
由DBMS在执行更新动作时,检查是否满足预定的完整性约束条件,来进行控制。
广义的完整性控制包括故障恢复、并发控制。
而一般所指的完整性控制是指基于数据库的完整性约束规则,如:实体完整性、引用完整性等。
SQL中两种主要的数据完整性控制机制是指完整性约束规则的定义和检查以及触发器(Trigger)机制。
完整性控制机制应具有三个功能:(1)定义功能,即提供定义完整性约束条件的机制;(2)检查功能,即检查用户发出的操作请求书否违反了约束条件;(3)如果发现用户操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
完整性控制机制的工作原理基本上分为两类,一种是定义完整性时就立刻进行检查的,例如实体完整性的定义;另外一种是定义完整性之后进行检查的,例如参照完整性的定义。
3.5 数据完整性在数据库中数据完整性是指保证数据正确的特性,一般包括实体完整性、域完整性、参照完整性。
一、实体完整性是保证表中记录唯一的特性。
即在一个表中,不能有重复的纪录。
候选关键字:如果一个字段的值或几个字段的值能够唯一标识表中的一条记录,这样的字段称为侯选关键字。
主关键字:在一个表中可能会有几个具有这种特性的字段或者字段的组合,这时从中选择一个作为主关键字。
在VFP中将主关键字称做主索引,将侯选关键字称为侯选索引。
实现方法:在VFP中利用主关键字(主索引)或候选关键字(候选索引)来保证表中记录的惟一性。
例1. 打开数据库“成绩管理”,为学生表中的“学号”字段建立主索引(升序)。
二、域完整性1.域:列的取值的范围(EG:数学中的定义域)域完整性:列的取值范围合理性我们以前在创建表的时候指定不同的数据类型和宽度来限制字段的取值类型和取值范围,但这些还远远不够。
我们需要进一步对列里能输入什么样的数据严格要求。
2.实现域完整性的方法:设置列的有效性规则,设置列的默认值⑴设置列的有效性规则例2. 设置“成绩管理”数据库中“学生”表中年龄字段的有效性规则:要求学生表中的年龄必须在15-22之间,否则就认为输入无效!并提示“年龄只能在15-22岁之间!”例3. 设置“学生”表中系部字段的有效性规则:要求系部列的取值必须是四个系之一,如果输入其他值就认为输入无效!并提示“该系部名不存在!”例4.设置“成绩”表中成绩的有效性规则为:成绩只能在0-100分之间,如果用户输入错误,则提示“成绩不在范围内!”⑵为列设置默认值例5.对“学籍”表进行修改,设置“入学日期”的默认值为2009-08-26,然后打开表,输入一条新记录,观察现象例6. 对“学生”表进行修改,设置“系部”列的默认值为基础部,然后打开表,使用Append命令输入一条新记录,观察现象三、参照完整性1.思考:⑴如果同学们在填学生表的时候将自己的班级名称写错了, 写成了一个学校中根本不存在的班级, 这样的结果肯定是错误的。
一、检查数据库完整性的重要性在数据库管理中,数据库的完整性是非常重要的。
如果数据库损坏或不完整,可能会导致数据丢失或系统崩溃。
定期检查数据库的完整性是保证数据安全和系统稳定性的关键步骤。
二、检查数据库完整性的方法1. 使用DBCC CHECKDB命令DBCC CHECKDB是SQL Server提供的一个用于检查数据库完整性的命令。
它可以检查数据库中所有对象的完整性,包括表、索引、视图等。
可以通过以下语句来运行DBCC CHECKDB命令:DBCC CHECKDB ('database_name');2. 使用DBCC CHECKTABLE命令DBCC CHECKTABLE命令可以用来检查数据库中特定表的完整性。
可以通过以下语句来运行DBCC CHECKTABLE命令:DBCC CHECKTABLE ('table_name');3. 使用DBCC CHECKFILEGROUP命令DBCC CHECKFILEGROUP命令可以用来检查文件组的完整性。
可以通过以下语句来运行DBCC CHECKFILEGROUP命令:DBCC CHECKFILEGROUP ('filegroup_name');4. 使用DBCC CHECKALLOC命令DBCC CHECKALLOC命令可以用来检查分配给数据库对象的存储空间的完整性。
可以通过以下语句来运行DBCC CHECKALLOC命令:DBCC CHECKALLOC;三、检查数据库完整性的注意事项1. 在进行完整性检查之前,应该备份数据库以防止任何意外发生。
2. 在生产环境中进行完整性检查时,应该避免对数据库进行写操作,以免影响正在运行的业务。
3. 对于大型数据库,完整性检查可能需要较长的时间,应该安排在系统负载较低的时段进行。
四、检查数据库完整性的建议1. 定期检查数据库完整性,例如每周或每月进行一次完整性检查。
DBMS基本操作DBMS(Database Management System)是指数据库管理系统,用于管理和操作大规模的数据库。
DBMS提供了一些基本的操作来创建,查询,更新和删除数据,以及维护数据库的完整性和安全性。
DBMS的基本操作包括以下几个主要方面:1.数据定义语言(DDL)操作:-创建数据库:使用CREATEDATABASE语句来创建一个新的数据库。
-创建表:使用CREATETABLE语句来定义一个新的表,包括表名、列名、数据类型和约束条件。
-修改表结构:使用ALTERTABLE语句来添加、修改或删除表的列、索引、约束等。
-删除表:使用DROPTABLE语句来删除一个已存在的表。
2.数据操作语言(DML)操作:-插入数据:使用INSERT语句将新的数据行插入到表中。
-查询数据:使用SELECT语句来从表中检索数据,可以通过WHERE子句来指定条件。
-更新数据:使用UPDATE语句来更新表中已存在的数据行。
-删除数据:使用DELETE语句来删除表中的数据行,也可以通过WHERE子句来指定条件。
3.事务管理操作:-开始事务:使用BEGINTRANSACTION语句来开始一个新的事务。
-提交事务:使用COMMIT语句来提交一个事务,将对数据库的修改永久保存。
-回滚事务:使用ROLLBACK语句来回滚一个事务,撤销对数据库的修改。
-设置保存点:使用SAVEPOINT语句来设置一个保存点,以便在事务中可以回滚到该点。
4.数据库完整性约束:-主键约束:用于唯一标识表中的每一条记录。
-外键约束:用于建立表之间的关联关系。
-唯一约束:用于确保其中一列的值在表中唯一-非空约束:用于确保其中一列的值不能为空。
-默认值约束:用于在插入数据时为其中一列指定默认值。
5.数据库安全性操作:-用户管理:使用CREATEUSER语句来创建一个新的用户,以及GRANT 和REVOKE语句来授予或撤销用户对数据库的访问权限。
4实验报告
实验内容与完成情况:
一、三类完整性的实现
对系表Dept、学生表Student、教师表Teacher、课程表Course、SC表,教师授课表TC,实现规定的完整性,并验证,当操作违反了完整性约束条件时,DBMS如何处理。
--1、Dept表
--? DEPTNO CHAR()
--? E VARCHAR()DNAM
--? 实体完整性:DEPTNO为主码;
--? 用户定义完整性
--①DEPTNO的取值为至;
--②DNAME取值非空且唯一;
CREATE TABLE DEPT
(DEPTNO CHAR(2)PRIMARY KEY
constraint c1 check(DEPTNO between 01 and 99),
DNAME VARCHAR(20)
constraint c2 NOT NULL unique,
);
--2、Student表
-- SNO CHAR()
-- SNAME VARCHAR()
-- SEX CHAR()
-- DEPTNO CHAR()
--
--实体完整性:SNO为主码;
--参照完整性:DEPTNO为外码,并实现级联更新和级联删除操作;
--用户定义完整性
--①SNO取值为级的学号取值范围,如等。
--②SNAME 取值非空;
--③SEX的取值只能为男或女;
CREATE TABLE Student
(SNO CHAR(10)PRIMARY KEY
constraint b1 check(SNO between 2010080000 and 2010089999), Sname varCHAR(8)NOT NULL unique,
Ssex CHAR(2)
constraint b2 check(Ssex in('男','女')),
DEPTNO CHAR(2),
FOREIGN KEY(DEPTNO)REFERENCES DEPT(DEPTNO)
on delete cascade
on update cascade
);
drop table Student
--3、Teacher表
-- TNO CHAR()
-- TNAME VARCHAR()
-- DEPTNO CHAR()
--
--实体完整性:TNO为主码;
--参照完整性:DEPTNO为外码,并实现级联更新和级联删除操作;
--用户定义完整性
--①TNO取值为开头的四位数字字符串;
--②TNAME取值非空;
CREATE TABLE Teacher
(TNO CHAR(3)PRIMARY KEY
constraint a1 check(TNO between 0800 and 0899),
TNAME varCHAR(8)NOT NULL,
DEPTNO CHAR(2),
FOREIGN KEY(DEPTNO)REFERENCES DEPT(DEPTNO)
on delete cascade
on update cascade
);
drop table Teacher
--4、Course表
-- CNO CHAR()
-- TNO CHAR()
-- CNAME VARCHAR()
-- CREDIT SNALLINT
--
--实体完整性:CNO;
--用户定义完整性
--①CNAME取值非空;
--②CREDIT取值为至以内的数字;
--参照完整性:TNO为外码,并实现级联更新和级联删除操作;
CREATE TABLE Course
(CNO CHAR(4),
TNO CHAR(3),
CNAME CHAR(20)NOT NULL,
CREDIT INT check(CREDIT>=1 and CREDIT<=10),
PRIMARY KEY(CNO),
FOREIGN KEY(TNO)REFERENCES Teacher(TNO)
on delete cascade
on update cascade,
);
drop table Course
--5、SC表
-- SNO CHAR()
-- CNO CHAR()
-- GRADE SMALLINT
--
--实体完整性:(SNO,CNO)为主码;
--参照完整性:SNO外码、CNO外码,都实现级联删除和级联更新操作;
--用户定义完整性
-- GRADE取值在到之间。
CREATE TABLE SC
(SNO CHAR(10),
CNO CHAR(4),
GRADE SMALLINT check(GRADE>=0 and GRADE<=100),
PRIMARY KEY(SNO,CNO),
FOREIGN KEY(SNO)REFERENCES Student(SNO)
on delete cascade
on update cascade,
FOREIGN KEY(CNO)REFERENCES Course(CNO)
on delete no action
on update no action,
);
--二、触发器的实现
--1、修改Student表,增加属性CNT,SMALLINT型,表示学生的选课门数,设置CNT的默认值为。
--增加属性SZK,SMALLINT型,表示素质选修课学分。
ALTER TABLE Student ADD CNT SMALLINT;
ALTER TABLE Student ADD SZK SMALLINT;
--在Student表上创建以下触发器。