青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-48  評論-259  文章-1  trackbacks-0

簡介

在設(shè)計數(shù)據(jù)庫時,最重要的步驟是要確保數(shù)據(jù)正確分布到數(shù)據(jù)庫的表中。使用正確的數(shù)據(jù)結(jié)構(gòu),可以極大地簡化應(yīng)用程序的其他內(nèi)容(查詢、窗體、報表、代碼等)。正確進行表設(shè)計的正式名稱是“數(shù)據(jù)庫規(guī)范化”。

本文簡要介紹數(shù)據(jù)庫規(guī)范化的基本概念和一些需要注意并力求避免的常見問題。

理解您的數(shù)據(jù)

在設(shè)計表之前,應(yīng)明確您打算如何處理數(shù)據(jù),還要了解隨著時間的推移數(shù)據(jù)會發(fā)生什么樣的變化。您所做的假設(shè)將會影響最終的設(shè)計。

您需要什么樣的數(shù)據(jù)?

設(shè)計應(yīng)用程序時,關(guān)鍵要了解設(shè)計的最終結(jié)果,以便確保您準(zhǔn)備好所有必需的數(shù)據(jù)并知道其來源。例如,報表的外觀、每個數(shù)據(jù)的來源以及所需的所有數(shù)據(jù)是否都存在。對項目損失最大的莫過于在項目后期發(fā)現(xiàn)重要報表缺少數(shù)據(jù)。

知道需要什么樣的數(shù)據(jù)后,就必須確定數(shù)據(jù)的來源。數(shù)據(jù)是否從其他數(shù)據(jù)源中導(dǎo)入?數(shù)據(jù)是否需要清理或驗證?用戶是否需要輸入數(shù)據(jù)?

明確所需數(shù)據(jù)的類型和來源是數(shù)據(jù)庫設(shè)計的第一步。

您打算如何處理這些數(shù)據(jù)?

用戶是否需要編輯這些數(shù)據(jù)?如果需要,應(yīng)如何顯示數(shù)據(jù)以便于用戶理解和編輯?有沒有驗證規(guī)則和相關(guān)的查找表?要求對編輯和刪除保留備份的數(shù)據(jù)輸入有沒有相關(guān)聯(lián)的審核問題?需要為用戶顯示哪些摘要信息?是否需要生成導(dǎo)出文件?了解這些信息后,就可以想象字段之間是如何相互關(guān)聯(lián)的了。

數(shù)據(jù)之間如何相互關(guān)聯(lián)?

將數(shù)據(jù)分組放入相關(guān)字段(例如與客戶相關(guān)的信息、與發(fā)票相關(guān)的信息等),每個字段組都代表要建立的表。然后考慮如何將這些表相互關(guān)聯(lián)。例如,哪些表具有一對多關(guān)系(例如,一個客戶可能持有多張發(fā)票)?哪些表具有一對一關(guān)系(這種情況下,通常會考慮將其組合到一個表中)?

隨著時間的推移數(shù)據(jù)會發(fā)生什么樣的變化?

設(shè)計表之后,常常會由于沒有考慮時間的影響而導(dǎo)致以后出現(xiàn)嚴(yán)重問題。許多表設(shè)計在當(dāng)時使用時效果非常好,但是,常常會因為用戶修改數(shù)據(jù)、添加數(shù)據(jù)以及隨時間的推移而崩潰。開發(fā)人員經(jīng)常會發(fā)現(xiàn)需要重新設(shè)計表的結(jié)構(gòu)來適應(yīng)這些變化。表的結(jié)構(gòu)發(fā)生變化時,所有相關(guān)的內(nèi)容(查詢、窗體、報表、代碼等)也必須隨之更新。理解并預(yù)測數(shù)據(jù)會隨時間推移發(fā)生哪些變化,可以實現(xiàn)更好的設(shè)計,減少問題的發(fā)生。

學(xué)習(xí)如何使用查詢

了解如何分析和管理數(shù)據(jù)同樣很重要。您應(yīng)該深刻理解查詢的工作原理,理解如何使用查詢在多個表之間鏈接數(shù)據(jù),如何使用查詢對數(shù)據(jù)進行分組和匯總,以及如何在不需要以規(guī)范化格式顯示數(shù)據(jù)時使用交叉表查詢。

好的數(shù)據(jù)設(shè)計的最終目標(biāo)就是要平衡兩個需要:既要隨著時間的推移有效地存儲數(shù)據(jù),又要輕松地檢索和分析數(shù)據(jù)。理解查詢的功能對正確設(shè)計表很有幫助。

