第四章 分布透明性_第1页
第四章 分布透明性_第2页
第四章 分布透明性_第3页
第四章 分布透明性_第4页
第四章 分布透明性_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 分布透明性的级别 所谓分布透明性级别就是应用程序与数据分布相关程度的一种度量,很类似于集中式数据库中的数据独立性,数据分布透明性分为四个级别。首先通过例子考虑什么是分段及分段种类。4.1 数据分段及分段种类设有如下关系数据模型:S (学号,姓名,年令,性别,系号,奖学金, 班长学号,民族)D(系号,系名,系主任)C(课号,课名,学时,任课教师)SC(学号, 课号,成绩) (1)水平分段-通过选择运算实现例:把表S分为2个段,男、女各一段选择的条件称为限定语,用q表示S1=SL性别=男SS2=SL性别=女S(2) 垂直分段-通过投影运算实现例:根据学习与生活的不同用途把S按属性分为2个段

2、。 S3=PJ学号,姓名,系名,班长学号S S4=PJ学号,性别,奖学金,民族S注意:学号必须重复,用于结合还原(3) 导出式水平分段-通过半结合运算实现例:把成绩表SC按男、女分为2个段 SC1=SC NSJ S1 (男) SC2=SC NSJ S2 (女)(4) 混合式分段(含水平和垂直)例:把S分成4段,男、女及学习与生活信息分开S11=PJ学号,姓名,系别,班长学号SL性别=男SS12=PJ学号,姓名,系别,班长学号SL性别=女SS21=PJ学号,性别,奖学金,民族SL性别=男S S22=PJ学号,性别,奖学金,民族SL性别=女S 分段原则与分段透明性级别分段原则:(1)数据完整性(不

3、丢数据),任一数据必属某段。(2)可重构性 水平分段、或导出水平分段用合并运算重构, 垂直分段用结合运算重构混合分段用合并和结合运算重构(3)不相交性水平分段、或导出水平分段均为划分,即任意一个元组只属某一个段。分段透明性级别:(1) 分段透明应用程序与段无关(与集中数据库相同)(2) 位置透明应用程序与段有关,但与段所在位置无关(3) 本地映射透明应用程序与段及段所在位置都有关,但与本地的DBMS无关(4) 无透明性应用程序与段、段的位置、本地DBMS都有关 只读应用的分布透明性 (1) 最简单的读应用(单表读)例子:设有全局据库模型:EMP(EMPNUM,NAME,SAL,TAX,MGRN

4、UM,DEPTNUM) DEPT(DEPTNUM, NAME, AREA, MGRNUM)SUPPLIER(SNUM, NAME, CITY)SUPPLY(SNUM, PNUM, DEPTNUM, QUAN)分段模式:EMP1=SLDEPTNUM<=10PJEMPNUM,NAME,MGRNUM,DEPTNUM(EMP)EMP2=SL10<DEPTNUM<=20PJEMPNUM,NAME,MGRNUM,DEPTNUM(EMP)EMP3=SLDEPTNUM>20PJEMPNUM,NAME,MGRNUM,DEPTNUM(EMP) EMP4=PJEMPNUM,NAME,SAL,

5、TAX(EMP)DEPT1=SLDEPTNUM<=10(DEPT)DEPT2=SL10<DEPTNUM<=20(DEPT)DEPT3=SLDEPTNUM>20(DEPT) SUPPLIER1=SLCITY=SF(SUPPLIER)SUPPLIER2=SLCITY=LA(SUPPLIER)SUPPLY1=SUPPLY SJ SNUM=SNUM SUPPLIER1SUPPLY2=SUPPLY SJ SNUM=SNUM SUPPLIER2也可写成:SUPPLY1=SUPPLY NSJ SUPPLIER1SUPPLY2=SUPPLY NSJ SUPPLIER2例子:Q1:任意给

6、一个供应商号,求供应商名。 (1)系统具有分段透明性 Read(terminal,$SNUM); select NAME into $NAME from SUPPLIER where SNUM = $SNUM; Write(terminal, $NAME);SUPPLIER1 DDBNS 站点1SUPPLIER2 DDBMS 站点2SUPPLIER2 站点3 (a) 分段透明性(级别1)查询Q1:任意给一个供应商号,求供应商名。 (2)系统具有位置透明性:Read(terminal,$SNUM); select NAME into $NAME from SUPPLIER1 where SNUM

