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

        ?

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

        2017-04-08 12:47:52王洋
        電腦知識與技術 2017年5期
        關鍵詞:數據庫設計關系數據庫

        王洋

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

        關鍵詞: 實體動態(tài)屬性;數據庫設計;關系數據庫;非關系數據庫

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

        1 問題的提出

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

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

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

        2 定義相關數據結構

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

        Create Table ClientManager(

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

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

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

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

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

        ... //未知屬性字段

        很顯然,由于實體未知屬性的存在,上述結構中的字段不明確,這樣的設計在目前的數據庫技術中不能得以實現。

        3 關系數據庫中實體的設計方法

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

        3.1 采用改行為列

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

        Create Table ClientManager(

        CName nvarchar(50), //經理姓名

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

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

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

        3.2 采用兩個關系實體

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

        Create Table AchieveSet(

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

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

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

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

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

        4 非關系數據庫實體的設計方法

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

        4.1 采用HBase模型

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

        create ‘ClientManager,'CAchieve'

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

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

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

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

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

        ...

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

        4.2 采用MongoDB模型

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

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

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

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

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

        5 總結

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

        參考文獻:

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

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

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

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

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

        猜你喜歡
        數據庫設計關系數據庫
        關系數據庫在高爐數據采集系統(tǒng)中的應用
        山東冶金(2022年2期)2022-08-08 01:51:30
        關系數據庫技術在計算機網絡設計中的應用
        計算機網絡設計中關系數據庫技術的應用
        數碼設計(2017年8期)2017-04-08 05:58:34
        試論數據庫設計在網站開發(fā)中的應用
        基于WEB的科研信息管理系統(tǒng)的設計與實現
        軟件開發(fā)中數據庫設計理論的實踐
        面向等級考試,探討高校理工科計算機基礎課程教學改革
        考試周刊(2016年47期)2016-06-29 22:15:13
        網站管理系統(tǒng)中數據庫設計的應用研究
        《數據庫原理及應用》在線考試系統(tǒng)的設計
        基于索引結構的關系數據庫關鍵詞檢索
        国产精选免在线观看| 亚洲成av人片天堂网无码| 亚洲中文字幕在线第二页| 日韩精品无码区免费专区| 欧妇女乱妇女乱视频| 免费毛片性天堂| 午夜婷婷国产麻豆精品| 精品福利一区二区三区蜜桃| 少妇aaa级久久久无码精品片| 国内久久婷婷激情五月天| 日韩精品中文字幕人妻系列| 国产精品亚洲av高清二区| 国产啪亚洲国产精品无码| 免费一级特黄欧美大片久久网 | 亚洲中文字幕有综合久久| 久久精品国产亚洲av性瑜伽| 国产美女精品一区二区三区| 亚洲欧美国产日韩字幕| 精品国产亚洲人成在线观看| 精品福利一区二区三区蜜桃| 亚洲欧美激情在线一区| 国产精品女同一区二区久久| 国产精品一区二区AV不卡| 日韩av天堂一区二区三区在线| 亚洲成aⅴ人片久青草影院| 亚洲av综合久久九九| 亚洲AV肉丝网站一区二区无码| 久久中文字幕av一区二区不卡 | 精品国产av一区二区三区四区| 人妻精品动漫h无码网站| 视频国产精品| 日韩一二三四区在线观看| 久热re这里精品视频在线6| 久久精品国产夜色| 国产美女高潮流的白浆久久| 蜜桃视频插满18在线观看| a级毛片在线观看| 在线你懂| 日本高清一道本一区二区| 在线亚洲+欧美+日本专区| 精品国产一区二区三区香蕉|