Access數(shù)據(jù)庫一日通講義-郭安定-gtd_第1頁
Access數(shù)據(jù)庫一日通講義-郭安定-gtd_第2頁
Access數(shù)據(jù)庫一日通講義-郭安定-gtd_第3頁
Access數(shù)據(jù)庫一日通講義-郭安定-gtd_第4頁
Access數(shù)據(jù)庫一日通講義-郭安定-gtd_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、關(guān)系型數(shù)據(jù)庫的正規(guī)化數(shù)據(jù)庫并不是數(shù)據(jù)的堆積場沒有適當(dāng)加以規(guī)劃, 即使程序代碼優(yōu)化也難提升效率正規(guī)化是數(shù)據(jù)庫領(lǐng)域的重要課題同時(shí)也是建立數(shù)據(jù)表的最高指導(dǎo)原則數(shù)據(jù)庫的應(yīng)用發(fā)展極其廣泛, 它的哲學(xué)其實(shí)很簡單, 就是留住時(shí)間、儲存思考精華, 這個(gè)世界上, 即使再平凡的文件都可稱為數(shù)據(jù)庫:因?yàn)樾畔Υ嬖诓灰驎r(shí)間而消失的媒介, 以便可以重新延續(xù)既有的生命。數(shù)據(jù)庫研究領(lǐng)域尚未風(fēng)行前, 文件存取多半經(jīng)由循序存取、隨機(jī)存取和二進(jìn)制制存取方式達(dá)成, 大多數(shù)程序語言都有這門技術(shù)的相關(guān)課題, 其中, 循序存取是將文件從頭到尾讀過一遍, 我們可以將它想象成錄音帶, 如果存取第一百筆數(shù)據(jù), 那么得經(jīng)過第一到第九十九筆數(shù)據(jù)的

2、讀取, 非常沒有效率。相對于循序存取的方式, 隨機(jī)存取則像雷射唱盤, 它的存取機(jī)制可以任意定位, 無形中改進(jìn)了存取速度, 對于非一般文字型態(tài)的數(shù)據(jù), 例如:聲音或影像則透過二進(jìn)制制的存取方式, 不論是隨機(jī)或二進(jìn)制制的存取方式, 數(shù)據(jù)異動都是個(gè)很大的挑戰(zhàn), 剛開始您得準(zhǔn)備兩個(gè)文件, 一個(gè)作為讀取, 另一個(gè)則作為寫入, 例如:刪除某個(gè)文件的第1000筆數(shù)據(jù), 那么得先從A文件讀999個(gè)文件寫入B文件, 然后跳過第1000筆記錄, 再將A文件的第1001筆記錄寫到B文件, 如果文件不大, 那么沒有人會抗議, 但如果文件高達(dá)10MB呢?或者說高達(dá)100MB呢?恐怕沒有人會癡癡等待。折衷的辦法是在文件的

3、前端設(shè)定參照的表頭(Head), 刪除文件時(shí)僅是在某個(gè)紀(jì)錄上做個(gè)標(biāo)記, 并未實(shí)際刪除, 雖然速度快, 但還是沒有節(jié)省儲存空間, 因此, 我們需要另全新的儲存機(jī)制, 以便存取更多數(shù)字化數(shù)據(jù), 它必須夠快而且更有效率, 而數(shù)據(jù)庫的領(lǐng)域正是在這樣的背景下誕生的。資料建構(gòu)的第一步科技的歷史不僅短暫而且快速, 盡管世界的某個(gè)角落還可以看到ISAM的影子, 但現(xiàn)在畢竟已經(jīng)是關(guān)系型數(shù)據(jù)庫(Relational Database)的天下了, 桌上型數(shù)據(jù)庫的產(chǎn)品幾乎多到還來不及認(rèn)識, 每個(gè)月都有新產(chǎn)品的誕生和淘汰。現(xiàn)代數(shù)據(jù)庫工具講究的是效率, 用戶建立數(shù)據(jù)庫并不需要偉大的知識, 有些建構(gòu)精靈(Wizard)甚至

