六、关系数据库的规范化理论 函数依赖
+ L7 c% l! G- b! ~) ]" r2 J 定义1 设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称‘X函数确定Y’或‘Y函数依赖于X’,记作X→Y。1 u& v- ]) ^6 g' L. t4 O
函数依赖和别的数据依赖一样是语义范畴的概念。只能根据语义来确定一个函数依赖。例如姓名→年龄这个函数依赖只有在没有同名人的条件下成立。如果允许有相同名字,则年龄就不再函数依赖于姓名了。设计者也可以对现实世界作强制的规定。例如规定不允许同名人出现,因而使姓名→年龄函数依赖成立。这样当插入某个元组时这个元组上的属性值必须满足规定的函数依赖,若发现有同名人存在,则拒绝插入该元组。注意,函数依赖不是指关系模式R的某个或某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件
% U& O" ~2 T- Q& X# K: K 七、数据库的安全与保护
% b4 Q N: x* H+ J4 B3 q 1.安全性- `. \; r, s7 [9 L
数据库的安全性是指保护数据库以防止不合法的或非正常的使用所造成的数据泄露、更改或破坏。安全性问题不是数据库系统所独有的,计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多用户直接共享,是十分重要的信息资源。从而使安全性问题变得更为突出。系统安全保护措施是否有效是数据库系统的主要性能指标之一。对于数据库的安全保密方式可以有系统处理的和物理的两个方面。所谓物理的是指,对于强力逼迫透露口令、在通信线路上窃听、以至盗窃物理存储设备等行为。对此所采取的措施是将数据编为密码,加强警卫以识别用户身份和保护存储设备等措施。在一般计算机系统中,安全措施是一级一级层层设置的。* z" u6 X9 r* w! h; X+ C" Q6 q$ h
(1)用户标识和鉴定首先,系统提供一定的方式让用户标识自己的名字或身份。系统进行核实,通过鉴定后才提供机器使用权。常用的方法有:用一个用户名或者用户标识号来标明用户身份。系统鉴别此用户是否是合法用户。若是,则可以进入下一步的核实;若不是,则不能使用计算机。用户名的登录只由系统管理员进行,一般用户不能实施用户名登录。口令(Password),为了进一步核实用户,系统常常要求用户输入口令。
2 o/ [$ p1 P/ v, s: i (2)存取控制对于获得上机权的用户还要根据预先定义好的用户权限进行存取控制,保证用户只能存取他有权存取的数据。所谓用户权限是指不同的用户对于不同的数据对象允许执行的操作权限。它由两部分组成,一是数据对象,二是操作类型。数据对象有二类。一类是数据本身,如关系数据库中的表、字段,非关系数据库中的记录、字段(亦称为数据项)。另一类是外模式、模式、内模式。在关系系统中DBA可以把建立、修改基本表的权力授予用户,用户获得此权力后可以建立基本表、索引、视图。这说明关系系统中存取控制的数据对象不仅有数据而且有模式、外模式、内模式等数据字典中的内容。对于存取权限的定义称为授权(Authorization)。这些定义经过编译后存储在数据字典中。每当用户发出存取数据库的操作请求后,DBMS查找数据字典,根据用户权限进行合法权限检查(Authorization Check)。若用户的操作请求超出了定义的权限,系统拒绝执行此操作。授权编译程序和合法权限检查机制一起组成了安全性子系统。衡量授权子系统精巧程度的另一个尽度是否提供与数据值有关的授权。有的系统还允许存取谓词中引用系统变量,如一天中的时刻,终端设备号。这样用户只能在某台终端、某段时间内存取有关数据,这就是与时间和地点有关的存取权限。另外,在操作系统中对文件、目标等的存取还有一些安全保护措施。其中加密是一种防止数据内容被别人引用或了解的切实可行的办法。加密有程序加密和硬件加密卡两种形式。
& j2 L' y( L8 w% {) d$ t 2.完整性9 h+ F$ A1 b! d0 M
数据库的完整性是指数据的正确性和相容性。DBMS必须提供一种功能来保证数据库中数据的完整性。这种功能亦称为完整性检查,即系统用一定的机制来检查数据库中的数据是否满足规定的条件。这种条件在数据库中称为完整性约束条件。数据的约束条件是语义的体现,这些完整性约束条件将作为模式的一部分存放数据字典中。数据的完整性和安全性是两个不同的概念。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garbage In Garbage Out)所造成的无效操作和错误结果。而后者是保护数据库防止恶意的破坏和非法的存取。当然,完整性和安全性是密切相关的。特别从系统实现的方法来看,往往是一种机制常常既可用于安全性保护亦可用于完整性保证。完整性约束条件可以分类如下:(1)值的约束和结构的约束前者指对数据的值的限制,后者指对数据之间联系的限制。关于对数据值的约束 这类约束条件是指对数据取值类型、范围、精度等的规定。关于数据之间联系的约束 数据库中同一关系的不同属性之间可以有一定的联系,从而也应满足一定的约束条件。同时,由于数据库中数据是结构化的,不同的关系之间也可以有联系,因而不同关系的属性之间也可满足一定的约束条件。* E3 B; }: |, ?% |, P" d
! b. a0 \* E( c& ^- X' @: W
(2)静态约束和动态约束所谓静态约束是指对数据库每一确定状态的数据所应满足的约束条件。以上所讲的约束都属静态约束。动态约束是指数据库从一种状态转变为另一种状态时新、旧值之间所应满足的约束条件。 |