數(shù)據(jù)庫規(guī)范化概念

這部分介紹數(shù)據(jù)庫規(guī)范化所涉及的基本概念,而不是對數(shù)據(jù)庫規(guī)范化進行理論性的探討。如何在您的實際情況中應(yīng)用這些概念可能會隨著應(yīng)用程序需要的不同而有所變化。這部分的目的是理解這些基本概念、根據(jù)實際需要應(yīng)用它們,并理解偏離這些概念將會出現(xiàn)哪些問題。

將唯一信息存儲在一個地方

大部分?jǐn)?shù)據(jù)庫開發(fā)人員都理解數(shù)據(jù)庫規(guī)范化的基本概念。理想情況下,您希望將相同的數(shù)據(jù)存儲在同一個地方,并在需要引用時使用 ID 來進行引用。因此,如果某些信息發(fā)生了變化,則可以在一個地方進行更改,而整個程序中的相應(yīng)信息也會隨之更改。

例如,客戶表會存儲每個客戶的記錄,包括姓名、地址、電話號碼、電子郵件地址以及其他特征信息。客戶表中可能包含唯一的 CustomerID 字段(通常是 Autonumber 字段),這個字段即該表的主鍵字段,其他表使用它來引用該客戶。因此,發(fā)票表可以只引用客戶的 ID 值,而不是在每張發(fā)票中存儲客戶的所有信息(因為同一個客戶可能會持有多張發(fā)票),這樣利用客戶的 ID 值即可從客戶表中查找客戶的詳細(xì)信息。使用 Access 中功能強大的窗體(使用組合框和子窗體),可以輕松地完成這項工作。如果需要修改客戶信息(例如新增電話號碼),只需在客戶表中修改,應(yīng)用程序中引用該信息的任何其他部分都會隨之自動更新。

使用正確規(guī)范化的數(shù)據(jù)庫,通過簡單的編輯即可輕松處理數(shù)據(jù)隨時間推移而發(fā)生的更改。使用未正確規(guī)范化的數(shù)據(jù)庫,通常需要利用編程或查詢來更改多條記錄或多個表。這不僅會增加工作量,還會增加由于未正確執(zhí)行代碼或查詢而導(dǎo)致數(shù)據(jù)不一致的可能性。

記錄是免費的,而新字段非常昂貴

理想的數(shù)據(jù)庫應(yīng)該只需要隨著時間的推移添加新的記錄,數(shù)據(jù)庫表應(yīng)該能夠保存大量記錄。但是,如果您發(fā)現(xiàn)需要增加更多字段,則可能會碰到設(shè)計問題。

電子表格專家經(jīng)常會遇到上述問題,因為他們習(xí)慣于按照設(shè)計電子表格的方式設(shè)計數(shù)據(jù)庫。設(shè)計經(jīng)常隨時間變化的字段(例如,年、季度、產(chǎn)品和銷售人員)需要在將來添加新字段。而正確的設(shè)計應(yīng)該是轉(zhuǎn)換信息并將隨時間變化的數(shù)據(jù)放在一個字段內(nèi),這樣就可以添加更多記錄。例如,只需創(chuàng)建“年”字段,然后在該字段中輸入各記錄相應(yīng)的年份值即可,無需為每年創(chuàng)建一個單獨的字段。

增加額外的字段可能會產(chǎn)生問題,因為表結(jié)構(gòu)的變化會對應(yīng)用程序的其他部分產(chǎn)生影響。在表中添加更多字段時,依賴該表的對象和代碼也需要更新。例如,查詢需要獲取額外的字段,窗體需要顯示這些字段,而報表則需要包含這些字段,等等。但是,如果數(shù)據(jù)已經(jīng)規(guī)范化,則現(xiàn)有對象會自動檢索新數(shù)據(jù),并正確計算或顯示這些數(shù)據(jù)。查詢功能尤其強大,因為它允許您按“年”字段進行分組,以逐年顯示摘要(不管表中包含哪些年份)。