4、在還沒來得及看清楚前, 就把作品完成了, 但這是個(gè)很大的危機(jī), 因?yàn)榱私鈨?nèi)部運(yùn)作原理的人越來越少了, 有些專家認(rèn)為世界上并不會出現(xiàn) 唯一的解決方案 , 因?yàn)榧词刮覀兒袜徏矣玫恼{(diào)味料都未必相同, 又怎么認(rèn)定機(jī)器能決定所有人的喜好呢自定工作環(huán)境是未來的趨勢, 對于數(shù)據(jù)庫, 能夠了解關(guān)系型數(shù)據(jù)庫的特性, 并擅用正規(guī)化的技巧將有助于存取效益的提升, 首先, 我們必須了解, 在數(shù)據(jù)庫的概念里, 數(shù)據(jù)表是最常見的輸入口, 也是組成數(shù)據(jù)庫的重要單元, 數(shù)據(jù)表由不同字段構(gòu)成, 就好像對象擁有不同的屬性一樣。對象的屬性定義非常具有彈性, 數(shù)據(jù)表的字段定義也一樣, 那么當(dāng)一個(gè)數(shù)據(jù)表定義兩個(gè)不同的字段和兩個(gè)數(shù)據(jù)表各

5、自定義一個(gè)不同的字段有什么不同呢?當(dāng)然, 這種問題不會難倒專家, 他們會在紙上畫些簡單邏輯, 還有講授令初學(xué)者滿腹狐疑的理論。很多人第一次建構(gòu)數(shù)據(jù)庫時(shí), 都是將可以想到的字段塞進(jìn)一個(gè)數(shù)據(jù)表里, 他們認(rèn)為非常直覺:因?yàn)楫?dāng)開啟數(shù)據(jù)表時(shí), 所有能夠存取的東西都在那里。但您知道的, 這種做法就好像出門時(shí), 戴著安全帽、雨傘、盥洗用具, 外加鍋碗瓢盆。為什么我們不能只將注意力集中在存取數(shù)據(jù)本身呢?當(dāng)然可以, 這種替數(shù)據(jù)表特別規(guī)劃、決定哪些字段應(yīng)該放在相同數(shù)據(jù)表, 哪些字段應(yīng)該分開的優(yōu)化過程就稱為正規(guī)化(Normalization), 底下我們即將從一個(gè)簡單案例學(xué)習(xí)正規(guī)化的步驟及其注意事項(xiàng)。為了說明起見,

6、 表一是未經(jīng)正規(guī)化的數(shù)據(jù), 我們假想機(jī)器貓小叮當(dāng)建了一個(gè)郵購網(wǎng)站, 它的好朋友大雄、技安和宜靜都來捧場, 小叮當(dāng)將所有交易都紀(jì)錄在它的魔術(shù)筆記本, 現(xiàn)在讓我們來幫小叮當(dāng)進(jìn)行數(shù)據(jù)庫的正規(guī)化??蛻艟幪柨蛻粜彰庞迷u等消費(fèi)日期商品分類商品代碼購買商品購買金額備注說明001大雄尚可2/2AMB01一年會員$ 1000-001大雄尚可2/2BGD01任意門$ 999款項(xiàng)未清001大雄尚可2/3BGD02竹蜻蜓$150交換條件002技安差2/2AMB02半年會員$ 500-002技安差2/3BGD03縮小機(jī)$ 2000-002技安差2/4BGD02竹蜻蜓$ 150-002技安差2/4BGD04無痛膠布$

7、200-002技安差2/4BGD05透視鏡$ 2500-003宜靜不錯(cuò)2/2AMB02半年會員$ 800大雄支付003宜靜不錯(cuò)2/5BGD06快速滑板$ 400-表一:未經(jīng)正規(guī)化的數(shù)據(jù)表有許多重復(fù)的字段。一次正規(guī)化正規(guī)化可經(jīng)由幾個(gè)不同的階段逐一分析, 第一階段是找出數(shù)據(jù)庫里重復(fù)出現(xiàn)的數(shù)據(jù), 并設(shè)法將它獨(dú)立成另一個(gè)數(shù)據(jù)表, 例如表一的客戶編號、客戶姓名和信用評等重復(fù)出現(xiàn)了好幾次, 其實(shí)只要使用一個(gè)客戶編號就可以代表客戶姓名和信用評等, 例如:大雄的信用評等為 尚可 , 不會突然有一筆信用平等不同的狀況出現(xiàn), 因此, 經(jīng)過第一次正規(guī)化的結(jié)果可以拆成如下的兩個(gè)數(shù)據(jù)表??蛻艟幪柨蛻粜彰庞迷u等001大

8、雄尚可002技安差003宜靜不錯(cuò)表二:將客戶的基本數(shù)據(jù)獨(dú)立成一個(gè)數(shù)據(jù)表??蛻艟幪栂M(fèi)日期消費(fèi)分類商品代碼商品名稱購買金額備注說明0012/2AMB01一年會員$ 1000-0012/2BGD01任意門$ 999款項(xiàng)未清0012/3BGD02竹蜻蜓$150交換條件0022/2AMB02半年會員$ 500-0022/3BGD03縮小機(jī)$ 2000-0022/4BGD02竹蜻蜓$ 50-0022/4BGD04無痛膠布$ 200-0022/4BGD05透視鏡$ 2500-0032/2AMB02半年會員$ 800大雄支付0032/5BGD06快速滑板$ 400-表三:簡化后的消費(fèi)數(shù)據(jù)。在這種情況下, 簡

