欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

數(shù)據(jù)庫開發(fā)和設(shè)計

系統(tǒng) 1817 0

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

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

image

數(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è)計不當(dāng)會使這些特性部分或完全的喪失。

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

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

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

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

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

3. 性能的喪失

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

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

image

數(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語句。

image

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

平面文件(Flat File)

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

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

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

[WebSites]

MyBlog=http://www.cnblogs.com/DBFocus

[Directorys]

Image=E:\DBFocus Project\Img

Text=E:\DBFocus Project\Documents

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ù)。相比于超文本標(biāo)記語言(HTML),其標(biāo)簽是可以自行定義的,即可擴展的。

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

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

<?xml version=”1.0” encoding=”UTF-8” ?>

<ClassSchedule>

???? <Class Name=“Psychology” Room=”Field 3”>

????????? <Instructor>Richard Storm</Instructor>

????????? <Students>

?????????????? <Student>

???????????????????? <FirstName>Ben</FirstName>

???????????????????? <LastName>Breaker</LastName>

?????????????? </Student>

?????????????? <Student>

???????????????????? <FirstName>Carol</FirstName>

???????????????????? <LastName>Enflame</LastName>

???????????????????? <NickName>Candy</NichName>

????????? </Students>

???? </Class>

</ClassSchedule>

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

XML文件有幾個特點。

首先,XML標(biāo)簽要求嚴格對應(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)點:

自然的層次型結(jié)構(gòu)

文本內(nèi)容通過標(biāo)簽是自解釋的

通過XSD(XML Schema語言)可以驗證XML的結(jié)構(gòu)

有許多輔助型技術(shù)如:XPath, XQuery, XSL, XSLT等

一些商業(yè)數(shù)據(jù)庫(如Oracle,SQL Server)已支持XML數(shù)據(jù)的存儲與操作

缺點:

數(shù)據(jù)的冗余信息較多

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

驗證功能有限

對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)品。

image

主要內(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

數(shù)據(jù)庫開發(fā)和設(shè)計


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 青青国产在线视频 | 美女国产网站 | 99re在线| 丁香六月婷婷在线 | 日本高清色www | 在线一区观看 | 亚洲一区二区三区免费视频 | 亚洲欧美日韩高清一区二区三区 | 91精品在线播放 | 日韩欧美在线观看一区 | jizjizjiz中国护士18 | 日韩免费视频 | 韩国精品 | 中文字幕在线观看 | 国产成人精品午夜 | 亚洲看片 | 成人免费影 | 日韩精品中文字幕视频一区 | 日本一区二区三区免费观看 | 欧美亚洲国产另类在线观看 | 久热久热 | 加勒比欧美| 91精品国模一区二区三区 | 国产一区在线播放 | 国产精品婷婷久久久久 | 6080yy免费毛片一级新视觉 | 中文字幕日韩欧美 | 天天躁夜夜躁狠狠躁2024 | 成人淫片免费视频95视频 | 成人影院欧美大片免费看 | 四虎精品8848ys一区二区 | 国产高清永久免费 | 日韩精品一区在线 | 欧美综合一区二区三区 | 免费看淫片 | 欧美片网站免费 | seku.tv| 亚洲 精品 综合 精品 自拍 | 久久精品视频5 | 精品乱子伦一区二区三区 | 丝袜美腿一区 |