第四章 分布透明性
更新时间:2024-07-11 20:48:01 阅读量: 综合文库 文档下载
- 第四章净身出户离婚的小说推荐度:
- 相关推荐
第四章 分布透明性的级别
所谓分布透明性级别就是应用程序与数据分布相关程度的一种度量,很类似于集中式数据库中的数据独立性,数据分布透明性分为四个级别。 首先通过例子考虑什么是分段及分段种类。
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
正在阅读:
第四章 分布透明性07-11
emmc_v451_153b_4gb 8gb_pb——MTFC4GMCDM-1M WT05-09
2022四川文科专科批征集志愿时间(四川专科录取分数线表2022)03-30
2022高中学校开学前致家长的一封信03-31
中国进行企业结构调整过程中的人员与激励管理--中英对照07-18
旅途11-03
从冬天到春天作文500字06-28
我是风作文200字07-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 透明性
- 第四章
- 分布
- 人音版小学音乐五年级下册教案全册
- 河南省洛阳市2015届高三文综(历史部分)4月第一周周考试题
- 巢湖市2010年考试录用公务员公告
- 15-16中财1习题讲解(商院)
- 10.Mrs. Squirrel and I Negotiated Terms
- 《中级会计实务》自测练习及答案解析1
- 果园农田管理制度.
- 电价及电费的关系
- 中国影坛反派演员的佼佼者安震江
- 试论当代秘书人才的创新能力
- 大学化工原理(少学时)简答题考试复习试题库
- 重庆市2018届高三学业质量调研抽测(第三次)理综物理试题
- 银行业金融机构消费者权益保护工作考核评价办法
- 河北省石家庄二十二中2017届九年级(上)第三次月考物理试卷(解析
- 羟基磷灰石、壳聚糖复合材料用于去除水中刚果红 - 图文
- 五年级 奥数 综合复习一
- 金阳街道中心小学关于
- 水泥化验室控制组培训课件
- 中国移动省级NG2-BASS(v5.0)技术规范数据质量管理子系统分册
- 2018年行政人事部经理工作总结