资源描述:
《关系规范化样例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第三章关系规范化理论关系的规范是关系数据模型设计中的一个非常重要的问题,它可以指导我们设计出好的关系。设计和构造合理的关系,使之能准确地反映现实世界并有利于应用和具体操作,是关系的规范和探讨的问题。所以有人把关系的规范化理论称为设计数据库的理论。第一节关系中的一、候选键(candidatekey)凡在一个关系屮具有主键特性的属性或属性组,均称为候选键。因为它们都具有被选为主键的条件,所以一个关系可能有多个候选键,但只能选其屮的一个为主键。候选键屮包含的属性,期于的属性称为非主属性。例:在职工关系ZG(姓名,性别,年龄)屮,增加一个属性:职工
2、号,即得到一个新关系:ZG(职工号,姓名,性别,年龄)又假定职工号与职工姓名是一一对应的,即没有两个职工的姓名相同,则“职工号”和“姓名”两个都是候选键。二、替代键(alternatekey)对于某一指定的关系可能存在多个候选键,但只能选其屮的一个为主键。在确定主键后,其余的候选键都是替代键,替代键在需要时可代替主键。二、外来键(foreignkey)但关系屮的某些属性系由另一个关系的主键构成时,则该属性(或属性组)称为外来键。第二节函数依赖一、函数依赖定义1:设R是一个关系,X和Y是R中的两个属性。若R中X的任何一个值,仅有一个Y的值与之
3、对应,则称为R的属性Y函数依赖(FD)于属性X,记作X今Y。例如:在描述船员的关系CREW(NO,NAME,AGE,JOB,PAY)它表示由任一船员号NO,仅能找到一个姓名、一个年龄、一个。。。定义中的属性X可以是复合属性,例如SP(SPQTY-USED)中的(SP')二、完全函数依赖和部分函数依赖定义2:如果属性Y函数依赖于复合属性X,而且不与X的任一子集X‘函数依赖(X’今Y),则称属性Y完全函数依赖(FFD)于复合函数X,记作X今Y。若X4Y但不是完全函数依赖,则称Y部分函数依赖于X。例:在关系SP(S8,PQTY-USED)
4、中QTY-USED表示部件Ps在S'船上使用的数量,只有同时指定SlDP%才能说明某部件在某船上的用量,缺一不可,因此QTY-USK)完全函数依赖于(SP”。三、传递函数依赖定义3:如果X,Y,Z是R中的三个属性(或属性复合)若X+人Y今X,Y今Z,则称Z对X传递函数依赖。例如:S(SSNAME,CITY,POSTCODE)中SP+CITY,CIT\->S若CITY+POSTCODE,则称POSTCODE传递依赖于S例:设有下列关系GPD(零件号,零件名,设计人,设计人等级)因为零件号一零件名零件号一设计人设计人一设计人等级故零件
5、号一设计人等级第三节规范化和范式一、规范化问题的提出关系模型的特点是使用二维表来表示现实世界的实体集合和属性关系,这样容易历届和被用户所接受,然而并不是所有二维表都能构成关系模型,见表农产品统计表省市总产值产量亩产小麦稻谷小麦稻谷北京河北职工情况登记表职工号姓名级别工资学历毕业时间001张技1083屮专大学研允生195719681981002李技1262以上两张二维表就不能构成关系,因为出现了子项,那么具备那些条件的二维表才能称为关系呢?在关系模式屮,要求二维表具有以下性质:(1)二维表屮的每一列都是不能分割的棊本数据项,且无重复组。(2)
6、同一关系屮,没有相同的列出现。描述一个实体,不需要重复出现相同的属性名(3)同一关系屮,各行的内容不能完全相同完全相同的行,实无意义满足上述条件的关系,称为规范化的关系,否则叫非规范化形式,这种“形式”即不能被定义成关系模型,又不能被关系型的DBMS所接受,因此要对非规范化的表格(关系)进行规范化处理。所谓规范化处理,就是逐步用更单纯、更规则的关系来取代原有关系的过程。二、规范化的意义规范化处理的目的不仅将关系的“概念”单一化,使每一个数据项使一个简单的基本项,又无重复组。还有以下意义:(1)解决冗余度问题所谓“冗余”问题是指表格屮的数据重
7、复。]例:船与船员之IKI的1:N联系见表NSPSNAMENONAMEAGES,DQ1001S,DQ1004——>S,DQ1020scs2XII1025••••••船与船员SHIPstDQs2XHs。NONAMEs:1001s:1004s:1020saSNAME这样重复太多,一条船有多个船员,船号与船名就要重复存储多次,如果将船的有关数据分开存储,分为SHIP和SC两个表,在SC屮存放船号与船名数据,则重复的仅仅是船号,其余的重复都消除了。为了减少甚至消除重复,将关系进行分离,正是逐步规范化的重要一步。(1)消除多义性问题多义性是指关系中某
8、些属性含义不清或有多种可能的含义。例:船部件这个关系SP(SP%QTY)其中数量QTY到底是说明S与P之间的联系,即某船需要某个部件多少个,还是仅仅说明P为仓库中现存某个部件多