日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一步一步設(shè)計你的數(shù)據(jù)庫之數(shù)據(jù)庫設(shè)計的重要性

引言:一直在從事數(shù)據(jù)庫開發(fā)和設(shè)計工作,也看了一些書籍,算是略有心得。很久之前就想針對關(guān)系數(shù)據(jù)庫設(shè)計進行整理、總結(jié),但因為種種原因遲遲沒有動手,主要還是惰性使然。今天也算是痛下決心開始這項卓絕又令我興奮的工作。這將是一個系列的文章,我將以講座式的口吻展開討論(個人偷懶,這里的總結(jié)直接拿去公司培訓(xùn)新人用)。

系列的第一講我們先來回答下面幾個問題:

數(shù)據(jù)庫是大樓的根基

大多數(shù)程序員都很急切,在了解基本需求之后希望很快的進入到編碼階段(可能只有產(chǎn)出代碼才能反映工作量),對于數(shù)據(jù)庫設(shè)計思考得比較少。

這給系統(tǒng)留下了許多隱患。許多軟件系統(tǒng)的問題,如:輸出錯誤的數(shù)據(jù),性能差或后期維護繁雜等,都與前期數(shù)據(jù)庫設(shè)計有著密切的關(guān)系。到了這個時候再想修改數(shù)據(jù)庫設(shè)計或進行優(yōu)化等同于推翻重來。

我經(jīng)常把軟件開發(fā)比作汽車制造。汽車制造會經(jīng)過圖紙設(shè)計,模型制作,樣車制造,小批量試生產(chǎn),最后是批量生產(chǎn)等步驟。整個過程環(huán)環(huán)相扣,后一過程是建立在前一過程正確的前提基礎(chǔ)之上的。如果在圖紙設(shè)計階段發(fā)現(xiàn)了一個紕漏,我們可以重新進行圖紙設(shè)計,如果到了樣車制造階段發(fā)現(xiàn)這個錯誤,那么我們就要把從圖紙設(shè)計到樣車制造的階段重來,越到后面發(fā)現(xiàn)設(shè)計上的問題,所付出的代價越大,修改的難度也越大。

數(shù)據(jù)庫是整個應(yīng)用的根基,沒有堅實的根基,整個應(yīng)用也就岌岌可危了。

強大的數(shù)據(jù)庫面對不良設(shè)計也無能為力

現(xiàn)代數(shù)據(jù)庫管理系統(tǒng)(DBMS)提供了方便的圖形化界面工具,通過這些工具可以很方便的創(chuàng)建表、定義列,但我們設(shè)計出的結(jié)構(gòu)好嗎?

關(guān)系數(shù)據(jù)庫有許多非常好的特性,但設(shè)計不當會使這些特性部分或完全的喪失。

我們來看看以下幾個數(shù)據(jù)庫不良設(shè)計造成的場景

1. 數(shù)據(jù)一致性的喪失

一個訂單管理系統(tǒng),維護著客戶和客戶下的訂單信息。使用該系統(tǒng)的用戶在接到客戶修改收貨地址的電話后,在系統(tǒng)的客戶信息頁面把該客戶的收貨地址進行了修改,但原先該客戶的訂單還是送錯了地址。

2. 數(shù)據(jù)完整性的喪失

公司戰(zhàn)略轉(zhuǎn)移,準備撤出某地區(qū)。系統(tǒng)操作人員順手把該地區(qū)的配置信息在系統(tǒng)中進行刪除,系統(tǒng)提示刪除成功。隨后問題就來了,客服人員發(fā)現(xiàn)該地區(qū)的歷史訂單頁面一打開就出錯。

3. 性能的喪失

一個庫存管理系統(tǒng),倉庫管理員使用該系統(tǒng)記錄每一筆進出貨情況,并能查看當前各貨物的庫存情況。在系統(tǒng)運行幾個月后,倉庫管理員發(fā)現(xiàn)打開當前庫存頁面變得非常慢,而且整個趨勢是越來越慢。

上面這些場景都是由于數(shù)據(jù)庫設(shè)計不當造成的,根源包括:設(shè)計時引入了冗余字段,沒有設(shè)計合理的約束,對性能沒有進行充足設(shè)計等,上面的例子也只是滄海一粟。

