国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

CIM模型在關(guān)系數(shù)據(jù)庫(kù)中存儲(chǔ)方案的設(shè)計(jì)

2013-12-12 03:50董張卓孔永超趙元鵬
計(jì)算機(jī)與現(xiàn)代化 2013年11期
關(guān)鍵詞:主鍵基本型枚舉

董張卓,孔永超,雒 寧,趙元鵬

(西安石油大學(xué)電子工程學(xué)院,陜西 西安 710065)

0 引 言

當(dāng)今,電力系統(tǒng)仿真軟件幾乎都采用面向?qū)ο蟮脑O(shè)計(jì)方法。面向?qū)ο蠹夹g(shù)能夠直觀、準(zhǔn)確地描述現(xiàn)實(shí)世界,它克服了面向過(guò)程編程技術(shù)中的許多不足,更符合軟件開(kāi)發(fā)的規(guī)律[1]。CIM(公共信息模型)采用了面向?qū)ο蟮姆椒▉?lái)描述電力系統(tǒng)資源,作為一個(gè)抽象模型它提供了一種用對(duì)象類和屬性及它們之間的關(guān)系來(lái)表示電力系統(tǒng)資源的標(biāo)準(zhǔn)方法[2-4]。采用CIM數(shù)據(jù)模型從數(shù)據(jù)層面上保證了電力分析軟件的開(kāi)放性與標(biāo)準(zhǔn)性。在電力系統(tǒng)軟件開(kāi)發(fā)過(guò)程中,經(jīng)常需要對(duì)對(duì)象模型做持久化操作[5]。目前,實(shí)現(xiàn)對(duì)象持久化的方法主要有2種:(1)用對(duì)象數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)對(duì)象模型。對(duì)象數(shù)據(jù)庫(kù)采用與面向?qū)ο蟮姆椒ㄍ瑯拥膶?duì)象模型來(lái)描述復(fù)雜對(duì)象[6],這樣做效率高并且方便。然而,由于其缺乏基本的理論依據(jù),對(duì)象數(shù)據(jù)庫(kù)的發(fā)展還不太成熟,目前仍沒(méi)有一個(gè)完善并且通用的對(duì)象數(shù)據(jù)庫(kù)能夠使用。相比之下,關(guān)系數(shù)據(jù)庫(kù)的發(fā)展已經(jīng)相當(dāng)成熟,它不僅具有嚴(yán)格的數(shù)學(xué)理論依據(jù),特別是集合論,而且具有很強(qiáng)的通用性,是目前市場(chǎng)上的主流數(shù)據(jù)庫(kù)[7-8]。關(guān)系數(shù)據(jù)庫(kù)雖然支持?jǐn)?shù)據(jù)的共享與交換,但它僅僅針對(duì)的是數(shù)據(jù)元素的存儲(chǔ),而不能直接存儲(chǔ)對(duì)象元素[9]。(2)用關(guān)系數(shù)據(jù)庫(kù)做面向?qū)ο蟮臄U(kuò)展,使之帶有面向?qū)ο蟮奶卣鳎?,10],將對(duì)象模型在關(guān)系數(shù)據(jù)庫(kù)表現(xiàn)出來(lái)。這種方法目前普遍采用,且應(yīng)用廣泛。本文將此方法用于電網(wǎng)分析平臺(tái)的開(kāi)發(fā),實(shí)現(xiàn)CIM模型在關(guān)系數(shù)據(jù)庫(kù)中的存儲(chǔ)。平臺(tái)測(cè)試結(jié)果表明存儲(chǔ)方案設(shè)計(jì)的合理、正確,能夠提高電力系統(tǒng)資源對(duì)象的存儲(chǔ)效率。

1 CIM模型向關(guān)系模型的映射