9、化后的消費(fèi)數(shù)據(jù)表可以藉由 客戶編號 到基本數(shù)據(jù)表找到更多詳細(xì)數(shù)據(jù), 小叮當(dāng)還可以在數(shù)據(jù)表擴(kuò)充性別、生日、地址等其它數(shù)據(jù), 而且不會增加數(shù)據(jù)的重復(fù)性, 至此我們算是完成了第一階段的任務(wù)。二次正規(guī)化正規(guī)化的第二步驟是找出數(shù)據(jù)表中絕對依賴的字段, 并獨(dú)立成另一個(gè)數(shù)據(jù)表, 例如 商品代碼 和 商品名稱 的關(guān)系是絕對依賴, GD02代表 竹蜻蜓 , 如果種類很多種, 應(yīng)該賦予不同代碼, 好比 飛天竹蜻蜓 的商品代碼命名為GD021、潛水竹蜻蜓的代碼則是GD022, 如此可以避免混淆, 像這種存在絕對依賴的字段可以再拆成不同的數(shù)據(jù)表。商品代碼商品名稱購買金額MB01一年會員$ 1000MB02半年會員$

10、500GD01任意門$ 999GD02竹蜻蜓$150GD03縮小機(jī)$ 2000GD04無痛膠布$ 200GD05透視鏡$ 2500GD06快速滑板$ 400表四:再分出一個(gè)商品基本數(shù)據(jù)??蛻艟幪栂M(fèi)日期消費(fèi)分類商品代碼備注說明0012/2AMB01-0012/2BGD01款項(xiàng)未清0012/3BGD02交換條件0022/2AMB02-0022/3BGD03-0022/4BGD02-0022/4BGD04-0022/4BGD05-0032/2AMB02大雄支付0032/5BGD06-表五:二次正規(guī)化后的消費(fèi)數(shù)據(jù)。在進(jìn)行的過程中, 我們意外地發(fā)現(xiàn)商品名稱和購買金額也具有絕對依賴關(guān)系, 為了貪圖方便,

11、 所以將它并入商品的基本數(shù)據(jù)表, 目前表一已經(jīng)拆成 客戶基本數(shù)據(jù) 、 商品基本數(shù)據(jù) 和 客戶消費(fèi)數(shù)據(jù) 三個(gè)數(shù)據(jù)表了, 趕緊再接再厲吧。三次正規(guī)化第三正規(guī)化的法則是將數(shù)據(jù)表中相依字段獨(dú)立成數(shù)據(jù)表, 這句話是什么意思呢?仔細(xì)檢查消費(fèi)數(shù)據(jù)表會發(fā)現(xiàn)表五重復(fù)率最高的是 消費(fèi)分類 的A和B, 小叮當(dāng)最初的想法是將繳交會員費(fèi)用的部分歸在A等級, 這樣它可以很快經(jīng)由篩選 消費(fèi)分類 為A的紀(jì)錄, 統(tǒng)計(jì)某月會員費(fèi)的繳交情形, 而B等級的則代表一般商品。其實(shí), 這個(gè)字段與 商品代碼 存在著相依的關(guān)系, 因?yàn)閺腗B01或MB02反查自然就可以找到它們都是屬于A等級的消費(fèi), 而GD01 GD06則可以知道是屬于B等級的

12、消費(fèi), 在這種情況下, 我們可以將商品代碼和消費(fèi)分類另外獨(dú)立成底下的數(shù)據(jù)表:消費(fèi)分類商品代碼AMB01AMB02BGD01BGD02BGD03BGD04BGD05BGD06表六:三次正規(guī)化后的相依數(shù)據(jù)。而消費(fèi)數(shù)據(jù)表就再度縮減成表七了:客戶編號消費(fèi)日期商品代碼備注說明0012/2MB01-0012/2GD01款項(xiàng)未清0012/3GD02交換條件0022/2MB02-0022/3GD03-0022/4GD02-0022/4GD04-0022/4GD05-0032/2MB02大雄支付0032/5GD06-表七:三次正規(guī)化后的消費(fèi)數(shù)據(jù)。以上示范的就是最常見的三階段正規(guī)化, 但還是必須經(jīng)過測試, 才知道

