我们选用C-POREL作为样例,原因是其设计有特色。与POREL一样,C-POREL将数据目录设计成长目录、短目录两大类。C-POREL的目录体系是链接的表格结构。图4.1POREL的主要数据目录表关联图图4.1中主要表格的含义如下。在C-POREL中会区别对待它们,采用不同的并发控制策略,从而有利于提高并发度和系统的整体性能。......
2023-10-28
VML是一个灵活开放的数据模型,在元层提供了一些建模原语,如aggregation、specialization、generalization、grouping和part-of等,可以从默认的元类来定义。
VODAK是在关系型数据库系统POSTGRES[11]上构建的,因此下面会多次涉及POSTGRES。
下面以定义一个会议管理系统为例。在图15.4中,元类PG_METACLASS是将POSTGRES关系和属性映射到VML类、性质与方法。类似地,元类SYBASE_METACLASS是将Sybase关系型数据库的关系映射成类[12]。由于PG_METACLASS是一种从关系向对象的直接映射,所以对象的公共行为和结构代表关系里的元组。元类PG_METACLASS提供的公共行为和结构的例子可以简述为:直接映射中定义的存取方法get发送给代表关系R的类的实例。这些实例必须知道它们其原来的关系R,即关系标识必须存放在这些实例里。
图15.4 POSTGRES数据库到元类模型的正向映射
类里的每个实例对应于关系里的某个元组。因此,每个实例要有某种性质,必须对应于某种存取方法,指定、检索关系元组里的键值。除此之外,还必须定义能检索特定元组的值的方法。
数据库设计者可以使用元类的功能定义和关系对应的类,如Conference、Tutorial和Session等。
为了保证这些类和相应的关系真实对应,将PG_METACLASS定义为它们的元类,并进行一定的初始化。
如果需要另一类映射,则必须引入另一个元类,如元类PG_RECOMPOSE_METACLASS。
图15.4的下部是一个POSTGRES数据库,描述的是会议管理系统的信息。关系Conference的实例记录的是一个会议信息,会议标识记为OODB06,假设是2006年的面向对象数据库系统会议。这里讨论的是如何将POSTGRES的关系模式映射成面向对象模式。图的上部是由VODAK定义的面向对象模型。
由图15.4可知,POSTGRES数据库中的关系Conference映射到类CONFERENCE,同样,可以生成类SESSION和TUTORIAL。这三个类的共性可以抽象为一个元类PG_METACLASS。类似地,Sybase系统存放的数据映射到元类SYBASE_METACLASS。除数据外,还有应用,在关系型系统中,这是和数据分开的,面向对象系统中,一切归结到对象,所以也要映射到类。图的左部就反映了这一内容。元类Kernl Application Class就用于描述它。例如,某个个人Smith映射到类PERSON,PERSON和其他相关类就映射成Kernl Application Class。METACLASS就作为这些元类的元类。
1.VML中映射的实现
下面对元类与类进行定义,先定义元类PG_METACLASS。
1)元类PG_METACLASS
PG_METACLASS用于实现关系和类间的直接映射,这里表示POSTGRES里的关系如何映射为类。图15.5描述了元类PG_METACLASS与其他应用类之间的关系。
2)元类PG_METACLASS的定义
POSTGRES数据库的存取可以通过其自身类型(own type)、实例类型(instance type)和实例-实例类型(instance-instance type)中的方法来实现。在VODAK系统中,PG_METACLASS则是借助POSTGRES C库函数实现的。
元类PG_METACLASS及其相关的对象类型可以定义如下:
CLASS PG_METACLASS METACLASS Metac lass
OWNTYPE PG_Metac l ass_OwnType
INSTTYPE PG_Metac lass_Inst Type
INSTINSTTYPE PG_Metac l ass_Ins t Ins t Type
END;
如图15.5所示,假设POSTGRES数据库中有大会(conference)、会议(session)和时间(tutorial)三个基本关系,它们在面向对象模式中就映射到类CONFERENCE。OODB06就成了这个类的一个实例。
3)对象类型PG_Metaclass_Own Type的定义
下面是元类PG_METACLASS的对象类型的定义,其中方法linkdb和unlinkdb负责启动和终止与POSTGRES数据库的通信。
图15.5 从POSTGRES数据库到元类模型的映射(详)
(www.chuimin.cn)
显然这个类型的定义是普适的,描述了如何与基础数据库(POSTGRES数据库)的连接。
4)对象类型PG_Metaclass_Inst Type的定义
与类对应的关系标识存放在该类的性质relation里。方法get Rel正好用于返回这个性质的值。方法init为性质relation的参数赋值,从对应关系里找出属性oid的所有实际值,为每个值创建类的一个实例,同时把这个值存放在新实例的性质PG_Oid里,以便能进一步存取非键属性。
5)对象类型PG_Metaclass_InstInst Type的定义
元类PG_METACLASS的实例-实例类型定义了性质PG_Oid,方法setPG_Oid、get PG_Oid和get Value对存取定义为PG_METACLASS的应用类实例是有用的。与该实例对应的元组的属性oid的值存放在性质PG_Oid里。方法setPG_Oid和get PG_Oid存储和返回性质PG_Oid的值。方法get Value(att:STRING):STRING用于检索和消息接收对象的类对应关系的属性的每个值。get Value使用存放在信息受体对应元组的标识,以确定数据库中的元组是否正确。
2.直接映射的例子
假设有一个POSTGRES关系(这里的例子选择为conference,其键值为conf_id):
con ference(con f_id,t i t l e,topi cs,l ocat ion,durat ion,l anguage)
因为是一个关于会议信息的关系,因此其属性包括会议标识(conf_id)、名称(title)、主题(topics)、会议地点(location)、会议时间(duration)、会议语言(language)。
现在定义一个类CONFERENCE,PG_METACLASS作为其元类。类CONFERENCE的实例的结构和行为用一个对象类型conference_Inst Type来描述。PG_METACLASS提供的方法init用于表示从关系conference到类CONFERENCE的映射。
如果需要应用域,则可以对关系conference中指定的每个属性定义一个性质。这里选用性质title、location和language,它们对应关系里相应的属性。采用同样的方式通过conference_Inst Type的超类可以定义性质conf_id、topics和duration。这些属性可能定义在数据库其他关系里,通过这种继承,可以避免重复定义。
检索性质值(就是检索POSTGRES数据库的属性值)的方法的全部实现按相同模式实现:首先测试要检索的性质是否已经从POSTGRES数据库里检索出来,若没有,则使用超类PG_METACLASS提供的方法get Value从下位POSTGRES数据库里将值检索出来。这个方法实际上生成一条POSTGRES检索语句,从数据库中获得数据再返回值。[13]
元类PG_RECOMPOSE_METACLASS的实例-实例类型(instance-instance type)是PG_Metaclass_InstInst Type的一个子型,所以方法get Value(att:STRING):STRING及其机制是继承而来的。类型PG_RECOMPOSE_InstInst Type提供三个方法,它们是两个通用方法get Value和get OID的特指。方法get Value(rel:STRING,joinatt:{STRING},att:{STRING}):{||STRING©STRING||}通过接收对象里的关系指针rel将相关属性集成在属性joinatt里并重新合成复杂值。这里定义一个称为dictionary的概念,这些值以dictionary集合的方式返回。dictionary代表任意的元组结构。
若我们想把这些关系转换成面向对象形式,则必须重组成类。
属性conf_id是关系conference的主键,也是其他关系的外键。因此conference是基关系,而conf_info_address、session和lectures非基关系。从映射得来的类CONF_EVENT的实例与conference的元组对应。conference和conf_info_address的属性建模为单值属性,因为它们在关系里是键。相比之下,conf_id只是关系session和lectures里键属性集里的一部分,所以不具有唯一性。更进一步,关系session的键属性sess_id是关系lectures的外键,所以session里的元组可以与lectures里的几个元组对应,session和lectures的元组会组合成一种嵌套元组的复杂集合性质。
关系hotel是一个基关系,其中不包含外键,它可以简单地映射成一个类HOTEL。关系reservation代表conference和hotel间的一种联系。
类CONF_EVENT和HOTEL及它们的实例类型CONF_EVENT_Inst Type和HOTEL_Inst Type的定义如下[14]:
CLASS CONF_EVENT METACLASS PG_RECOMPOSE_METACLASS INSTTYPE CONF_EVENT_Ins t Type
INIT CONF_EVENT→ini t('conf erence')
有关分布式数据库技术的文章
我们选用C-POREL作为样例,原因是其设计有特色。与POREL一样,C-POREL将数据目录设计成长目录、短目录两大类。C-POREL的目录体系是链接的表格结构。图4.1POREL的主要数据目录表关联图图4.1中主要表格的含义如下。在C-POREL中会区别对待它们,采用不同的并发控制策略,从而有利于提高并发度和系统的整体性能。......
2023-10-28
为了适应我国当前需求,同时兼顾国外测评的多样性,以下择取国外部分高利害考试和日常总结性测评案例加以剖析。11年级这一套试卷的三个模块,共呈现了6篇阅读文本,题目总计22个,其中选择题19个、基于阅读的写作题3个。其中的“语言与文学研究”领域开设三门课程,每门课程又分基础课程和高级课程供学生选修,其中的《语言A:文学》课程,相当于是将我们的整本书阅读中的文学作品阅读课程化了。......
2023-08-17
焊工技师知识试卷一、判断题1.√ 2.√ 3.× 4.× 5.√ 6.× 7.× 8.× 9.×10.× 11.× 12.√ 13.√ 14.× 15.× 16.× 17.× 18.×19.× 20.√二、选择题(一)单项选择题21.D 22.A 23.C 24.D 25.A 26.B 27.B 28.A 29.D30.B 31.D 32.C 33.B 34.B 35.B 36.D 37.D 38......
2023-06-15
所谓“图形艺术化”,是指所画出的图形不一定与原图一模一样,可以根据美观性要求,采用诸如“简化”“分割”“放大”“缩小”“扭曲”“变形”等手段对图形进行处理,如图1-2所示。图1-12新组件6.新组件重新编码将获得的新组件按照“环形阵列”法则进行变换,在不断改变相对位置的过程中找到生动、有趣、有“缠绕”感的图案,如图1-13所示。至此,一件文创作品的设计就完成了,如图1-16所示。......
2023-08-24
1范围本标准规定了水电站安全会议和安全活动等方面的管理要求。安全生产部是水电站安全会议和安全活动工作的管理部门,负责制订和修订水电站安全会议和安全活动规划、管理办法和考核标准,总结推广先进经验。④布置下个轮值安全生产重点工作及安全注意事项。安全生产部负责人每月至少应参加1次水电站的安全活动,了解水电站的安全状况,了解员工对安全管理工作、现场工作(劳动)环境的意见和建议。......
2023-06-27
图样上的图形仅表示物体的形状,大小通过尺寸标注来表达。图样中标注的尺寸数值是物体真实大小,与绘图比例及准确度无关。尺寸界线的起始端应离开被注轮廓不小于2 mm,另一端超出尺寸线约2~3 mm。图2.23尺寸标注样例4.尺寸数字线性尺寸数字注写在尺寸线上方,位置不够可引出标注,尺寸数字前的符号表示不同类型的尺寸。图2.24尺寸数字样例......
2023-08-30
但即使是对这堂获奖课,我也进行了认真的反思,并认真写了教后记——应该说,这堂课有不少令我感到满意的地方,比如,面对陌生的学生如何寻找最佳教学切入点?我上面这篇“教后记”就写得有血有肉,比较具体。教后记不是为发表而写的文字,是为自己成长而对自己的激励与鼓劲。希望你能坚持写教后记。......
2023-10-21
油样分析就是在设备不停机、不解体的情况下抽取油样,并测定油样中磨损颗粒的特性,对机器零部件磨损情况进行分析判断,从而预报设备可能发生的故障的方法。......
2023-06-22
相关推荐