资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第二部分,关系数据库表间联系,1,本章要点,联系,E-R,图,E-R,图转换为关系模式,完整性规则,2,为什么要使用联系,现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界反映为实体内部的联系和实体之间的联系。,3,什么是联系,联系是指实体之间的相互关联,4,联系的类型,一对一关系,一对多关系,多对多关系,供应商,产品,供应,1,n,产品,订单,订单明细,m,n,5,E-R,图,E-R,图三要素,实体,entity,:用矩形框表示,关系,relation,:用菱形表示,属性,attribute,:用椭圆表示,6,E-R,图的设计,设计,E-R,图的步骤:,(1),确定实体、属性和实体间的联系,画出用户视图的局部,E-R,图,;,(2),综合各个用户的局部,E-R,图,产生反映数据库整体概念的总体,E-R,图。,7,多元联系,供应商,产品,类别,供应,拥有,n,1,n,1,雇员,订单,运货商,处理,运送,1,1,n,n,8,局部,E-R,图设计,9,罗斯文全局,E-R,图,供应商,产品,类别,雇员,订单,运货商,客户,供应,拥有,拥有,处理,运送,定,1,n,m,1,n,n,1,1,1,n,n,n,10,实体,-,联系模型转换为关系模型,所有的关系模式组成数据库的模式。所以关系数据库设计就是要设计出数据库的模式,也称逻辑结构或逻辑模型。,11,设计方法,将实体,-,联系模型转换为关系模型,用若干个关系模式来表示。,实体,-,联系模型由实体、属性、标识符和实体之间的联系等要素组成的,,实际上就是要将,E-R,图中实体、实体的属性和实体之间的联系等转换为若干个关系模式,并确定这些关系模式的属性、关键字和约束。,12,实体的转换,E,R,图,中的每个实体,转换为关系模型的一个关系,关系的属性就是实体的属性,关系的主键就是实体的标识符。,一个关系用一个关系模式表示,在关系模式中,用下划线来表示主键。,关系名及其属性名可以用对应实体的实体名和属性名。,以产品表为例,13,联系的转换,1,二元联系的转换,(1)1:1,联系的转换方法,通常将,1:1,联系与某一端实体转换得到的关系合并,在被合并的关系中增加联系本身的属性和与联系相关的另一端实体对应关系的主键,被合并关系的主键保持不变。,14,1:1,联系的转换,15,(2)1:n,联系的转换方法,通常将,1:n,联系与,n,端实体转换得到的关系合并,在,n,端实体对应的关系中增加联系本身的属性和一端实体对应关系的主键,新增属性后,,n,端实体对应关系的主键保持不变。,供应商,产品,供应,1,n,16,1:n,联系的转换,供应商(,供应商,ID,,公司名称,联系人姓名,联系人职务,地址,城市,地区,邮政编码,国家,电话,传真,主页),产品(,产品,ID,,产品名称,单位数量,单价,库存量,订购量,再订购量,中止),产品(,产品,ID,,产品名称,单位数量,单价,库存量,订购量,再订购量,中止,供应商,ID,),17,练习,类别和产品之间的联系,联系的转换,找出,northwind,数据库中存在的其他一对多联系并加以转换,18,(3)m:n,联系的转换方法,一个,m:n,联系转换为一个关系,与该联系相连的各实体的主键以及联系本身的属性均转换为关系的属性,新关系的主键由相连的各实体的主键组成,(,多属性构成的组合键,),。,19,找出,northwind,中存在的多对多联系,20,m:n,联系的转换,订单,(,订单,ID,订购日期,到货日期,发货日期,运货商,运货费,货主名称,货主地址,货主城市,货主地区,货主地区,货主邮政编码,货主国家,),产品(,产品,ID,,产品名称,单位数量,单价,库存量,订购量,再订购量,中止),订单明细(,订单,ID,,产品,ID,,单价,数量,折扣),21,完整性规则,完整性规则包括实体完整性规则、参照完整性规则和用户自定义完整性规则三大类。,实体完整性和参照完整性是关系模型必须满足的两个完整性规则。,22,1.,实体完整性规则,实体完整性规则,是表中任意一行的主键值不能为空值。,空值,用,“,null,”,表示,大小写一样。空值是尚未确定的值或不确定的值。如,Enrollment,表中的,Grade,值。,空值和数值型列的,0,值以及字符型列的空字符串的不同,数值型列的,0,值与字符型列的空字符串都是确定的值,。,23,根据主键的定义,主键值必须惟一。,因此,实体完整性也可定义为:,主键值惟一且不能为空值。,表中任意一行的主键值不能为空值。,以产品表,类别表为类演示输入重复值的情况,24,实体完整性的作用:一旦定义表的主键,,RDBMS,将自动地对该表中的每一行的主键值进行检查,若发现主键值为空或不惟一,,RDBMS,会给出错误信息,这样就能确保表中的每一行是惟一的,可以区分的。,25,2.,参照完整性规则,参照完整性规则,是一个表的外键值可以为空值。若不为空值,则必须等于另一个表中主键的某个值。,外键(,Foreign Key,,,FK,):若一个表,R1,中的一个列或列组对应另一个表,R2,的主键,那么该列或列组称为表,R1,的外键。,外键可以由一个或多个列组成,可以有重复值。,以产品,订单,订单明细为例,演示外键的使用,查阅功能的进一步演示,26,参照完整性的作用:在关系数据库系统中,一旦定义了表的外键,也即定义了外键与另一个表的主键的参照与被参照联系,,RDBMS,将根据外键的定义,自动检查表中的每一行,若发现外键值违反外键的规则,,RDBMS,会给出错误信息,要求用户纠正,这样能确保表之间的参照与被参照联系的正确性。,27,3.,用户自定义完整性规则,用户自定义完整性规则,是表格设计者为了保证表中某些行、列的数据满足具体应用要求而自定义的一些规则。,自定义规则往往根据实际的应用背景提出来。,例如:在订单明细表中,单价列的取值范围只能是,0,。,28,
展开阅读全文