但是,數(shù)據(jù)規(guī)范化并不意味著不能顯示或使用隨時間而變化或依賴時間的字段。需要瀏覽或顯示這類信息的開發(fā)人員通常可以使用交叉表查詢來達(dá)到這一目的。如果您不熟悉交叉表查詢,應(yīng)該學(xué)習(xí)如何使用它們。雖然它們與表有所不同(尤其是用戶無法編輯交叉表查詢的結(jié)果),但它們的確可以用于在數(shù)據(jù)表中顯示信息(最多可以達(dá)到 255 個字段)。如果要在報表中使用它們,則會更加復(fù)雜,因為報表需要包含額外的或不斷變化的字段名。這就是為什么大多數(shù)報表將數(shù)據(jù)作為獨立的分組(而不是獨立的列)顯示的原因。對于那些別無選擇的情況,您必須花時間去解決這個問題。希望所有人都能夠理解這種決定會隨著時間的變化對其他資源產(chǎn)生的影響。

這就是為什么增加記錄是免費的(這是數(shù)據(jù)庫的巨大優(yōu)勢)而增加字段是如此昂貴的原因。如果數(shù)據(jù)庫設(shè)計正確,則可以適應(yīng)各種各樣的變化。

了解何時需要復(fù)制數(shù)據(jù)

有時數(shù)據(jù)需要反規(guī)范化,以便保存可能會隨時間變化的信息。

在通過客戶 ID 號將發(fā)票鏈接到客戶表的簡單示例中,我們可能需要保留開出發(fā)票時的客戶地址(而不是制作發(fā)票時的地址,因為客戶信息在這兩個事件之間可能會有所變化)。如果開出發(fā)票時未保留客戶地址,而將來又必須更新客戶信息,則可能無法確定發(fā)送某些發(fā)票的確切地址。這可能會導(dǎo)致非常嚴(yán)重的商業(yè)問題。當(dāng)然,有些信息(如客戶的電話號碼)可以不保存。因此,應(yīng)該有選擇地決定需要復(fù)制哪些數(shù)據(jù)。

需要復(fù)制數(shù)據(jù)的另一個例子是填寫發(fā)票的明細(xì)項。報價單通常用于挑選客戶訂購的商品。我們可以只存儲報價單 ID,而 ID 指向包含產(chǎn)品說明、價格和其他詳細(xì)信息的報價單。但是,產(chǎn)品說明和價格會隨著時間而改變。如果不將數(shù)據(jù)從報價單復(fù)制到明細(xì)表中,將來則無法準(zhǔn)確地重新打印原始發(fā)票。如果您尚未收到付款,問題將非常嚴(yán)重。

因此,雖然規(guī)范化可以將相同的數(shù)據(jù)很好地保存在一個地方并能簡化編輯工作,但某些情況下卻不需要這些優(yōu)勢。如果以后由于歷史原因需要數(shù)據(jù)的快照,則必須從一開始就在數(shù)據(jù)庫中設(shè)計好。否則,一旦數(shù)據(jù)被覆蓋就無法再找回。

使用沒有確切含義的字段作為主鍵字段

為了提高效率,每個表都應(yīng)該有一個主鍵字段。主鍵字段定義了在表中的唯一性,并由索引在其他字段中使用,以提高搜索性能。例如,客戶表可以包含為每個客戶定義唯一編號的 CustomerID 字段。為了便于討論,假定表中包含多個字段,而不僅僅是簡單的單一表查找(例如國家/地區(qū)列表)。

一般來說,主鍵字段應(yīng)具有如下特征:

  • 應(yīng)該只包含一個字段
    可以將多個字段定義為表的主鍵字段,但最好是使用一個字段。首先,如果需要使用多個字段來定義唯一性,則需要占用更多的空間來存儲主鍵。其次,表中的其他索引還必須使用主鍵字段的組合,這樣所占用的空間比使用一個字段所占用的空間要多。最后,在表中標(biāo)識記錄需要獲取字段組合。使用一個 CustomerID 字段定義客戶比使用其他字段組合要好得多。 
  • 應(yīng)該為數(shù)字類型
    Access 提供的 AutoNumber 字段類型是一個 Long Integer(長整數(shù)),非常適用于主鍵字段。這些值可以自動保證每個記錄的唯一性,同時也支持多用戶數(shù)據(jù)輸入。 
  • 不會隨時間而改變
    主鍵字段不應(yīng)該隨時間而改變。一旦標(biāo)識了主鍵字段,就應(yīng)該永遠(yuǎn)不變(象社會保障號一樣)。更改過的主鍵字段將很難再使用歷史數(shù)據(jù),因為其中的鏈接被破壞了。 
  • 應(yīng)該沒有確切含義
    要確保主鍵字段不會隨時間而更改,它應(yīng)該沒有確切含義。沒有確切含義的主鍵值在其他數(shù)據(jù)不完整時也非常有用。例如,您可以指定一個客戶編號,而無需該客戶的完整地址。應(yīng)用程序的其余部分可以很好地工作,您也可以在檢索記錄時添加信息。如果表中使用了國家/地區(qū)字段或其他您沒有的標(biāo)識字段作為主鍵的一部分,則很可能會導(dǎo)致無法使用應(yīng)用程序。

