1. 原始單據與實體(tǐ)之間(jiān)的關系
可(kě)以是一對一、一對多(duō)、多(duō)對多(duō)的關系。在一般情況下,它們是一對一的關系:即一張原始單據對應且隻對應一個(gè)實體(tǐ)。
在特殊情況下,它們可(kě)能是一對多(duō)或多(duō)對一的關系,即一張原始單證對應多(duō)個(gè)實體(tǐ),或多(duō)張原始單證對應一個(gè)實體(tǐ)。
這裏的實體(tǐ)可(kě)以理(lǐ)解為(wèi)基本表。明(míng)确這種對應關系後,對我們設計(jì)錄入界面大(dà)有(yǒu)好處。
〖例1〗:一份員工履曆資料,在人(rén)力資源信息系統中,就對應三個(gè)基本表:員工基本情況表、社會(huì)關系表、工作(zuò)簡曆表。
這就是“一張原始單證對應多(duō)個(gè)實體(tǐ)”的典型例子。
2. 主鍵與外鍵
一般而言,一個(gè)實體(tǐ)不能既無主鍵又無外鍵。在E—R 圖中, 處于葉子部位的實體(tǐ), 可(kě)以定義主鍵,也可(kě)以不定義主鍵(因為(wèi)它無子孫), 但(dàn)必須要有(yǒu)外鍵(因為(wèi)它有(yǒu)父親)。
主鍵與外鍵的設計(jì),在全局數(shù)據庫的設計(jì)中,占有(yǒu)重要地位。當全局數(shù)據庫的設計(jì)完成以後,有(yǒu)個(gè)美國數(shù)據庫設計(jì)專家(jiā)說:“鍵,到處都是鍵,除了鍵之外,什麽也沒有(yǒu)”,這就是他的數(shù)據庫設計(jì)經驗之談,也反映了他對信息系統核心(數(shù)據模型)的高(gāo)度抽象思想。因為(wèi):主鍵是實體(tǐ)的高(gāo)度抽象,主鍵與外鍵的配對,表示實體(tǐ)之間(jiān)的連接。
3. 基本表的性質
基本表與中間(jiān)表、臨時(shí)表不同,因為(wèi)它具有(yǒu)如下四個(gè)特性:
(1) 原子性。基本表中的字段是不可(kě)再分解的。
(2) 原始性。基本表中的記錄是原始數(shù)據(基礎數(shù)據)的記錄。
(3) 演繹性。由基本表與代碼表中的數(shù)據,可(kě)以派生(shēng)出所有(yǒu)的輸出數(shù)據。
(4) 穩定性。基本表的結構是相對穩定的,表中的記錄是要長期保存的。
理(lǐ)解基本表的性質後,在設計(jì)數(shù)據庫時(shí),就能将基本表與中間(jiān)表、臨時(shí)表區(qū)分開(kāi)來(lái)。
4. 範式标準
基本表及其字段之間(jiān)的關系, 應盡量滿足第三範式。但(dàn)是,滿足第三範式的數(shù)據庫設計(jì),往往不是最好的設計(jì)。
為(wèi)了提高(gāo)數(shù)據庫的運行(xíng)效率,常常需要降低(dī)範式标準:适當增加冗餘,達到以空(kōng)間(jiān)換時(shí)間(jiān)的目的。
〖例2〗:有(yǒu)一張存放商品的基本表,如表1所示。“金額”這個(gè)字段的存在,表明(míng)該表的設計(jì)不滿足第三範式,因為(wèi)“金額”可(kě)以由“單價”乘以“數(shù)量”得(de)到,說明(míng)“金額”是冗餘字段。但(dàn)是,增加“金額”這個(gè)冗餘字段,可(kě)以提高(gāo)查詢統計(jì)的速度,這就是以空(kōng)間(jiān)換時(shí)間(jiān)的作(zuò)法。
在Rose 2002中,規定列有(yǒu)兩種類型:數(shù)據列和(hé)計(jì)算(suàn)列。“金額”這樣的列被稱為(wèi)“計(jì)算(suàn)列”,而“單價”和(hé)“數(shù)量”這樣的列被稱為(wèi)“數(shù)據列”。
通(tōng)俗地理(lǐ)解三個(gè)範式,對于數(shù)據庫設計(jì)大(dà)有(yǒu)好處。在數(shù)據庫設計(jì)中,為(wèi)了更好地應用三個(gè)範式,就必須通(tōng)俗地理(lǐ)解三個(gè)範式(通(tōng)俗地理(lǐ)解是夠用的理(lǐ)解,并不是最科學最準确的理(lǐ)解):
第一範式:1NF是對屬性的原子性約束,要求屬性具有(yǒu)原子性,不可(kě)再分解;
第二範式:2NF是對記錄的惟一性約束,要求記錄有(yǒu)惟一标識,即實體(tǐ)的惟一性;
第三範式:3NF是對字段冗餘性的約束,即任何字段不能由其他字段派生(shēng)出來(lái),它要求字段沒有(yǒu)冗餘。
沒有(yǒu)冗餘的數(shù)據庫設計(jì)可(kě)以做(zuò)到。但(dàn)是,沒有(yǒu)冗餘的數(shù)據庫未必是最好的數(shù)據庫,有(yǒu)時(shí)為(wèi)了提高(gāo)運行(xíng)效率,就必須降低(dī)範式标準,适當保留冗餘數(shù)據。具體(tǐ)做(zuò)法是:在概念數(shù)據模型設計(jì)時(shí)遵守第三範式,降低(dī)範式标準的工作(zuò)放到物理(lǐ)數(shù)據模型設計(jì)時(shí)考慮。降低(dī)範式就是增加字段,允許冗餘。
6. 要善于識别與正确處理(lǐ)多(duō)對多(duō)的關系
若兩個(gè)實體(tǐ)之間(jiān)存在多(duō)對多(duō)的關系,則應消除這種關系。消除的辦法是,在兩者之間(jiān)增加第三個(gè)實體(tǐ)。這樣,原來(lái)一個(gè)多(duō)對多(duō)的關系,現在變為(wèi)兩個(gè)一對多(duō)的關系。要将原來(lái)兩個(gè)實體(tǐ)的屬性合理(lǐ)地分配到三個(gè)實體(tǐ)中去。這裏的第三個(gè)實體(tǐ),實質上(shàng)是一個(gè)較複雜的關系,它對應一張基本表。一般來(lái)講,數(shù)據庫設計(jì)工具不能識别多(duō)對多(duō)的關系,但(dàn)能處理(lǐ)多(duō)對多(duō)的關系。
〖例3〗:在“圖書(shū)館信息系統”中,“圖書(shū)”是一個(gè)實體(tǐ),“讀者”也是一個(gè)實體(tǐ)。這兩個(gè)實體(tǐ)之間(jiān)的關系,是一個(gè)典型的多(duō)對多(duō)關系:一本圖書(shū)在不同時(shí)間(jiān)可(kě)以被多(duō)個(gè)讀者借閱,一個(gè)讀者又可(kě)以借多(duō)本圖書(shū)。為(wèi)此,要在二者之間(jiān)增加第三個(gè)實體(tǐ),該實體(tǐ)取名為(wèi)“借還(hái)書(shū)”,它的屬性為(wèi):借還(hái)時(shí)間(jiān)、借還(hái)标志(zhì)(0表示借書(shū),1表示還(hái)書(shū)),另外,它還(hái)應該有(yǒu)兩個(gè)外鍵(“圖書(shū)”的主鍵,“讀者”的主鍵),使它能與“圖書(shū)”和(hé)“讀者”連接。
7. 主鍵PK的取值方法
PK是供程序員使用的表間(jiān)連接工具,可(kě)以是一無物理(lǐ)意義的數(shù)字串, 由程序自動加1來(lái)實現。也可(kě)以是有(yǒu)物理(lǐ)意義的字段名或字段名的組合。不過前者比後者好。當PK是字段名的組合時(shí),建議字段的個(gè)數(shù)不要太多(duō),多(duō)了不但(dàn)索引占用空(kōng)間(jiān)大(dà),而且速度也慢。
8. 正确認識數(shù)據冗餘
主鍵與外鍵在多(duō)表中的重複出現, 不屬于數(shù)據冗餘,這個(gè)概念必須清楚,事實上(shàng)有(yǒu)許多(duō)人(rén)還(hái)不清楚。非鍵字段的重複出現, 才是數(shù)據冗餘!而且是一種低(dī)級冗餘,即重複性的冗餘。高(gāo)級冗餘不是字段的重複出現,而是字段的派生(shēng)出現。
〖例4〗:商品中的“單價、數(shù)量、金額”三個(gè)字段,“金額”就是由“單價”乘以“數(shù)量”派生(shēng)出來(lái)的,它就是冗餘,而且是一種高(gāo)級冗餘。冗餘的目的是為(wèi)了提高(gāo)處理(lǐ)速度。隻有(yǒu)低(dī)級冗餘才會(huì)增加數(shù)據的不一緻性,因為(wèi)同一數(shù)據,可(kě)能從不同時(shí)間(jiān)、地點、角色上(shàng)多(duō)次錄入。因此,我們提倡高(gāo)級冗餘(派生(shēng)性冗餘),反對低(dī)級冗餘(重複性冗餘)。
9. E--R圖沒有(yǒu)标準答(dá)案
信息系統的E--R圖沒有(yǒu)标準答(dá)案,因為(wèi)它的設計(jì)與畫(huà)法不是惟一的,隻要它覆蓋了系統需求的業務範圍和(hé)功能內(nèi)容,就是可(kě)行(xíng)的。反之要修改E--R圖。盡管它沒有(yǒu)惟一的标準答(dá)案,并不意味着可(kě)以随意設計(jì)。好的E—R圖的标準是:結構清晰、關聯簡潔、實體(tǐ)個(gè)數(shù)适中、屬性分配合理(lǐ)、沒有(yǒu)低(dī)級冗餘。
10 . 視(shì)圖技(jì)術(shù)在數(shù)據庫設計(jì)中很(hěn)有(yǒu)用
與基本表、代碼表、中間(jiān)表不同,視(shì)圖是一種虛表,它依賴數(shù)據源的實表而存在。視(shì)圖是供程序員使用數(shù)據庫的一個(gè)窗口,是基表數(shù)據綜合的一種形式, 是數(shù)據處理(lǐ)的一種方法,是用戶數(shù)據保密的一種手段。為(wèi)了進行(xíng)複雜處理(lǐ)、提高(gāo)運算(suàn)速度和(hé)節省存儲空(kōng)間(jiān), 視(shì)圖的定義深度一般不得(de)超過三層。 若三層視(shì)圖仍不夠用, 則應在視(shì)圖上(shàng)定義臨時(shí)表,在臨時(shí)表上(shàng)再定義視(shì)圖。這樣反複交叠定義, 視(shì)圖的深度就不受限制(zhì)了。
對于某些(xiē)與國家(jiā)政治、經濟、技(jì)術(shù)、軍事和(hé)安全利益有(yǒu)關的信息系統,視(shì)圖的作(zuò)用更加重要。這些(xiē)系統的基本表完成物理(lǐ)設計(jì)之後,立即在基本表上(shàng)建立第一層視(shì)圖,這層視(shì)圖的個(gè)數(shù)和(hé)結構,與基本表的個(gè)數(shù)和(hé)結構是完全相同。
并且規定,所有(yǒu)的程序員,一律隻準在視(shì)圖上(shàng)操作(zuò)。隻有(yǒu)數(shù)據庫管理(lǐ)員,帶着多(duō)個(gè)人(rén)員共同掌握的“安全鑰匙”,才能直接在基本表上(shàng)操作(zuò)。請(qǐng)讀者想想:這是為(wèi)什麽?
11. 中間(jiān)表、報表和(hé)臨時(shí)表
中間(jiān)表是存放統計(jì)數(shù)據的表,它是為(wèi)數(shù)據倉庫、輸出報表或查詢結果而設計(jì)的,有(yǒu)時(shí)它沒有(yǒu)主鍵與外鍵(數(shù)據倉庫除外)。臨時(shí)表是程序員個(gè)人(rén)設計(jì)的,存放臨時(shí)記錄,為(wèi)個(gè)人(rén)所用。基表和(hé)中間(jiān)表由DBA維護,臨時(shí)表由程序員自己用程序自動維護。
12. 完整性約束表現在三個(gè)方面
域的完整性:用Check來(lái)實現約束,在數(shù)據庫設計(jì)工具中,對字段的取值範圍進行(xíng)定義時(shí),有(yǒu)一個(gè)Check按鈕,通(tōng)過它定義字段的值城。
參照完整性:用PK、FK、表級觸發器(qì)來(lái)實現。
用戶定義完整性:它是一些(xiē)業務規則,用存儲過程和(hé)觸發器(qì)來(lái)實現。
13. 防止數(shù)據庫設計(jì)打補丁的方法是“三少(shǎo)原則”
(1) 一個(gè)數(shù)據庫中表的個(gè)數(shù)越少(shǎo)越好。隻有(yǒu)表的個(gè)數(shù)少(shǎo)了,才能說明(míng)系統的E--R圖少(shǎo)而精,去掉了重複的多(duō)餘的實體(tǐ),形成了對客觀世界的高(gāo)度抽象,進行(xíng)了系統的數(shù)據集成,防止了打補丁式的設計(jì);
(2) 一個(gè)表中組合主鍵的字段個(gè)數(shù)越少(shǎo)越好。因為(wèi)主鍵的作(zuò)用,一是建主鍵索引,二是做(zuò)為(wèi)子表的外鍵,所以組合主鍵的字段個(gè)數(shù)少(shǎo)了,不僅節省了運行(xíng)時(shí)間(jiān),而且節省了索引存儲空(kōng)間(jiān);
(3) 一個(gè)表中的字段個(gè)數(shù)越少(shǎo)越好。隻有(yǒu)字段的個(gè)數(shù)少(shǎo)了,才能說明(míng)在系統中不存在數(shù)據重複,且很(hěn)少(shǎo)有(yǒu)數(shù)據冗餘,更重要的是督促讀者學會(huì)“列變行(xíng)”,這樣就防止了将子表中的字段拉入到主表中去,在主表中留下許多(duō)空(kōng)餘的字段。所謂“列變行(xíng)”,就是将主表中的一部分內(nèi)容拉出去,另外單獨建一個(gè)子表。這個(gè)方法很(hěn)簡單,有(yǒu)的人(rén)就是不習慣、不采納、不執行(xíng)。
數(shù)據庫設計(jì)的實用原則是:在數(shù)據冗餘和(hé)處理(lǐ)速度之間(jiān)找到合适的平衡點。“三少(shǎo)”是一個(gè)整體(tǐ)概念,綜合觀點,不能孤立某一個(gè)原則。該原則是相對的,不是絕對的。“三多(duō)”原則肯定是錯誤的。試想:若覆蓋系統同樣的功能,一百個(gè)實體(tǐ)(共一千個(gè)屬性) 的E--R圖,肯定比二百個(gè)實體(tǐ)(共二千個(gè)屬性) 的E--R圖,要好得(de)多(duō)。
提倡“三少(shǎo)”原則,是叫讀者學會(huì)利用數(shù)據庫設計(jì)技(jì)術(shù)進行(xíng)系統的數(shù)據集成。數(shù)據集成的步驟是将文件系統集成為(wèi)應用數(shù)據庫,将應用數(shù)據庫集成為(wèi)主題數(shù)據庫,将主題數(shù)據庫集成為(wèi)全局綜合數(shù)據庫。集成的程度越高(gāo),數(shù)據共享性就越強,信息孤島現象就越少(shǎo),整個(gè)企業信息系統的全局E—R圖中實體(tǐ)的個(gè)數(shù)、主鍵的個(gè)數(shù)、屬性的個(gè)數(shù)就會(huì)越少(shǎo)。
提倡“三少(shǎo)”原則的目的,是防止讀者利用打補丁技(jì)術(shù),不斷地對數(shù)據庫進行(xíng)增删改,使企業數(shù)據庫變成了随意設計(jì)數(shù)據庫表的“垃圾堆”,或數(shù)據庫表的“大(dà)雜院”,最後造成數(shù)據庫中的基本表、代碼表、中間(jiān)表、臨時(shí)表雜亂無章,不計(jì)其數(shù),導緻企事業單位的信息系統無法維護而癱瘓。
“三多(duō)”原則任何人(rén)都可(kě)以做(zuò)到,該原則是“打補丁方法”設計(jì)數(shù)據庫的歪理(lǐ)學說。“三少(shǎo)”原則是少(shǎo)而精的原則,它要求有(yǒu)較高(gāo)的數(shù)據庫設計(jì)技(jì)巧與藝術(shù),不是任何人(rén)都能做(zuò)到的,因為(wèi)該原則是杜絕用“打補丁方法”設計(jì)數(shù)據庫的理(lǐ)論依據。
14. 提高(gāo)數(shù)據庫運行(xíng)效率的辦法
在給定的系統硬件和(hé)系統軟件條件下,提高(gāo)數(shù)據庫系統的運行(xíng)效率的辦法是:
(1) 在數(shù)據庫物理(lǐ)設計(jì)時(shí),降低(dī)範式,增加冗餘, 少(shǎo)用觸發器(qì), 多(duō)用存儲過程。
(2) 當計(jì)算(suàn)非常複雜、而且記錄條數(shù)非常巨大(dà)時(shí)(例如一千萬條),複雜計(jì)算(suàn)要先在數(shù)據庫外面,以文件系統方式用C++語言計(jì)算(suàn)處理(lǐ)完成之後,最後才入庫追加到表中去。這是電(diàn)信計(jì)費系統設計(jì)的經驗。
(3) 發現某個(gè)表的記錄太多(duō),例如超過一千萬條,則要對該表進行(xíng)水(shuǐ)平分割。水(shuǐ)平分割的做(zuò)法是,以該表主鍵PK的某個(gè)值為(wèi)界線,将該表的記錄水(shuǐ)平分割為(wèi)兩個(gè)表。若發現某個(gè)表的字段太多(duō),例如超過八十個(gè),則垂直分割該表,将原來(lái)的一個(gè)表分解為(wèi)兩個(gè)表。
(4) 對數(shù)據庫管理(lǐ)系統DBMS進行(xíng)系統優化,即優化各種系統參數(shù),如緩沖區(qū)個(gè)數(shù)。
(5) 在使用面向數(shù)據的SQL語言進行(xíng)程序設計(jì)時(shí),盡量采取優化算(suàn)法。
總之,要提高(gāo)數(shù)據庫的運行(xíng)效率,必須從數(shù)據庫系統級優化、數(shù)據庫設計(jì)級優化、程序實現級優化,這三個(gè)層次上(shàng)同時(shí)下功夫。
上(shàng)述十四個(gè)技(jì)巧,是許多(duō)人(rén)在大(dà)量的數(shù)據庫分析與設計(jì)實踐中,逐步總結出來(lái)的。對于這些(xiē)經驗的運用,讀者不能生(shēng)幫硬套,死記硬背,而要消化理(lǐ)解,實事求是,靈活掌握。并逐步做(zuò)到:在應用中發展,在發展中應用。
本文由重慶網站(zhàn)建設-中技(jì)互聯:www.zjcoo.com
企業網站(zhàn)建設解決方案 營銷型網站(zhàn)建設解決方案 行(xíng)業門(mén)戶網站(zhàn)建設解決方案 外貿網站(zhàn)解建設決方案 品牌形象網站(zhàn)建設解決方案 購物商城網站(zhàn)建設解決方案 政府網站(zhàn)建設解決方案 手機網站(zhàn)建設解決方案 教育培訓網站(zhàn)建設解決方案 珠寶高(gāo)端奢飾品網站(zhàn)建設解決方案 房(fáng)地産、地産項目網站(zhàn)建設解決方案 集團、上(shàng)市企業網站(zhàn)建設解決方案 數(shù)碼、電(diàn)子産品網站(zhàn)建設解決方案 美容、化妝品行(xíng)業網站(zhàn)建設解決方案
10年專業互聯網服務經驗 重慶最專業網站(zhàn)團隊 資深行(xíng)業分析策劃 B2C營銷型網站(zhàn)建設領先者 最前沿視(shì)覺設計(jì)、研發能力 時(shí)刻最新技(jì)術(shù)領先研發能力 具有(yǒu)完備的項目管理(lǐ) 完善的售後服務體(tǐ)系 深厚的網絡運營經驗
中技(jì)互聯一直秉承專業、誠信、服務、進取的價值觀,堅持優秀的商業道(dào)德,以用戶最終價值為(wèi)導向,向用戶提供優質産品和(hé)優質服務,從而赢得(de)了用戶的信賴。始終以不懈的努力、更高(gāo)的目标來(lái)要求自己。
主營業務:網站(zhàn)建設 | 重慶網站(zhàn)建設 | 重慶網站(zhàn)設計(jì) | 重慶網站(zhàn)制(zhì)作(zuò) | 重慶網頁設計(jì) | 重慶網站(zhàn)開(kāi)發
CopyrightZJCOO technology Co., LTD. All Rights Reserved.
渝ICP 備11003429号