• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      實體的動態(tài)屬性在數(shù)據(jù)庫設(shè)計中的解決方案

      2017-04-08 12:47:52王洋
      電腦知識與技術(shù) 2017年5期
      關(guān)鍵詞:數(shù)據(jù)庫設(shè)計關(guān)系數(shù)據(jù)庫

      王洋

      摘要:該文主要是針對數(shù)據(jù)庫設(shè)計中遇到實體的動態(tài)屬性的問題,分別結(jié)合關(guān)系型和非關(guān)系型兩大類數(shù)據(jù)庫技術(shù),介紹解決實體屬性可變性問題的解決方法:關(guān)系弄的解決方案是改行為列和使用兩個關(guān)系實體,非關(guān)系型的解決方案是采用HBase模型和MongoDB模型。這些方案為開發(fā)用戶的數(shù)據(jù)需求提供多種可選方案,極大地為用戶提供了方便。

      關(guān)鍵詞: 實體動態(tài)屬性;數(shù)據(jù)庫設(shè)計;關(guān)系數(shù)據(jù)庫;非關(guān)系數(shù)據(jù)庫

      中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2017)05-0009-02

      1 問題的提出

      隨著大數(shù)據(jù)時代的來臨,結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)已廣泛存在于各個軟件應(yīng)用中。任何移動應(yīng)用和系統(tǒng)都離不開數(shù)據(jù)庫進行存儲數(shù)據(jù),而數(shù)據(jù)的復(fù)雜性給它們的開發(fā)帶來了困難和挑戰(zhàn)。

      在現(xiàn)實生活中,社會現(xiàn)實中的萬事成物都是一個動態(tài)系統(tǒng)。隨著時間的推移和事情的發(fā)展,各種實體都會發(fā)展變化,具體體現(xiàn)在實體屬性的變化上,因此,我們稱之為實體的動態(tài)屬性[1]。例如,在一款銀行績效考核系統(tǒng)中的客戶經(jīng)理實體,隨著業(yè)務(wù)的發(fā)展,客戶經(jīng)理的其考核內(nèi)容也會發(fā)生變化,會有存款業(yè)績、貸款業(yè)務(wù)、基金業(yè)績、是否投訴等不斷增加,也會產(chǎn)生相對應(yīng)的業(yè)績數(shù)值,這些不斷業(yè)績都稱為該客戶經(jīng)理實體的動態(tài)性,詳情如表1客戶經(jīng)理實體2017年1月份業(yè)務(wù)需求表所示。

      在實際的項目開發(fā)中,固定數(shù)量的、明確的實體屬性,有利于軟件設(shè)計與開發(fā)人員進行項目開發(fā)。但是,動態(tài)屬性的實體,由于實體屬性的個數(shù)未知,屬性名稱未知,在系統(tǒng)運行過程中,根據(jù)業(yè)務(wù)的需要,隨時增添新的屬性,因此,給項目開發(fā)人員帶來了困難和挑戰(zhàn)。筆者在數(shù)據(jù)庫設(shè)計方面經(jīng)過長期的實踐,探索出了針對該問題的實體的動態(tài)屬性在數(shù)據(jù)庫設(shè)計中的解決方法,希望對有相同需要的數(shù)據(jù)庫設(shè)計人員或軟件開發(fā)人提供一點參考價值。

      2 定義相關(guān)數(shù)據(jù)結(jié)構(gòu)

      數(shù)據(jù)庫中的數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)對象的數(shù)據(jù)類型、內(nèi)容、性質(zhì)有關(guān)的,是對數(shù)據(jù)對象的一個靜態(tài)描述。為了便于說明,還以上述績效考核系統(tǒng)中的客戶經(jīng)理實體為例進行描述。該客戶經(jīng)理實體包括存款業(yè)績、貸款業(yè)務(wù)、基金業(yè)績、是否投訴等屬性,其在關(guān)系數(shù)據(jù)庫中可以定義成相關(guān)字段,具體詳細(xì)結(jié)構(gòu)描述如下:

      Create Table ClientManager(

      CName nvarchar(50), //姓名字段

      CDeposit decimal(18, 2), //存款業(yè)績字段

      CLoan decimal(18, 2), //貸款業(yè)績字段

      CFund decimal(18, 2), //基金業(yè)績字段

      CIsComplain nvarchar(2), //是否投訴字段

      ... //未知屬性字段

      很顯然,由于實體未知屬性的存在,上述結(jié)構(gòu)中的字段不明確,這樣的設(shè)計在目前的數(shù)據(jù)庫技術(shù)中不能得以實現(xiàn)。

      3 關(guān)系數(shù)據(jù)庫中實體的設(shè)計方法

      目前,市場要流行的關(guān)系型數(shù)據(jù)庫門類眾多,有甲骨文公司的Oracle、MySQL,有微軟公司的SQL Server,還有針對移動應(yīng)用的SQLite。下面針對上述實體的動態(tài)屬性問題,給出兩種關(guān)系型數(shù)據(jù)庫的解決方法。

      3.1 采用改行為列

      為了改變上述字段不明確的問題,從表1中可以看出是二維表中的字段不明確,采用以行來代替列的形式,就可以把未知的列的值作為一條記錄存儲于表中,這樣,就可以根據(jù)需求動態(tài)滿足字段的增加或減少,解決該問題。但是,這樣需要解決兩個問題,一個是屬性名的問題和另一個屬性值的問題。因此,行轉(zhuǎn)為列的形式中,二維表中需要屬性名和屬性值兩列。具體的在客戶經(jīng)理實體中,定義為經(jīng)理姓名、業(yè)績名稱和業(yè)績額,具體詳細(xì)結(jié)構(gòu)描述如下:

      Create Table ClientManager(

      CName nvarchar(50), //經(jīng)理姓名

      CAchieveName nvarchar(50), //業(yè)績名稱字段

      CAchieveValue nvarchar(50) //業(yè)績額字段

      在關(guān)系數(shù)據(jù)庫中,客戶經(jīng)理的實體二維表中的業(yè)績和業(yè)績額從以行的形式轉(zhuǎn)為以列的形式,但是,表中的記錄數(shù)據(jù)增加,其具體形式如表2客戶經(jīng)理實體行轉(zhuǎn)成列后的樣式表所示。

      3.2 采用兩個關(guān)系實體

      采用行轉(zhuǎn)為列的方式能夠適應(yīng)簡單屬性值全都一個數(shù)據(jù)類型的動態(tài)屬性的問題,比如,例子中的業(yè)績額全為數(shù)值類型,開發(fā)人員在進行開發(fā)實現(xiàn)功能時可以進行統(tǒng)一計算。但是,如果屬性不是一個統(tǒng)一的類型,比如例子中的業(yè)績額有數(shù)值類型的,還有字符類型的。這種情況下,程序開發(fā)人員,在進行數(shù)據(jù)取值時,要有目的的進行運算,而在例子中屬性值的數(shù)據(jù)類型不明確,給開發(fā)人員帶來了麻煩。解決這種復(fù)雜的情況,可以增加一個實體表對屬性值的取值詳細(xì)信息進行描述,而將在該實體中將上一個實體的屬性名作為外鍵,這樣,就能夠保證數(shù)據(jù)的一致性。在例子中,在客戶經(jīng)理實體的基礎(chǔ)上,增加一個業(yè)績設(shè)置實體,其字段有業(yè)績名稱、業(yè)績額的取值類型、業(yè)績額的取值長度、業(yè)績額的取值精度,具體表述所下:

      Create Table AchieveSet(

      AchieveName nvarchar(50), //業(yè)績名稱字段

      AValueDataType nvarchar(50), //業(yè)績額的取值類型

      AValueLength int, //業(yè)績額的取值長度

      AValuePrecision int //業(yè)績額的取值精度

      綜上所述,通過行轉(zhuǎn)列的方式,解決屬性值同一類型的動態(tài)屬性問題;通過兩個實體來解決屬性值非同一類型的復(fù)雜的動態(tài)屬性問題。程序開發(fā)人員可以根據(jù)不同的需求,采用不同的方法對系統(tǒng)進行開發(fā)。

      4 非關(guān)系數(shù)據(jù)庫實體的設(shè)計方法

      隨著技術(shù)的發(fā)展,對半結(jié)構(gòu)化、非結(jié)構(gòu)化的數(shù)據(jù)進行處理,出現(xiàn)了NoSQL數(shù)據(jù)管理技術(shù)的發(fā)展。下面結(jié)合非關(guān)系數(shù)據(jù)技術(shù),給出兩種解決動態(tài)屬性問題的解決方法。

      4.1 采用HBase模型

      HBase是一個分布式的,面向列族進行存儲的數(shù)據(jù)庫[4]。在HBase數(shù)據(jù)庫中,動態(tài)屬性可以采用它的數(shù)據(jù)模型來進行實現(xiàn)。定義一個屬性列族,而在該列族中根據(jù)需要可以任意動態(tài)放入子列即可。具體操作是定義一個客戶經(jīng)理實體,在該實體中創(chuàng)建一個業(yè)績列族,通過行鍵來存儲客戶經(jīng)理實體記錄中的經(jīng)理名稱,具體描述如下:

      create ‘ClientManager,'CAchieve'

      其中,ClientManager是客戶經(jīng)理實體,'CAchieve'是客戶經(jīng)理的業(yè)績。

      實體表創(chuàng)建完成后,可以進行操作,進行存儲記錄數(shù)據(jù),其操作如下:

      put 'ClientManager','張三','CAchieve:存款業(yè)績','10000'

      put 'ClientManager','張三','CAchieve:是否投訴','是'

      put 'ClientManager','李四','CAchieve:基金業(yè)績','10500'

      ...

      其中,張三、李四列使用的是HBase行鍵,'CAchieve'冒號后面是動態(tài)屬性。

      4.2 采用MongoDB模型

      MongoDB數(shù)據(jù)庫是采用文檔、集合和數(shù)據(jù)庫三部分來對數(shù)據(jù)進行組織[5]。在MongoDB數(shù)據(jù)庫中,動態(tài)屬性可以采用它的數(shù)據(jù)模型來實現(xiàn),根據(jù)其文檔的機制來進行實現(xiàn)。在例子中,采用定義一個客戶經(jīng)理實體的集合,在集合中插入定義好的記錄文檔,具體操作如下:

      db.createCollection("'ClientManager'"); //定義客戶經(jīng)理集合

      db.ClientManager.insert({"name":"李四","存款業(yè)績":10000",是否投訴":是})

      db.ClientManager.insert({"name":"李四","基金業(yè)績":11000,"是否投訴":是})

      其中,大括號{}內(nèi)的數(shù)據(jù)是文檔信息,存儲客戶經(jīng)理信息,而每一鍵值對記錄該客戶經(jīng)理實體的績效信息,比如,"存款業(yè)績":10000"等。每個文檔內(nèi)中的鍵值對中的鍵可以不相同,這樣,就達到了實現(xiàn)動態(tài)屬性的要求。

      5 總結(jié)

      截止到目前為止,關(guān)系型數(shù)據(jù)庫理論和非關(guān)系型數(shù)據(jù)庫理論并存,而且他們都已經(jīng)發(fā)展得很成熟,在市場上廣泛應(yīng)用。作者從實際開發(fā)一款績效考核系統(tǒng)中,考核指標(biāo)不斷變化的實際需求出發(fā),調(diào)研和總結(jié)當(dāng)前市場上幾種處理實體屬性不斷變化的解決方案。根據(jù)不同的方案可選擇不同的數(shù)據(jù)庫技術(shù),在開發(fā)實施過程中需要相應(yīng)的技術(shù)條件和設(shè)備條件??傊?,希望給后來者的學(xué)習(xí)和工作提供一些建議和幫助。

      參考文獻:

      [1] 唐小剛,譚石強.一種實體屬性非確定的關(guān)系數(shù)據(jù)庫設(shè)計方法[J]. 湘南學(xué)院學(xué)報,2006(4).

      [2] 李華娟.關(guān)系型數(shù)據(jù)庫設(shè)計之實踐技巧[J].電子技術(shù)與軟件工程,2016(1).

      [3] 李長春.動態(tài)字段在VFP中的設(shè)計與實現(xiàn)[J].計算機時代,1999(7).

      [4] Lars George. HBase權(quán)威指南[M].人民郵電出版社,2013.

      [5] 鄒貴金. MongoDB管理與開發(fā)實戰(zhàn)詳解[M].中國鐵道出版社,2013.

      猜你喜歡
      數(shù)據(jù)庫設(shè)計關(guān)系數(shù)據(jù)庫
      關(guān)系數(shù)據(jù)庫在高爐數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
      山東冶金(2022年2期)2022-08-08 01:51:30
      關(guān)系數(shù)據(jù)庫技術(shù)在計算機網(wǎng)絡(luò)設(shè)計中的應(yīng)用
      計算機網(wǎng)絡(luò)設(shè)計中關(guān)系數(shù)據(jù)庫技術(shù)的應(yīng)用
      試論數(shù)據(jù)庫設(shè)計在網(wǎng)站開發(fā)中的應(yīng)用
      基于WEB的科研信息管理系統(tǒng)的設(shè)計與實現(xiàn)
      軟件開發(fā)中數(shù)據(jù)庫設(shè)計理論的實踐
      面向等級考試,探討高校理工科計算機基礎(chǔ)課程教學(xué)改革
      考試周刊(2016年47期)2016-06-29 22:15:13
      網(wǎng)站管理系統(tǒng)中數(shù)據(jù)庫設(shè)計的應(yīng)用研究
      《數(shù)據(jù)庫原理及應(yīng)用》在線考試系統(tǒng)的設(shè)計
      基于索引結(jié)構(gòu)的關(guān)系數(shù)據(jù)庫關(guān)鍵詞檢索
      南岸区| 安塞县| 甘谷县| 腾冲县| 荃湾区| 施甸县| 商河县| 湘乡市| 城步| 华宁县| 景德镇市| 延寿县| 米泉市| 鹿泉市| 海口市| 张北县| 崇义县| 桦甸市| 额敏县| 德格县| 沧州市| 桑植县| 合水县| 绥棱县| 玉田县| 临澧县| 永丰县| 廊坊市| 田林县| 柯坪县| 乳源| 聊城市| 中江县| 星座| 巴塘县| 宜章县| 普兰县| 于田县| 蒲江县| 安岳县| 马山县|