鑒于上述原因,我們建議在大部分表中使用 AutoNumber 字段作為主鍵字段。通過使用組合框和隱藏列,可以將字段綁定到 AutoNumber 字段并將其隱藏,使用戶無法看到。

使用引用完整性

對表進行定義并理解各表是如何關(guān)聯(lián)的之后,請確保添加引用完整性來鞏固各表之間的關(guān)系。這樣可以避免錯誤地修改鏈接字段而留下孤立的記錄。Microsoft Jet 數(shù)據(jù)庫引擎支持復(fù)雜的引用完整性,允許用戶進行級聯(lián)更新和刪除。一般情況下,不應(yīng)修改 ID 字段。因此,級聯(lián)更新用得較少,但級聯(lián)刪除卻非常有用。

例如,如果發(fā)票表與訂單表相關(guān)聯(lián),其中的一張發(fā)票可能有無限多個訂單(明細(xì)項),并且每個訂單記錄包含它所鏈接的發(fā)票編號,則可以使用級聯(lián)刪除操作來刪除發(fā)票記錄,并自動刪除所有相應(yīng)的訂單記錄。這樣可以避免出現(xiàn)沒有相應(yīng)發(fā)票記錄的訂單記錄。

小結(jié)

我們希望您能盡快將這些數(shù)據(jù)庫設(shè)計概念應(yīng)用到您的應(yīng)用程序設(shè)計中,從而最大程度地減少問題,減少未實現(xiàn)此類設(shè)計時需要進行的修正。祝您好運。

posted on 2007-06-09 22:31 星夢情緣 閱讀(1207) 評論(3)  編輯 收藏 引用 所屬分類: 關(guān)于編程

