樹人論文網一個專業的職稱論文發表,期刊雜志論文投稿,核心期刊論文發表網站!!!
“課題、教材、著作、專利” 評職加分高 評職有優勢
樹人論文網_職稱論文發表_期刊雜志論文投稿_論文發表期刊_核心期刊論文發表
400-6800-558

實體的動態屬性在數據庫設計中的解決方案

來源: 樹人論文網 發表時間:2019-05-30 編輯:lunwenfabiao 瀏覽次數:
摘要: 該文主要是針對數據庫設計中遇到實體的動態屬性的問題,分別結合關系型和非關系型兩大類數據庫技術,介紹解決實體屬性可變性問題的解決方法:關系弄的解決方案是改行為列和使
職稱論文發表

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

現代信息科技

  《現代信息科技》始終堅持學術第一的標準和科學、創新、前瞻、實用的原則,刊載電子信息科技領域研究的新進展、新技術、新成果,促進學術交流,推動成果轉換,提高該領域研究水平和科技裝備水平,服務我國經濟社會發展。

  1 問題的提出

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

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

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

  2 定義相關數據結構

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

  Create Table ClientManager(

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

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

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

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

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

  ... //未知屬性字段

  )

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

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

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

  3.1 采用改行為列

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

  Create Table ClientManager(

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

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

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

  )

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

  3.2 采用兩個關系實體

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

  Create Table AchieveSet(

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

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

  AValueLength int, //業績額的取值長度

  AValuePrecision int //業績額的取值精度

  )

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

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

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

  4.1 采用HBase模型

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

  create ‘ClientManager,'CAchieve'

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

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

  put 'ClientManager','張三','CAchieve:存款業績','10000'

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

  put 'ClientManager','李四','CAchieve:基金業績','10500'

  ...

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

  4.2 采用MongoDB模型

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

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

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

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

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

  5 總結

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

  參考文獻:

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

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

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

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

  [5] 鄒貴金. MongoDB管理與開發實戰詳解[M].中國鐵道出版社,2013.

云南快乐十分开奖详情