7、 = $SNUM;if not # FOUND then select NAME into $NAME from SUPPLIER2 where SNUM = $SNUM;Write(terminal, $NAME);SUPPLIER1 DDBNS 站点1SUPPLIER2 DDBMS 站点2SUPPLIER2 或 站点3 (b) 位置透明性(级别2)(3)系统具有本地映射透明性:(加站点)Read(terminal,$SNUM); select NAME into $NAME from SUPPLIER1 AT SITE1 where SNUM = $SNUM;if not # FOUND

8、then select NAME into $NAME from SUPPLIER2 AT SITE3 where SNUM = $SNUM;Write(terminal, $NAME);SUPPLIER1 DDBNS 站点1SUPPLIER2 DDBMS 站点2SUPPLIER2 站点3 (c) 本地映射透明性(级别3)图4.1 分布透明性不同级别下的只读应用 SUPINQUIRY(4)无透明性(2)较复杂的读应用(多表读)查询Q2:任意给一个零件号,求供应商名。设分配模式为:SUPPLIER1 为站点1 SUPPLY1 为站点3 SUPPLIER2 为站点2 SUPPLY2 为站点4(1)

9、系统具有分段透明性 Read(terminal,$PNUM); select NAME into $NAME from SUPPLIER,SUPPLYwhere SUPPLIER . SNUM = SUPPLY.SNUM and SUPPLY.PNUM=$PNUM; Write(terminal, $NAME); (a) 分段透明性(级别1)查询Q2:任意给一个零件号,求供应商名。 设分配模式为:SUPPLIER1 为站点1 SUPPLY1 为站点3 SUPPLIER2 为站点2 SUPPLY2 为站点4(2)系统具有位置透明性Read(terminal,$PNUM); select NAME

10、 into $NAME from SUPPLIER1,SUPPLY1where SUPPLIER1 . SNUM = SUPPLY1.SNUM; and SUPPLY1.PNUM=$PNUM;if not # FOUND thenselect NAME into $NAME from SUPPLIER2,SUPPLY2where SUPPLIER2 . SNUM = SUPPLY2.SNUM; and SUPPLY2.PNUM=$PNUM; Write(terminal, $NAME); (b) 位置透明性(级别2)思考:SUPPLIER 与 SUPPLY 都有更多的段?SUPPLIER1 与

11、 SUPPLY2 或SUPPLIER1 与 SUPPLY2 的结合不为空呢?查询Q2:任意给一个零件号,求供应商名。并设分配模式为:SUPPLIER1 为站点1 SUPPLY1 为站点3 SUPPLIER2 为站点2 SUPPLY2 为站点4(3)系统具有本地映射透明性Read(terminal,$PNUM); select SNUM into $SNUM from SUPPLY1 at site3where PNUM = $PNUM;if # FOUND thenbegin send $SNUM from site3 to site1;select NAME into $NAMEfrom S

12、UPPLIER1 at site1 (程序员很聪明)where SNUM = $SNUMendelse beginselect SNUM into $SNUMfrom SUPPLIER2 at site4where PNUM = $PNUM;send $SNUM from site4 to site2;select NAME into $NAMEfrom SUPPLIER2 at site2where SNUM = $SNUM endWrite(terminal, $NAME);(d) 本地映射透明性(级别3) 分布透明性不同级别下的只读应用 SUPOFPART4.4 更新应用的分布透明性设有

13、全局数据模型:S(学号,姓名,年令,性别,系号,奖学金,民族)C(课号,课名,学时,任课教师)SC(学号, 课号,成绩) D(系号,系名,系主任)分段与分配模式为:S1=SL系号=2S 站点1S2=SL系号=5S 站点2S3=SL系号¹2 AND 系号¹5S 站点3SC1 = SC NSJ S1 站点1SC2 = SC NSJ S2 站点2SC3 = SC NSJ S3 站点3模式C与D不分段,且重复地存放在2个站点上。请分别在分段透明、位置透明、本地映射透明下完成:(1)把100号学生的奖学金增加50元。(2)把6号与2号系学生的奖学金都加50元。(3)学号为100的学生