在數(shù)據(jù)訪問(wèn)模型中CIM作為概念模型,為應(yīng)用邏輯提供服務(wù),而關(guān)系模型是數(shù)據(jù)庫(kù)中要使用的存儲(chǔ)模型,持久管理器封裝了這2個(gè)模型,它的主要功能是完成對(duì)象模型到關(guān)系模型的轉(zhuǎn)化[11-13]。要在關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)CIM對(duì)象,則必須解決CIM對(duì)象到關(guān)系數(shù)據(jù)庫(kù)的映射。CIM主要涉及類對(duì)象和屬性以及他們之間的關(guān)系,要將CIM對(duì)象存儲(chǔ)到關(guān)系數(shù)據(jù)庫(kù)就必須將各個(gè)類中的信息以及類之間的關(guān)系完整地映射到數(shù)據(jù)庫(kù)中去。然而,關(guān)系數(shù)據(jù)庫(kù)主要通過(guò)表、記錄、字段以及主外鍵來(lái)描述實(shí)體信息,這就意味著二者之間具有某些共性。具體來(lái)說(shuō),一個(gè)關(guān)系數(shù)據(jù)庫(kù)中的一張表類似于CIM中的一個(gè)類,表中的每列可以看作一個(gè)類的屬性,表中的每行記錄可以視為一個(gè)類的具體對(duì)象,表與表間的聯(lián)系可以看成類與類之間的聯(lián)系。CIM模型與關(guān)系模型之間的對(duì)應(yīng)關(guān)系可用圖1表示。

圖1 CIM模型與關(guān)系模型對(duì)應(yīng)關(guān)系

圖1中類與表的對(duì)應(yīng)關(guān)系,可用以下程序段來(lái)說(shuō)明:

在關(guān)系表中如果將Naming類看做一個(gè)實(shí)體的話,那么可以將Naming類表示成:

其中“()”里每個(gè)元素代表關(guān)系表中的一列。

1.1 主鍵的生成

在關(guān)系數(shù)據(jù)庫(kù)中主鍵(Primary Key)是唯一能夠標(biāo)識(shí)表中記錄的元素。一個(gè)表只能有一個(gè)主鍵,并且主鍵不能為null,通常將主鍵命名為一個(gè)列或幾個(gè)列名的組合。一個(gè)表的主鍵常常與多個(gè)表的外鍵相關(guān)聯(lián),表間的關(guān)系通過(guò)主外鍵建立起來(lái)。在面向?qū)ο罄碚撝惺褂梦ㄒ粯?biāo)識(shí)符來(lái)標(biāo)識(shí)對(duì)象,稱為對(duì)象標(biāo)識(shí)符(Object ID,OID)[14-15]。OID 與關(guān)系數(shù)據(jù)庫(kù)中表的主鍵相對(duì)應(yīng)。在CIM模型中每個(gè)電力系統(tǒng)資源對(duì)象都有自己唯一的ResourceID,用它作為區(qū)分對(duì)象的唯一標(biāo)識(shí)。映射過(guò)程中,主鍵生成的重點(diǎn)是根據(jù)每個(gè)類的ResourceID在數(shù)據(jù)表中建立ResourceID字段并將其設(shè)置為主鍵,每個(gè)對(duì)象的ResourceID屬性值就是其所對(duì)應(yīng)記錄的ResourceID列的值。Naming實(shí)體圖如圖2所示,它的ResourceID就是NamingID屬性。

圖2 Naming實(shí)體圖

1.2 屬性類型映射策略

CIM域包定義了其他包的所有類的屬性類型,域包中的數(shù)據(jù)類型可分為基本型、枚舉型和其他數(shù)據(jù)類型?;拘团缮谡?、浮點(diǎn)型、字符串?dāng)?shù)據(jù)類型。枚舉型是一個(gè)屬性類型的固有屬性所有可能值的集合。其他數(shù)據(jù)類型是由一些基本數(shù)據(jù)類型復(fù)合而成,可認(rèn)為是部分基本型的集合體。

CIM中基本型的固有屬性要么只包含value屬性要么包含value和units兩個(gè)屬性,可將基本型描述為:

其中 SimpleType={Integer,F(xiàn)loat,String}。

基本型的映射是將每個(gè)基本型都映射為包含value和unit兩個(gè)屬性的表,如果某基本型僅包含value屬性,那么將其映射的表unit列設(shè)為null。如圖3和表1所示,基本型CurrentFlow的映射。

圖3 CurrentFlow類型定義

表1 CurrentFlow類型映射表