13、是否可以滿足實(shí)際的需求, 首先, 正規(guī)化的最大好處是數(shù)據(jù)異動時(shí), 提供完整的一致性, 例如:當(dāng)小叮當(dāng)開始生產(chǎn) 隱形竹蜻蜓 和 潛水竹蜻蜓 時(shí), 只要更改 GD02的商品名稱為 飛天竹蜻蜓 , 那么過去參照到GD02的紀(jì)錄, 進(jìn)行查詢作業(yè)時(shí)也會一起變更, 不會有錯(cuò)誤的情況, 目前看起來是不錯(cuò)的。大哥!過頭了但我們也發(fā)現(xiàn)了一些問題, 好比任意門的特惠價(jià)是$ 999, 如果想優(yōu)待大雄成為$ 800該怎么辦?由于交易價(jià)格并非制定在消費(fèi)歷史數(shù)據(jù)而是商品基本數(shù)據(jù), 所以就會顯得格外棘手, 像這種情況稱為 假性依賴 , 也就是原先認(rèn)定絕對依賴的項(xiàng)目會在某些情況改變, 因此, 這種字段不應(yīng)獨(dú)立成另外一個(gè)數(shù)據(jù)表

14、, 此外, 檢視表四和表六, 不難發(fā)現(xiàn)這兩個(gè)數(shù)據(jù)表可以再結(jié)合成單一數(shù)據(jù)表, 這種情況下, 反而更加精簡。有時(shí)數(shù)據(jù)表的切割會因疏忽而有過度正規(guī)的現(xiàn)象, 這時(shí)就可重新修正字段的分配, 但請牢記正規(guī)化僅是建立數(shù)據(jù)表的原則而非鐵則, 重復(fù)數(shù)據(jù)數(shù)據(jù)過多時(shí)才能顯現(xiàn)正規(guī)化的威力, 如果數(shù)據(jù)表永遠(yuǎn)固定只有五筆記錄, 那么經(jīng)過正規(guī)化的切割方式不見得提升存取效率, 就好比表一的 備注說明 字段, 它的內(nèi)容和長度都是不固定的, 與其增加備注代碼另外興建一個(gè)數(shù)據(jù)表, 不如直接將它加在消費(fèi)數(shù)據(jù)表來得恰當(dāng)。關(guān)系的建立通常經(jīng)過正規(guī)化的數(shù)據(jù)表已經(jīng)很難看出紀(jì)錄原貌, 有時(shí)甚至要查上十幾個(gè)數(shù)據(jù)表才有辦法得出完整紀(jì)錄, 這也正是關(guān)

15、系型數(shù)據(jù)庫的最大威力:將數(shù)個(gè)數(shù)據(jù)表整合成能夠閱讀的紀(jì)錄。以Access 97為例, 關(guān)系的建立采用圖形操作模式, 您可以將某個(gè)數(shù)據(jù)表的字段拖曳到另一個(gè)數(shù)據(jù)表的字段進(jìn)行連結(jié), 連結(jié)字段的名稱可以不同, 但必須具備同性質(zhì)內(nèi)容, 以小叮當(dāng)情況為例, 它的關(guān)系圖像圖一所示。圖一:將數(shù)個(gè)數(shù)據(jù)表透過索引關(guān)系在一起。常見的關(guān)系方式有三種, 第一種是對等連結(jié), 也就是左側(cè)數(shù)據(jù)表與右側(cè)數(shù)據(jù)表的字段內(nèi)容相同時(shí)才顯示數(shù)據(jù);另一種是左邊關(guān)系則是以左側(cè)數(shù)據(jù)庫為主, 與右側(cè)數(shù)據(jù)庫字段相符或空白的紀(jì)錄都會顯示;最后, 則是右側(cè)關(guān)系。除了關(guān)系的建立外, 您也可以在數(shù)據(jù)表內(nèi)增加索引(Index)加快存取速度, 但建立索引的缺點(diǎn)是減緩數(shù)據(jù)的異動速度, 因此, 整個(gè)數(shù)據(jù)庫的規(guī)劃必須經(jīng)過慎密的分析, 就數(shù)據(jù)異動的頻繁和關(guān)系特性詳細(xì)布局。維護(hù)的問題當(dāng)數(shù)據(jù)庫建立后, 只是讓它具備架構(gòu), 還必須另外設(shè)計(jì)數(shù)據(jù)輸入接口, 這時(shí)就牽涉到維護(hù)的問題, 以表七為例, 如果更新大雄第二筆交易紀(jì)錄, 搜尋條件會很難決定, 因?yàn)椴徽撌菨M足任何字段的設(shè)定條件都不是唯一, 因此必需賦予每筆記錄一個(gè)識別代碼, 就像身分證字號一樣, 不會因?yàn)槠渌侄萎悇佣艿接绊?。在Access 97的工作環(huán)境, 您可以在數(shù)據(jù)表內(nèi)新增 自動編號 型態(tài)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論