14、由2号系调入5号系的程序。的程序。分段透明:UPDATE SSET 奖学金=奖学金+50WHERE 学号=100;位置透明:SELECT * FROM S1 WHERE 学号=100; IF # FOUND THEN UPDATE S1SET 奖学金=奖学金+50WHERE 学号=100;ELSE BEGIN SELECT * FROM S2 WHERE 学号=100; IF # FOUND THENUPDATE S2SET 奖学金=奖学金+50WHERE 学号=100; ELSEUPDATE S3SET 奖学金=奖学金+50WHERE 学号=100;END;本地映射透明:SELECT * F

15、ROM S1 AT SITE1 WHERE 学号=100;IF # FOUND THEN UPDATE S1 AT SITE1SET 奖学金=奖学金+50WHERE 学号=100;ELSE BEGIN SELECT * FROM S2 AT SITE2 WHERE 学号=100; IF # FOUND THENUPDATE S2 AT SITE2SET 奖学金=奖学金+50WHERE 学号=100;ELSEUPDATE S3 AT SITE3SET 奖学金=奖学金+50WHERE 学号=100;END;(2)把6号与2号系学生的奖学金都加50元。分段透明:UPDATE SSET 奖学金=奖学金

16、+50WHERE 系号=2 OR系号=6;位置透明:UPDATE S2SET 奖学金=奖学金+50;UPDATE S3SET 奖学金=奖学金+50WHERE 系号=6;本地映射透明:UPDATE S2 AT SITE2SET 奖学金=奖学金+50;UPDATE S3 AT SITE3SET 奖学金=奖学金+50WHERE 系号=6;(3)学号为100的学生由2号系调入5号系的程序。分段透明:UPDATE SSET 系号=5WHERE 学号=100;位置透明:SELECT 姓名,年令,性别,奖学金,班长学号,民族INTO 姓名,年令,性别, 奖学金, 民族FROM S1WHERE 学号=100;

17、SELECT 学号, 课号,成绩 INTO SC(学号, 课号,成绩)FROM SC1WHERE 学号=100; DELETE SC1 WHERE 学号=100;(先删SC1,因为学号在该表中为外键)DELETE S1 WHERE 学号=100;(再删S1)INSERT INTO S2 (100,姓名,年令,性别, 奖学金, 民族)INSERT INTO SC2 AS SELECT * FROM SC本地映射透明:SELECT 姓名,年令,性别,奖学金,班长学号,民族INTO 姓名,年令,性别, 奖学金, 民族FROM S1 AT SITE1WHERE 学号=100;SELECT 学号, 课号

18、,成绩 INTO SC(学号, 课号,成绩)FROM SC1 AT SITE1WHERE 学号=100; DELETE SC1 AT SITE1 WHERE 学号=100;DELETE S1 AT SITE1 WHERE 学号=100;INSERT INTO S2 AT SITE2(100,姓名,年令,性别, 奖学金, 民族)INSERT INTO SC2 AT SITE2 AS SELECT * FROM SC设EMP有如下分段:EMP1=PJEMPNUM,NAME,SAL,TAXSLDEPTNUM<=10(EMP) EMP2=PJEMPNUM,MGRNUM,DEPTNUMSLDEPT

19、NUM<=10(EMP) EMP3=PJEMPNUM,NAME,DEPTNUM SLDEPTNUM>10(EMP) EMP4=PJEMPNUM,SAL,TAX MGRNUM SLDEPTNUM>10 (EMP)Q3 100号雇员从3号部门调至15号部门。分段透明:(注意:部门变了部门经理号也得变) SELECT MGRNUM INTO $MGRNUM FROM DEPT WHERE DEPTNUM = 15;UPDATE EMPSET DEPTNUM = 15, MGRNUM=$MGRNUMWHERE EMPNUM = 100;(a) 分段透明性(级别1)位置透明:SELECT NAME,SAL,TAX INTO $NAME,$SAL,$TAXFROM EMP1WHERE EMPNUM = 100 ;SELECT MGRNUM INTO $MGRNUMFROM DEPT2WHERE DEPTNUM = 15 ;DELETE EMP1 WHERE EMPNUM = 100; DELETE EMP2 WHERE EMPNUM = 100;INSERT INTO EMP3(EMPNUM,SAL,TAX,DEPTNUM); (100,$NAME,15 );INSERT INTO EMP4(EMPNUM,SAL,TAX,MGR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论