#p#

數(shù)據(jù)庫平臺無關(guān)性

我在這個系列博客里討論的數(shù)據(jù)庫設(shè)計不針對任何一個關(guān)系數(shù)據(jù)庫產(chǎn)品。無論你使用的是Oracle,SQL Server,Sybase,亦或是開源數(shù)據(jù)庫如:MySQL,SQLite等,都可以用來實踐我們這里討論的設(shè)計方法和設(shè)計理念,設(shè)計是這個系列博文的核心和靈魂。

注:在文中我會選用一個數(shù)據(jù)庫產(chǎn)品來進行演示,大家可以選用自己熟悉的數(shù)據(jù)庫產(chǎn)品來實驗。本文最后會給出一些免費數(shù)據(jù)庫產(chǎn)品的鏈接,大家可以下載學(xué)習(xí)。

一起學(xué)習(xí)共同進步

無論你是數(shù)據(jù)庫設(shè)計師,應(yīng)用架構(gòu)師,軟件工程師,數(shù)據(jù)庫管理員(DBA),軟件項目經(jīng)理,軟件測試工程師等項目組成員,都能從該系列博文中有所收獲。大家一起討論,共同進步。

內(nèi)容涉及領(lǐng)域

我對這一系列博文現(xiàn)在的設(shè)想是涉及數(shù)據(jù)庫設(shè)計的整個過程。從需求分析開始,到數(shù)據(jù)庫建模(概念數(shù)據(jù)建模),進行范式化,直至轉(zhuǎn)化為SQL語句。

#p#

在我們一頭扎進數(shù)據(jù)庫設(shè)計之前,我們先了解一下除了關(guān)系型數(shù)據(jù)庫之外的數(shù)據(jù)存儲方式

平面文件(Flat File)

包括以.txt和.ini結(jié)尾的文件。

eg: 一個.ini文件的內(nèi)容:

 
 
 
 
  1. [WebSites]  
  2. MyBlog=http://www.cnblogs.com/DBFocus  
  3.  
  4. [Directorys]  
  5. Image=E:\DBFocus Project\Img  
  6. Text=E:\DBFocus Project\Documents  
  7. Data=E:\DBFocus Project\DB 

優(yōu)點:

文件的存儲形式非常簡單,普通的編輯器都能對其進行打開、修改

缺點:

無法支持復(fù)雜的查詢

沒有任何驗證功能

對平面文件中間的內(nèi)容進行插入、刪除操作其實是重新生成了一個新文件

適用場景:

存放小量,修改不頻繁的數(shù)據(jù),如應(yīng)用配置信息

Windows注冊表

錯誤的修改Windows注冊表會引起系統(tǒng)的紊亂,故不建議把很多數(shù)據(jù)存放在注冊表中。

Windows注冊表為樹形結(jié)構(gòu),存放著一些系統(tǒng)配置信息和應(yīng)用配置信息。

通過把不同的配置存放在注冊表的不同分支上,使得應(yīng)用程序公共配置信息與用戶個人配置信息分離。

eg:某文檔版本管理系統(tǒng),能通過配置與本主機上安裝的文件比較器建立關(guān)聯(lián)進行文檔比較。這是一個公共配置信息,文件比較器路徑可以存放在注冊表的HKEY_LOCAL_MACHINE\SOFTWARE分支下。

同時該文檔版本管理系統(tǒng)能記錄用戶最近打開的10個文檔路徑。這是用戶個人配置信息,對于不同的Windows用戶最近打開的10個文檔可以不同,這些配置信息可存放在注冊表的HKEY_CURRENT_USER\Software分支下。

Excel表單(Spreadsheets)

優(yōu)點:

Excel 非常普及,用戶對于Spreadsheet的表現(xiàn)形式非常熟悉

可以進行簡單統(tǒng)計,方便出各種圖表

缺點:

不適用于許多Spreadsheet之間關(guān)系復(fù)雜的情況

無法應(yīng)對復(fù)雜查詢

數(shù)據(jù)驗證功能弱

適用場景:

數(shù)據(jù)量不是非常大的辦公自動化環(huán)境

XML

XML是一種半結(jié)構(gòu)化的數(shù)據(jù)。相比于超文本標記語言(HTML),其標簽是可以自行定義的,即可擴展的。