域包中的枚舉型只指明了它們的固有屬性,而沒(méi)有指明固有屬性所屬的類型。為了將枚舉型映射到關(guān)系數(shù)據(jù)庫(kù),需要給每一個(gè)枚舉型建立一張表,表中存放Int型固有屬性ID編號(hào)和與之對(duì)應(yīng)的String型屬性名。當(dāng)某個(gè)表中的某個(gè)字段類型是枚舉型時(shí),可將其定義為Int型,然后存放此枚舉型的屬性ID號(hào),最后將用到該字段的表與枚舉型表之間建立多對(duì)一的關(guān)聯(lián)。以日類型名稱類(DayTypeName)為例,其映射如表2所示,它有3個(gè)枚舉值,分別是 weekday、weekend、holiday。

表2 DayTypeName映射表

CIM中的其他數(shù)據(jù)類型,是基本類型和枚舉類型的復(fù)合體。對(duì)其他數(shù)據(jù)類型的映射可以看作類之間聚集關(guān)系的映射,這在1.4.3節(jié)詳細(xì)說(shuō)明。

1.3 屬性映射策略

一個(gè)屬性可以映射到關(guān)系數(shù)據(jù)庫(kù)里的零個(gè)或多個(gè)字段,很多情況下為一個(gè)字段,除非一個(gè)類作為另一個(gè)類的屬性。

1.4 CIM類的關(guān)系映射

CIM類圖之間的關(guān)系主要包括繼承、關(guān)聯(lián)和聚合,而關(guān)系數(shù)據(jù)庫(kù)并不支持對(duì)象之間的關(guān)系存儲(chǔ),因此,如何在關(guān)系數(shù)據(jù)庫(kù)中表達(dá)CIM類之間的關(guān)聯(lián)關(guān)系是映射研究的一個(gè)重點(diǎn)。

1.4.1 繼承關(guān)系的映射

繼承是指一個(gè)普遍的類與一個(gè)具體的類之間的一種關(guān)系。繼承關(guān)系的映射從根本上可以理解為“如何在關(guān)系數(shù)據(jù)庫(kù)中組織繼承的屬性”[16-17]。映射策略是為每一個(gè)具體的非虛子類建立一張表。父類只作為公共屬性的載體不參與映射,每個(gè)具體的非虛子類都繼承了父類所有屬性,包括父類的ID。圖4顯示了Equipment類和PowerTransformer類之間繼承的關(guān)系,Equipment是抽象父類,PowerTransformer是具體子類。表3是對(duì)圖4繼承關(guān)系的映射。

圖4 繼承類圖

表3 Power Transformer類映射表

1.4.2 關(guān)聯(lián)關(guān)系的映射

CIM中關(guān)聯(lián)關(guān)系是類與類之間的一種靜態(tài)關(guān)系。根據(jù)關(guān)聯(lián)關(guān)系的多重性,可以將關(guān)聯(lián)關(guān)系分為3種:零或一對(duì)一、一對(duì)多和多對(duì)多。SQL Server數(shù)據(jù)庫(kù)中對(duì)關(guān)聯(lián)關(guān)系的映射是通過(guò)設(shè)置主外鍵來(lái)完成的。一張表可以有一個(gè)或多個(gè)外鍵,但每個(gè)外鍵所對(duì)應(yīng)的主鍵只能有一個(gè)。關(guān)聯(lián)關(guān)系中一對(duì)零或一與一對(duì)多的映射是將多重性為一的表的主鍵字段作為其他表的外鍵字段來(lái)實(shí)現(xiàn),若2個(gè)表是一對(duì)一關(guān)聯(lián),則取其中任一表的主鍵作為另一個(gè)表的外鍵來(lái)存儲(chǔ)。以電壓控制區(qū)類(VoltageControlZone)和母線段類(Busbar-Section)為例,圖5展示了二者之間的關(guān)聯(lián)關(guān)系,表4和表5給出了2個(gè)類圖關(guān)聯(lián)關(guān)系的映射。

圖5 零或一對(duì)一的關(guān)聯(lián)類圖

表4 VoltageControlZone類映射表

表5 Busbar Section類映射表

