亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

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

        0 引 言

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

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

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

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

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

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

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

        1.1 主鍵的生成

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

        圖2 Naming實體圖

        1.2 屬性類型映射策略

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

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

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

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

        圖3 CurrentFlow類型定義

        表1 CurrentFlow類型映射表

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

        表2 DayTypeName映射表

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

        1.3 屬性映射策略

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

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

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

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

        繼承是指一個普遍的類與一個具體的類之間的一種關(guān)系。繼承關(guān)系的映射從根本上可以理解為“如何在關(guān)系數(shù)據(jù)庫中組織繼承的屬性”[16-17]。映射策略是為每一個具體的非虛子類建立一張表。父類只作為公共屬性的載體不參與映射,每個具體的非虛子類都繼承了父類所有屬性,包括父類的ID。圖4顯示了Equipment類和PowerTransformer類之間繼承的關(guān)系,Equipment是抽象父類,PowerTransformer是具體子類。表3是對圖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種:零或一對一、一對多和多對多。SQL Server數(shù)據(jù)庫中對關(guān)聯(lián)關(guān)系的映射是通過設(shè)置主外鍵來完成的。一張表可以有一個或多個外鍵,但每個外鍵所對應(yīng)的主鍵只能有一個。關(guān)聯(lián)關(guān)系中一對零或一與一對多的映射是將多重性為一的表的主鍵字段作為其他表的外鍵字段來實現(xiàn),若2個表是一對一關(guān)聯(lián),則取其中任一表的主鍵作為另一個表的外鍵來存儲。以電壓控制區(qū)類(VoltageControlZone)和母線段類(Busbar-Section)為例,圖5展示了二者之間的關(guān)聯(lián)關(guān)系,表4和表5給出了2個類圖關(guān)聯(lián)關(guān)系的映射。

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

        表4 VoltageControlZone類映射表

        表5 Busbar Section類映射表

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

        圖6 多對多關(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,同時在部分類表中增加整體類的OID,這樣就在關(guān)系表中實現(xiàn)了整體與部分之間的關(guān)系。以拓?fù)鋶u類(TopologicalIsland)和拓?fù)涔?jié)點類(Topological-Node)為例,圖7展示了拓?fù)鋶u類與拓?fù)涔?jié)點類之間的聚集關(guān)系,表9和表10給出了2個類之間的聚集關(guān)系的映射表。

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

        表9 TopologicalIsland類映射表

        表10 TopologicalNode類映射表

        2 算例

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

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

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

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

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

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

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

        3 結(jié)束語

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

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

        [1] 朱玲,薛賀.對象關(guān)系數(shù)據(jù)庫系統(tǒng)映射模型及應(yīng)用[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ù)據(jù)庫的設(shè)計[J].計算機(jī)工程與設(shè)計,2007,28(14):3508-3510.

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

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

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

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

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

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

        [10]王成良,楊祥陵.對象模型向關(guān)系數(shù)據(jù)庫模式映射的策略及應(yīng)用[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è)計與實現(xiàn)[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]蘭偉,萬權(quán)性.對象關(guān)系映射中類的繼承映射分析與實現(xiàn)[J].軟件導(dǎo)刊,2011,10(9):75-76.

        猜你喜歡
        基本型主鍵枚舉
        基于Go 實現(xiàn)的分布式主鍵系統(tǒng)研究
        基于理解性教學(xué)的信息技術(shù)教學(xué)案例研究
        速讀·上旬(2022年2期)2022-04-10 16:42:14
        一種高效的概率圖上Top-K極大團(tuán)枚舉算法
        2019年9月基本型乘用車(轎車)生產(chǎn)匯總表
        基于外鍵的E-R圖繪制方法研究
        2019年3月基本型乘用車(轎車)銷售匯總表
        汽車工程師(2019年4期)2019-05-09 06:18:28
        2019年1月基本型乘用車(轎車)銷售匯總表
        汽車工程師(2019年2期)2019-03-11 08:10:44
        基于太陽影子定位枚舉法模型的研究
        2014年11月基本型乘用車(轎車)銷售匯總表
        數(shù)據(jù)庫主鍵的設(shè)計方法探討
        18分钟处破好疼哭视频在线观看 | 男女无遮挡高清性视频| 又湿又紧又大又爽a视频国产| 麻豆一区二区三区蜜桃免费| 久草热8精品视频在线观看| 国产精品国三级国产av| 丰满人妻被公侵犯的视频| 美女扒开大腿让男人桶| 欧美又大粗又爽又黄大片视频| 欧美最猛黑人xxxx黑人猛交| 少妇被躁爽到高潮无码文| 加勒比无码专区中文字幕| 中文字幕人妻少妇美臀| 精品一级一片内射播放| 免费高清av一区二区三区 | 乱人伦中文无码视频| h在线国产| 一区二区三区国产亚洲网站| 免费人成在线观看播放视频| 妺妺窝人体色www婷婷| 四虎影库久免费视频| 欧美国产日产一区二区| 亚洲欧美v国产蜜芽tv| 日本av一级视频在线观看| 国产熟妇与子伦hd| 亚洲精品无码国模| 日韩久久av电影| 男女上床免费视频网站| 又色又爽又黄的视频软件app| 精品国模一区二区三区| 精品熟女少妇免费久久| 国产人妖伦理视频在线观看 | 国产成人一区二区三区| 中文乱码人妻系列一区二区| 久久高潮少妇视频免费| 中文av字幕一区二区三区| 超碰cao已满18进入离开官网 | 亚洲碰碰人人av熟女天堂| 亚洲午夜无码视频在线播放| 成av人片一区二区久久| 国自产精品手机在线观看视频|