eg:一個XML文件內(nèi)容

-----------------------------------------------------

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.       
  6.  
  7.           Richard Storm 
  8.  
  9.            
  10.  
  11.                 
  12.  
  13.                      Ben 
  14.  
  15.                      Breaker 
  16.  
  17.                 
  18.  
  19.                 
  20.  
  21.                      Carol 
  22.  
  23.                      Enflame 
  24.  
  25.                      Candy 
  26.  
  27.            
  28.  
  29.       
  30.  
  31.  

-----------------------------------------------------

XML文件有幾個特點

首先,XML標簽要求嚴格對應(yīng),且不能出現(xiàn)交錯的現(xiàn)象。

其次,XML文件必須有一個根節(jié)點,該節(jié)點包含所有其他元素。

第三,同級別的不同節(jié)點內(nèi)不必包含相同的元素,如上例中第二個學(xué)生Carol有一個特別的節(jié)點NickName。這個特性使得在某些場景中XML比關(guān)系數(shù)據(jù)庫更能應(yīng)對變化。

優(yōu)點:

  1. 自然的層次型結(jié)構(gòu)
  2. 文本內(nèi)容通過標簽是自解釋的
  3. 通過XSD(XML Schema語言)可以驗證XML的結(jié)構(gòu)
  4. 有許多輔助型技術(shù)如:XPath, XQuery, XSL, XSLT等
  5. 一些商業(yè)數(shù)據(jù)庫(如Oracle,SQL Server)已支持XML數(shù)據(jù)的存儲與操作

缺點:

  1. 數(shù)據(jù)的冗余信息較多
  2. 無法支持復(fù)雜的查詢
  3. 驗證功能有限
  4. 對XML中間的內(nèi)容進行插入、刪除操作其實是重新生成一個新文件

適用場景:

適合存放數(shù)據(jù)量不大,具有層次型結(jié)構(gòu)的數(shù)據(jù),如樹形配置信息

NoSQL數(shù)據(jù)庫

非關(guān)系型數(shù)據(jù)庫我接觸的不是很多,除了給出一些產(chǎn)品名稱之外不做很多展開。園子里已有一些文章,本文最后也給出了鏈接供大家學(xué)習(xí)、研究。

1. Key-Value數(shù)據(jù)庫

Redis, Tokyo Cabinet, Flare

2. 面向文檔的數(shù)據(jù)庫

MongoDB, CouchDB

3. 面向分布式計算的數(shù)據(jù)庫

Cassandra, Voldemort

這幾年NoSQL非常熱。我認為NoSQL并不是“銀彈”,在某些SNS應(yīng)用場景中NoSQL顯示了其優(yōu)越性,但在如金融行業(yè)等對數(shù)據(jù)的一致性、完整性、可用性、事務(wù)性高要求的場景下,現(xiàn)在的NoSQL就未必適用。我們應(yīng)充分分析應(yīng)用的需求,非常謹慎地選擇技術(shù)和產(chǎn)品。

#p#

主要內(nèi)容回顧

1.數(shù)據(jù)庫設(shè)計對于軟件項目成功的關(guān)鍵作用

2.本課程與數(shù)據(jù)庫產(chǎn)品無關(guān),核心是設(shè)計的理念和方法

3.各種數(shù)據(jù)存儲所適用的場景

參考資料

1. Oracle Database 10g Express Edition

2. SQL Server 2008 R2 Express – Overview

3. SQLite Home Page

4. NoSQL數(shù)據(jù)庫筆談

原文鏈接:http://www.cnblogs.com/DBFocus/archive/2011/03/27/1996655.html

【編輯推薦】

  1. SQLite做為本地緩存應(yīng)注意的幾大方面
  2. C#中數(shù)據(jù)本地存儲方案之SQLite
  3. 淺析SQLite數(shù)據(jù)庫開發(fā)常用管理工具
  4. Widget開發(fā)心得 解決跳轉(zhuǎn)頁面和SQLite類問題
  5. 為自己做一個簡單記賬簿

當前名稱:一步一步設(shè)計你的數(shù)據(jù)庫之數(shù)據(jù)庫設(shè)計的重要性
當前地址:http://m.5511xx.com/article/ccodhih.html