第四章 分布透明性
更新时间:2023-03-08 05:25:05 阅读量: 综合文库 文档下载
- 第四章净身出户离婚的小说推荐度:
- 相关推荐
第四章 分布透明性的级别
所谓分布透明性级别就是应用程序与数据分布相关程度的一种度量,很类似于集中式数据库中的数据独立性,数据分布透明性分为四个级别。 首先通过例子考虑什么是分段及分段种类。
4.1 数据分段及分段种类
设有如下关系数据模型:
S (学号,姓名,年令,性别,系号,奖学金, 班长学号,民族) D(系号,系名,系主任) C(课号,课名,学时,任课教师) SC(学号, 课号,成绩)
(1)水平分段---通过选择运算实现 例:把表S分为2个段,男、女各一段 选择的条件称为限定语,用q表示
S1=SL性别=’男’S S2=SL性别=‘女‘S
(2) 垂直分段---通过投影运算实现
例:根据学习与生活的不同用途把S按属性分为2个段。 S3=PJ学号,姓名,系名,班长学号S S4=PJ学号,性别,奖学金,民族S
注意:学号必须重复,用于结合还原
(3) 导出式水平分段---通过半结合运算实现 例:把成绩表SC按男、女分为2个段 SC1=SC NSJ S1 (男) SC2=SC NSJ S2 (女) (4)
混合式分段(含水平和垂直)
例:把S分成4段,男、女及学习与生活信息分开
1
S11=PJ学号,姓名,系别,班长学号SL性别=‘男‘S S12=PJ学号,姓名,系别,班长学号SL性别=‘女‘S S21=PJ学号,性别,奖学金,民族SL性别=‘男‘S S22=PJ学号,性别,奖学金,民族SL性别=‘女‘S
4.2分段原则与分段透明性级别
分段原则:
(1)数据完整性(不丢数据),任一数据必属某段。 (2)可重构性
水平分段、或导出水平分段用合并运算重构, 垂直分段用结合运算重构
混合分段用合并和结合运算重构 (3)不相交性
水平分段、或导出水平分段均为划分,即任意一个元组只属某一个段。
分段透明性级别:
(1) 分段透明
应用程序与段无关(与集中数据库相同) (2) 位置透明
应用程序与段有关,但与段所在位置无关 (3) 本地映射透明
应用程序与段及段所在位置都有关,但与 本地的DBMS无关 (4) 无透明性
应用程序与段、段的位置、本地DBMS都有关
4.3 只读应用的分布透明性
(1) 最简单的读应用(单表读)
例子:设有全局据库模型:
EMP(EMPNUM,NAME,SAL,TAX,MGRNUM,DEPTNUM) DEPT(DEPTNUM, NAME, AREA, MGRNUM) SUPPLIER(SNUM, NAME, CITY)
SUPPLY(SNUM, PNUM, DEPTNUM, QUAN) 分段模式:
2
EMP1=SLDEPTNUM<=10PJEMPNUM,NAME,MGRNUM,DEPTNUM(EMP) EMP2=SL10 EMP3=SLDEPTNUM>20PJEMPNUM,NAME,MGRNUM,DEPTNUM(EMP) EMP4=PJEMPNUM,NAME,SAL,TAX(EMP) DEPT1=SLDEPTNUM<=10(DEPT) DEPT2=SL10 SUPPLY1=SUPPLY SJ SNUM=SNUM SUPPLIER1 SUPPLY2=SUPPLY SJ SNUM=SNUM SUPPLIER2 也可写成: SUPPLY1=SUPPLY NSJ SUPPLIER1 SUPPLY2=SUPPLY NSJ SUPPLIER2 例子:Q1:任意给一个供应商号,求供应商名。 (1)系统具有分段透明性 Read(terminal,$SNUM); select NAME into $NAME from SUPPLIER where SNUM = $SNUM; Write(terminal, $NAME); SUPPLIER1 站点1 DDBNS DDBMS SUPPLIER2 站点2 站点3 (a) 分段透明性(级别1) 查询Q1:任意给一个供应商号,求供应商名。 (2)系统具有位置透明性: 3 SUPPLIER2 Read(terminal,$SNUM); select NAME into $NAME from SUPPLIER1 where SNUM = $SNUM; if not # FOUND then select NAME into $NAME from SUPPLIER2 where SNUM = $SNUM; Write(terminal, $NAME); SUPPLIER1 站点1 DDBNS DDBMS 站点2 SUPPLIER2 或 站点3 (b) 位置透明性(级别2) (3)系统具有本地映射透明性:(加站点) Read(terminal,$SNUM); select NAME into $NAME from SUPPLIER1 AT SITE1 where SNUM = $SNUM; if not # FOUND then select NAME into $NAME from SUPPLIER2 AT SITE3 where SNUM = $SNUM; Write(terminal, $NAME); SUPPLIER2 SUPPLIER1 站点1 DDBNS DDBMS SUPPLIER2 站点2 站点3 SUPPLIER2 (c) 本地映射透明性(级别3) 图4.1 分布透明性不同级别下的只读应用 SUPINQUIRY (4)无透明性 4 (2)较复杂的读应用(多表读) 查询Q2:任意给一个零件号,求供应商名。 设分配模式为: SUPPLIER1 为站点1 SUPPLY1 为站点3 SUPPLIER2 为站点2 SUPPLY2 为站点4 (1)系统具有分段透明性 Read(terminal,$PNUM); select NAME into $NAME from SUPPLIER,SUPPLY where 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 into $NAME from SUPPLIER1,SUPPLY1 where SUPPLIER1 . SNUM = SUPPLY1.SNUM; and SUPPLY1.PNUM=$PNUM; if not # FOUND then select NAME into $NAME from SUPPLIER2,SUPPLY2 where SUPPLIER2 . SNUM = SUPPLY2.SNUM; and SUPPLY2.PNUM=$PNUM; Write(terminal, $NAME); 5 (b) 位置透明性(级别2) 思考: SUPPLIER 与 SUPPLY 都有更多的段? SUPPLIER1 与 SUPPLY2 或 SUPPLIER1 与 SUPPLY2 的结合不为空呢? 查询Q2:任意给一个零件号,求供应商名。并设分配模式为: SUPPLIER1 为站点1 SUPPLY1 为站点3 SUPPLIER2 为站点2 SUPPLY2 为站点4 (3)系统具有本地映射透明性 Read(terminal,$PNUM); select SNUM into $SNUM from SUPPLY1 at site3 where PNUM = $PNUM; if # FOUND then begin send $SNUM from site3 to site1; select NAME into $NAME from SUPPLIER1 at site1 (程序员很聪明) where SNUM = $SNUM end else begin select SNUM into $SNUM from SUPPLIER2 at site4 where PNUM = $PNUM; send $SNUM from site4 to site2; select NAME into $NAME from SUPPLIER2 at site2 6 where SNUM = $SNUM end Write(terminal, $NAME); (d) 本地映射透明性(级别3) 图4.2 分布透明性不同级别下的只读应用 SUPOFPART 4.4 更新应用的分布透明性 设有全局数据模型: S(学号,姓名,年令,性别,系号,奖学金,民族) C(课号,课名,学时,任课教师) SC(学号, 课号,成绩) D(系号,系名,系主任) 分段与分配模式为: S1=SL系号=’2’S 站点1 S2=SL系号=’5’S 站点2 S3=SL系号?’2’ AND 系号?’5’S 站点3 SC1 = SC NSJ S1 站点1 SC2 = SC NSJ S2 站点2 SC3 = SC NSJ S3 站点3 模式C与D不分段,且重复地存放在2个站点上。 请分别在分段透明、位置透明、本地映射透明下完成: (1)把100号学生的奖学金增加50元。 (2)把6号与2号系学生的奖学金都加50元。 (3)学号为100的学生由2号系调入5号系的程序。 的程序。 分段透明:UPDATE S SET 奖学金=奖学金+50 WHERE 学号=’100’; 位置透明:SELECT * FROM S1 WHERE 学号=’100’; IF # FOUND THEN 7 UPDATE S1 SET 奖学金=奖学金+50 WHERE 学号=’100’; ELSE BEGIN SELECT * FROM S2 WHERE 学号=’100’; IF # FOUND THEN UPDATE S2 SET 奖学金=奖学金+50 WHERE 学号=’100’; ELSE UPDATE S3 SET 奖学金=奖学金+50 WHERE 学号=’100’; END; 本地映射透明: SELECT * FROM S1 AT SITE1 WHERE 学号=’100’; IF # FOUND THEN UPDATE S1 AT SITE1 SET 奖学金=奖学金+50 WHERE 学号=’100’; ELSE BEGIN SELECT * FROM S2 AT SITE2 WHERE 学号=’100’; IF # FOUND THEN UPDATE S2 AT SITE2 SET 奖学金=奖学金+50 WHERE 学号=‘100‘; ELSE UPDATE S3 AT SITE3 8 SET 奖学金=奖学金+50 WHERE 学号=‘100‘; END; (2)把6号与2号系学生的奖学金都加50元。 分段透明:UPDATE S SET 奖学金=奖学金+50 WHERE 系号=‘2‘ OR系号=‘6‘; 位置透明:UPDATE S2 SET 奖学金=奖学金+50; UPDATE S3 SET 奖学金=奖学金+50 WHERE 系号=‘6‘; 本地映射透明: UPDATE S2 AT SITE2 SET 奖学金=奖学金+50; UPDATE S3 AT SITE3 SET 奖学金=奖学金+50 WHERE 系号=‘6‘; (3)学号为100的学生由2号系调入5号系的程序。 分段透明:UPDATE S SET 系号=’5’ WHERE 学号=’100’; 位置透明: SELECT 姓名,年令,性别,奖学金,班长学号,民族INTO $姓名,$年令,$性别, $奖学金, $民族 FROM S1 WHERE 学号=’100’; SELECT 学号, 课号,成绩 INTO $SC(学号, 课号,成绩) FROM SC1 9 WHERE 学号=’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 SITE1 WHERE 学号=’100’; SELECT 学号, 课号,成绩 INTO $SC(学号, 课号,成绩) FROM SC1 AT SITE1 WHERE 学号=’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,DEPTNUMSLDEPTNUM<=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; 10 UPDATE EMP SET DEPTNUM = 15, MGRNUM=$MGRNUM WHERE EMPNUM = 100; (a) 分段透明性(级别1) 位置透明: SELECT NAME,SAL,TAX INTO $NAME,$SAL,$TAX FROM EMP1 WHERE EMPNUM = 100 ; SELECT MGRNUM INTO $MGRNUM FROM DEPT2 WHERE 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,MGRNUM); (100,$SAL,$TAX ,$MGRNUM); (b) 位置透明性(级别2) 本地映射透明: SELECT NAME,SAL,TAX INTO $NAME,$SAL,$TAX FROM EMP1 AT SITE1 WHERE EMPNUM = 100 ; SELECT MGRNUM INTO $MGRNUM FROM DEPT2 AT SITE2 WHERE EMPNUM = 15‘ ; DELETE EMP1 AT SITE1 WHERE EMPNUM =100; DELETE EMP1 AT SITE5 WHERE EMPNUM =100; DELETE EMP2 AT SITE2 WHERE EMPNUM =100; 11 DELETE EMP2 AT SITE6 WHERE EMPNUM =100; INSERT INTO EMP3(EMPNUM,NAME,DEPTNUM); AT SITE3:(100,$NAME,15 ); INSERT INTO EMP3(EMPNUM,NAME,MGRNUM); AT SITE7:(100,$NAME ,15); INSERT INTO EMP4(EMPNUM,SAL,TAX,MGRNUM); AT SITE4:(100,$SAL,$TAX,$MGRNUM); INSERT INTO EMP4(EMPNUM,SAL,TAX,MGRNUM); AT SITE8:(100,$SAL,$TAX,$MGRNUM); (C) 本地映射透明性(级别3) 图4.2 不同级别分布透明性下的更新应用。 12
正在阅读:
第四章 分布透明性03-08
《水土保持工程概算定额》(水利部水总{2003}67号)206-09
新纪元人事工资软件用户手册04-02
教师专业进修培训个人计划01-13
市农业农村粮食局年度工作总结及2022年乡村建设工作规划08-02
德国自行车市场简况08-13
2014年秋高一物理随堂练习2.5《力的合成》(人教版必修1)09-09
FLUENT_UDF实例应用08-27
DS-650Pro 操作手册、05-10
- 清真菜谱
- 我国国民经济和社会发展十二五规划纲要(全文)
- 高三物理机械振动和机械波复习2
- 浙江省公路山岭隧道机械化装备应用指导手册 doc - 图文
- 2018届高三数学文科二轮复习:专题检测(九) 导数的简单应用
- 2015年上海市公务员录用考试《行政职业能力测验》试卷(B类)
- 七年级道德与法制下册
- 大班户外游戏教案
- 病虫害预警 - 图文
- 某养鱼场为了提高经营管理水平
- 汉中市勉县尧柏余热汽机规程 10
- 烹饪试卷
- 事业单位考试公共基础知识专项分类题库训练
- 语文:第2课 走一步,再走一步 课堂导学案(人教版 七上)
- 天汉使用手册
- 人教版小学三年级数学下册教学计划
- 房地产销售管理完全操作手册122页
- 2009年评审通过具有中学高级教师专业技术资格人员名单...
- 《15秋公共关系学》作业1
- 2017最新版监理公司三标一体管理手册
- 透明性
- 第四章
- 分布
- 人音版小学音乐五年级下册教案全册
- 河南省洛阳市2015届高三文综(历史部分)4月第一周周考试题
- 巢湖市2010年考试录用公务员公告
- 15-16中财1习题讲解(商院)
- 10.Mrs. Squirrel and I Negotiated Terms
- 《中级会计实务》自测练习及答案解析1
- 果园农田管理制度.
- 电价及电费的关系
- 中国影坛反派演员的佼佼者安震江
- 试论当代秘书人才的创新能力
- 大学化工原理(少学时)简答题考试复习试题库
- 重庆市2018届高三学业质量调研抽测(第三次)理综物理试题
- 银行业金融机构消费者权益保护工作考核评价办法
- 河北省石家庄二十二中2017届九年级(上)第三次月考物理试卷(解析
- 羟基磷灰石、壳聚糖复合材料用于去除水中刚果红 - 图文
- 五年级 奥数 综合复习一
- 金阳街道中心小学关于
- 水泥化验室控制组培训课件
- 中国移动省级NG2-BASS(v5.0)技术规范数据质量管理子系统分册
- 2018年行政人事部经理工作总结