評論:
# re: 數(shù)據(jù)庫規(guī)范化設(shè)計技巧 2007-06-10 21:57 | 黃大仙
# re: 數(shù)據(jù)庫規(guī)范化設(shè)計技巧 2007-06-10 21:58 | 黃大仙
# re: 數(shù)據(jù)庫規(guī)范化設(shè)計技巧 2007-06-10 22:16 | 星夢情緣
嘿嘿,你是???  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美资源在线| 一本大道久久a久久精二百| 国产九九视频一区二区三区| 欧美精品一区二区在线播放| 欧美噜噜久久久xxx| 欧美午夜精彩| 国模叶桐国产精品一区| 一区二区三区在线看| 亚洲人成免费| 亚洲一卡久久| 欧美一区二区三区四区视频| 久久久久中文| 亚洲片国产一区一级在线观看| 欧美激情a∨在线视频播放| 91久久精品国产91久久| 亚洲一区二区三| 久久国产免费| 欧美日韩国内自拍| 国产女主播在线一区二区| 一区二区三区在线免费视频| 99国产一区| 久久久久久夜| 99热这里只有成人精品国产| 久久国产精品久久久| 亚洲一区日韩| 亚洲激情av在线| 欧美福利视频网站| 久久免费黄色| 亚洲第一毛片| 欧美性感一类影片在线播放| 欧美日韩精品免费观看视频完整 | 亚洲电影免费观看高清完整版在线观看 | 欧美一区亚洲| 欧美二区不卡| 国产日韩视频一区二区三区| 一区二区电影免费在线观看| 蜜臀91精品一区二区三区| 一本一本a久久| 免费黄网站欧美| 国产综合18久久久久久| 亚洲一区二区免费视频| 欧美国产欧美综合| 久久精品视频在线观看| 国产欧美日韩精品一区| 亚洲在线成人| 99re6这里只有精品| 老司机aⅴ在线精品导航| 国产日韩欧美制服另类| 欧美一级理论片| 亚洲人体偷拍| 欧美精品手机在线| 亚洲精品影院在线观看| 免费欧美在线视频| 久久久综合视频| 激情久久综合| 美女脱光内衣内裤视频久久影院| 性欧美xxxx大乳国产app| 国产精品一区视频| 久久精品国产精品亚洲精品| 亚洲免费小视频| 国产精品视频免费观看www| 亚洲一区三区视频在线观看| 一本色道88久久加勒比精品| 欧美日韩免费| 亚洲欧美www| 亚洲女同在线| 国内精品国语自产拍在线观看| 欧美中日韩免费视频| 亚洲视频久久| 国产色综合天天综合网| 久久夜色精品亚洲噜噜国产mv| 欧美在线3区| 国产精品久久久久久影视| 亚洲国产另类久久精品| 噜噜噜91成人网| 久久久久久9999| 亚洲高清精品中出| 最近中文字幕mv在线一区二区三区四区 | 中文高清一区| 亚洲香蕉成视频在线观看| 国产精品免费看片| 久久蜜桃资源一区二区老牛 | 国产精品日本一区二区| 久久激情综合网| 久久久久久久久一区二区| 亚洲精品国精品久久99热一| 日韩视频在线观看一区二区| 国产精品你懂的在线欣赏| 久久婷婷av| 欧美日韩视频| 久久免费黄色| 欧美区日韩区| 久久久99精品免费观看不卡| 免费视频久久| 欧美一区亚洲二区| 欧美不卡在线| 欧美在线首页| 欧美精品色一区二区三区| 久久精彩免费视频| 欧美日韩国产综合视频在线观看中文 | 亚洲一区www| 乱人伦精品视频在线观看| 午夜国产精品视频| 免费高清在线视频一区·| 欧美一级一区| 欧美日韩国产91| 老司机久久99久久精品播放免费 | 亚洲欧美在线x视频| 亚洲经典自拍| 欧美夜福利tv在线| 一本色道久久综合一区| 久久精品日韩一区二区三区| 亚洲综合国产| 欧美日韩成人网| 欧美国产精品人人做人人爱| 国产私拍一区| 亚洲一区观看| 亚洲一区二区三区在线观看视频| 久久―日本道色综合久久| 午夜视频一区| 国产精品久久久久久久久| 欧美国产日韩a欧美在线观看| 欧美亚洲综合另类| 欧美日韩一区二区三区在线| 久久蜜臀精品av| 国产人妖伪娘一区91| 一个人看的www久久| 99热精品在线| 欧美aa国产视频| 免费永久网站黄欧美| 国产视频久久久久久久| 中文精品视频| 中国av一区| 蘑菇福利视频一区播放| 激情校园亚洲| 久久精品国产欧美激情| 久久一二三国产| 激情五月综合色婷婷一区二区| 亚洲欧美日本国产有色| 午夜精品视频在线观看| 国产精品久久久久久久久搜平片 | 欧美福利视频一区| 亚洲国产精品成人综合| 亚洲伦理在线| 欧美日韩亚洲综合一区| 一区二区毛片| 欧美主播一区二区三区美女 久久精品人| 欧美涩涩视频| 亚洲欧美久久久久一区二区三区| 欧美一区二区视频97| 国产在线欧美| 久久婷婷色综合| 亚洲精品色婷婷福利天堂| 亚洲欧美日韩国产中文在线| 国产精品亚洲综合久久| 久久久精品tv| 亚洲区在线播放| 香蕉乱码成人久久天堂爱免费| 国产亚洲精品资源在线26u| 久久se精品一区精品二区| 男女激情久久| 在线视频欧美日韩| 国产日韩一区二区| 久热综合在线亚洲精品| 日韩亚洲欧美在线观看| 久久久7777| 夜久久久久久| 国模私拍视频一区| 欧美激情一区二区三区不卡| 亚洲神马久久| 欧美成人精品福利| 亚洲免费影视| 激情成人av在线| 欧美日韩综合| 久久一二三国产| 中文网丁香综合网| 免费成人激情视频| 午夜精品一区二区三区四区| 在线欧美视频| 国产精品丝袜久久久久久app| 猛干欧美女孩| 欧美一区二区三区四区视频| 亚洲伦理中文字幕| 久久综合九色综合欧美就去吻| 99re6这里只有精品视频在线观看| 亚洲人成77777在线观看网| 欧美国产视频一区二区| 亚洲福利小视频| 国产精品久久二区| 亚洲欧美区自拍先锋| 日韩一级片网址| 亚洲高清中文字幕| 巨胸喷奶水www久久久免费动漫| 欧美午夜不卡视频| 伊人久久成人| 在线亚洲欧美视频| 亚洲精美视频| 国产精品一二一区| 欧美日韩黄色一区二区| 久久精视频免费在线久久完整在线看 |