對(duì)于類之間多對(duì)多的關(guān)聯(lián),則需另外建立一張關(guān)聯(lián)表,該表有自己的OID,表中其他字段是具有關(guān)聯(lián)關(guān)系的兩個(gè)或多個(gè)表的OID。以保護(hù)設(shè)備類(ProtectionEquipment)和導(dǎo)電設(shè)備類(ConductingEquipment)為例來(lái)說(shuō)明,圖6展示了這2個(gè)類之間的多對(duì)多的關(guān)系,表6~表8給出了2個(gè)類之間的關(guān)聯(lián)過(guò)程。

圖6 多對(duì)多關(guān)聯(lián)類圖

表6 ConductingEquipment類映射表

表7 ProtectionEquipment類映射表

表8 ConductProtectAssociation關(guān)聯(lián)表

1.4.3 聚集關(guān)系的映射

聚集是關(guān)聯(lián)關(guān)系的一種特殊情況,它表示了類之間整體與部分的關(guān)系,與繼承不同的是,部分類不從整體類那里繼承屬性。聚集關(guān)系的映射處理是在整體類表中增加相應(yīng)部分類的字段但不包含部分類的OID,同時(shí)在部分類表中增加整體類的OID,這樣就在關(guān)系表中實(shí)現(xiàn)了整體與部分之間的關(guān)系。以拓?fù)鋶u類(TopologicalIsland)和拓?fù)涔?jié)點(diǎn)類(Topological-Node)為例,圖7展示了拓?fù)鋶u類與拓?fù)涔?jié)點(diǎn)類之間的聚集關(guān)系,表9和表10給出了2個(gè)類之間的聚集關(guān)系的映射表。

圖7 聚集關(guān)系類圖

表9 TopologicalIsland類映射表

表10 TopologicalNode類映射表

2 算例

為了解釋本文提出的CIM模型到關(guān)系數(shù)據(jù)庫(kù)的映射方法,本算例采用CIM中的拓?fù)浒鼇?lái)進(jìn)行分析說(shuō)明。

圖8 拓?fù)浒骺驁D

圖8所示的框圖中類之間關(guān)系主要有繼承、關(guān)聯(lián)和聚集。例如EquipmentContainer類從PowerSystem-Resource類繼承;EquipmentContainer類與ConnectivityNode類之間的1對(duì)多關(guān)聯(lián);TopologicalNode類聚集成TopologicalIsland類。

對(duì)于以上3種具體關(guān)系,采用本文映射方法,用DDL語(yǔ)言在SQL Server 2005數(shù)據(jù)庫(kù)中實(shí)現(xiàn)其存儲(chǔ)。過(guò)程如下:

EquipmentContainer類從 PowerSystemResource類的繼承關(guān)系實(shí)現(xiàn):

EquipmentContainer類與 ConnectivityNode類之間1對(duì)多的關(guān)聯(lián)關(guān)系實(shí)現(xiàn):

TopologicalNode類與TopologicalIsland類的聚集關(guān)系實(shí)現(xiàn):

3 結(jié)束語(yǔ)

在電力軟件的開(kāi)發(fā)過(guò)程中,需要頻繁地在關(guān)系數(shù)據(jù)庫(kù)中操作對(duì)象數(shù)據(jù)。為了提高數(shù)據(jù)的存儲(chǔ)效率,本文先對(duì)CIM模型和關(guān)系模型做了分析對(duì)比,然后結(jié)合SQL Server 2005數(shù)據(jù)庫(kù)的優(yōu)勢(shì),提出了一種CIM模型到關(guān)系數(shù)據(jù)庫(kù)的存儲(chǔ)方案,并將此方法用在了電網(wǎng)分析平臺(tái)中歷史庫(kù)與實(shí)時(shí)庫(kù)的同步上,可實(shí)現(xiàn)歷史庫(kù)與實(shí)時(shí)庫(kù)的相互導(dǎo)入。

本文所提出的方法還有待擴(kuò)展,以使其適用于任何對(duì)象模型向關(guān)系模型的轉(zhuǎn)化。

[1] 朱玲,薛賀.對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)映射模型及應(yīng)用[J].計(jì)算機(jī)工程與科學(xué),2007,29(12):120-122.

