Microsoft Access 是一種關(guān)系型數(shù)據(jù)庫開發(fā)系統(tǒng)。Access 數(shù)據(jù)存儲在相關(guān)的表中,一個表中的數(shù)據(jù)(例如客戶〉與另一個表中的數(shù)據(jù)(例如定單〉是相關(guān)的。Access 維護(hù)了相關(guān)表之間的關(guān)系,然后提取客戶和該客戶的所有定單變得更容易,同時不會導(dǎo)致數(shù)據(jù)丟失或者提取他人的定單記錄。
1.2.1 使用多個表,
多個表可以通過減少冗余數(shù)據(jù)的輸入量來簡化數(shù)據(jù)項(xiàng)和報表。例如,通過為一個需要使用客戶信息的應(yīng)用程序定義兩個表,就不需要在客戶每次購買商品時存儲該客戶的名稱和地址。
創(chuàng)建完表之后,需要讓它們關(guān)聯(lián)起來。例如,如果創(chuàng)建了一個Contacts 表和一個Sales 表,則必須建立Contacts 表和Sales 表之間的聯(lián)系以便于查看一個聯(lián)系人的所有銷售記錄。如果只有一個表,就必須重復(fù)查看每個銷售記錄對應(yīng)的聯(lián)系人姓名和地址。使用兩個表就可以使用關(guān)系字段Contact ID C 在Contacts 中)和Buyer ID C 在Sales 中)來查看Contacts 表中每次銷售的對應(yīng)信息。例如,客戶改變地址時,只是在Contact 表中的一個記錄中變更了地址; Sales 信息顯示在屏幕上時,始終可以看到正確的聯(lián)系人地址。
由于特定類型的所有記錄都在同一表內(nèi),所以將數(shù)據(jù)分離到數(shù)據(jù)庫中的多個表內(nèi)可以便系統(tǒng)變得更易于維護(hù)。花些時間將數(shù)據(jù)正確放入多個表內(nèi),可以大幅縮短設(shè)計(jì)和工作時間。這一過程稱為卻/iJIt C 可以在第2 章了解規(guī)范化)。
在本章后面的"5 步驟設(shè)計(jì)方法"小節(jié)中,將有機(jī)會了解Access Auto Auctions 案例研究,該案例包含了5 個表。
1.2.2 了解創(chuàng)建多個表的原因
創(chuàng)建多個表總會使數(shù)據(jù)庫的初級用戶望而卻步。通常,他們希望創(chuàng)建一個包含全部所需信息的巨型表,在這個例子中,可以構(gòu)建一個包含所有客戶銷售情況以及每個客戶的出售和購買情況的Customer 表。
因此,他們就創(chuàng)建)個包含有多個字段的表,其中包含了客戶信息(聯(lián)系人)、銷售信息字段(銷售日期、銷售人員、支付數(shù)額、折扣等),以及每次銷售的產(chǎn)品信息(銷售量、產(chǎn)品描述、單價等)。這種表會迅速增大,包含許多無法管理的字段,并且隨著新項(xiàng)目的添加而繼續(xù)增大。
可以看到,表設(shè)計(jì)有著自己的生命力。創(chuàng)建完這種單獨(dú)的表后,維護(hù)就會變得更難。就會開始意識到必須為客戶進(jìn)行的每筆銷售輸入客戶信息(一次次地重復(fù)輸入客戶信息)。對于每筆銷售的購買項(xiàng)目來說亦是如此,即一筆銷售包含多個項(xiàng)目(于是需要再次重復(fù)該信息〉。這會使系統(tǒng)變得低效并且易于出現(xiàn)數(shù)據(jù)輸入錯誤。存儲在表中的信息也無法進(jìn)行有效的維護(hù),因?yàn)樵S多字段可能會不適合每個記錄,并且在表的結(jié)束處會出現(xiàn)大量空字段。
為了確保系統(tǒng)易用并且具有足夠的增長靈活性,創(chuàng)建多個包含最少量信息的表就顯得尤為重要。要實(shí)現(xiàn)這-點(diǎn),需要考慮創(chuàng)建多個表,其中每個表都包含很多具有多個字段的記錄,記錄中的信息只與該表的主要目的有關(guān)。這樣,創(chuàng)建表之后,就可以把它們進(jìn)行鏈接,以便從中收集有用信息。盡管這個過程昕起來很復(fù)雜,但實(shí)際的實(shí)現(xiàn)卻相當(dāng)容易。將一個表的內(nèi)容創(chuàng)建為多個表的過程稱為卻應(yīng)佐(或者說是規(guī)范化表)。