[2] IEC 61970-301,EMSAPI-Part 301:Common Information Model(CIM)Base[S].

[3] 薛艷芳,吳?。贑IM的內(nèi)存實(shí)時(shí)數(shù)據(jù)庫(kù)的設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(14):3508-3510.

[4] 高鳴明.一種對(duì)象模型與關(guān)系模型的映射方法[J].科技促進(jìn)發(fā)展,2010(2):153-154.

[5] 黃曉明.基于關(guān)系數(shù)據(jù)庫(kù)的持久化技術(shù)研究[J].科技創(chuàng)新導(dǎo)報(bào),2008(27):40.

[6] 盧彩霞.基于IEC61970系列標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)接口的研究[D].北京:中國(guó)電力科學(xué)研究院,2003.

[7] 尹善華.對(duì)象模式與關(guān)系數(shù)據(jù)模式的映射研究[D].長(zhǎng)沙:中南大學(xué),2007.

[8] 呂威.對(duì)象模型、關(guān)系模型與對(duì)象關(guān)系映射技術(shù)[J].信息通信,2012(6):87.

[9] 麻淑芳,閆占強(qiáng).對(duì)象關(guān)系模在綜合測(cè)評(píng)系統(tǒng)中的映射與研究[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2010(15):49.

[10]王成良,楊祥陵.對(duì)象模型向關(guān)系數(shù)據(jù)庫(kù)模式映射的策略及應(yīng)用[J].計(jì)算機(jī)工程,2004,30(1):155-157.

[11]馬鵬烜.基于Entity Framework數(shù)據(jù)持久化技術(shù)淺析[J].電腦與信息技術(shù),2011,19(4):63-64.

[12] Roger Jennings.Professional ADO.NET 3.5 with LINQ and Entity Framework[M].Wiley Publishing,2009.

[13] Scott WAmbler.The Design of a Robust Persistence Framework for Relational Databases[EB/OL].http://www.a(chǎn)mbysoft.com/downloads/persistenceLayer.pdf,2005-06-21.

[14] Scott WAmbler.Mapping Objects to Relational Databases:O/R Mapping in Detail[EB/OL].http://www.a(chǎn)giledata.org/essays/mappingObjects.html,2013-06-07.

[15]劉金,徐蘇,馮豫華.基于Hibernate的J2EE數(shù)據(jù)持久層的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2007(3):64-66.

[16]Keller W.Mapping Objects to Tables:A Pattern Language[EB/OL].http://www.objectarchitects.de/ObjectArchitects/papers/Published/ZippedPapers/mappings04.pdf,2005-05-01.

[17]蘭偉,萬(wàn)權(quán)性.對(duì)象關(guān)系映射中類的繼承映射分析與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2011,10(9):75-76.

猜你喜歡
主鍵基本型枚舉
基于Go 實(shí)現(xiàn)的分布式主鍵系統(tǒng)研究
基于理解性教學(xué)的信息技術(shù)教學(xué)案例研究
一種高效的概率圖上Top-K極大團(tuán)枚舉算法
2019年9月基本型乘用車(轎車)生產(chǎn)匯總表
基于外鍵的E-R圖繪制方法研究
2019年3月基本型乘用車(轎車)銷售匯總表
2019年1月基本型乘用車(轎車)銷售匯總表
基于太陽(yáng)影子定位枚舉法模型的研究
2014年11月基本型乘用車(轎車)銷售匯總表
數(shù)據(jù)庫(kù)主鍵設(shè)置探討
工布江达县| 嵊州市| 上思县| 荥经县| 高淳县| 隆子县| 阿拉善右旗| 治多县| 鹤山市| 井陉县| 五大连池市| 资溪县| 廉江市| 汉寿县| 金堂县| 临沧市| 达孜县| 宝鸡市| 绵竹市| 建阳市| 徐州市| 蚌埠市| 辽阳市| 英吉沙县| 慈利县| 石楼县| 龙门县| 迁西县| 泸州市| 嘉义市| 宁安市| 廉江市| 日土县| 开鲁县| 邹平县| 大新县| 大厂| 正安县| 云梦县| 滦南县| 阿坝县|