簡介
在設(shè)計數(shù)據(jù)庫時,最重要的步驟是要確保數(shù)據(jù)正確分布到數(shù)據(jù)庫的表中。使用正確的數(shù)據(jù)結(jié)構(gòu),可以極大地簡化應(yīng)用程序的其他內(nèi)容(查詢、窗體、報表、代碼等)。正確進(jìn)行表設(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ù)是否都存在。對項(xiàng)目損失的莫過于在項(xiàng)目后期發(fā)現(xiàn)重要報表缺少數(shù)據(jù)。
知道需要什么樣的數(shù)據(jù)后,就必須確定數(shù)據(jù)的來源。數(shù)據(jù)是否從其他數(shù)據(jù)源中導(dǎo)入?數(shù)據(jù)是否需要清理或驗(yàn)證?用戶是否需要輸入數(shù)據(jù)?
明確所需數(shù)據(jù)的類型和來源是數(shù)據(jù)庫設(shè)計的第一步。
您打算如何處理這些數(shù)據(jù)?
用戶是否需要編輯這些數(shù)據(jù)?如果需要,應(yīng)如何顯示數(shù)據(jù)以便于用戶理解和編輯?有沒有驗(yàn)證規(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)時使用時效果非常好,但是,常常會因?yàn)橛脩粜薷臄?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ā)生哪些變化,可以實(shí)現(xiàn)更好的設(shè)計,減少問題的發(fā)生。
學(xué)習(xí)如何使用查詢
了解如何分析和管理數(shù)據(jù)同樣很重要。您應(yīng)該深刻理解查詢的工作原理,理解如何使用查詢在多個表之間鏈接數(shù)據(jù),如何使用查詢對數(shù)據(jù)進(jìn)行分組和匯總,以及如何在不需要以規(guī)范化格式顯示數(shù)據(jù)時使用交叉表查詢。
好的數(shù)據(jù)設(shè)計的最終目標(biāo)就是要平衡兩個需要:既要隨著時間的推移有效地存儲數(shù)據(jù),又要輕松地檢索和分析數(shù)據(jù)。理解查詢的功能對正確設(shè)計表很有幫助。
在設(shè)計數(shù)據(jù)庫時,最重要的步驟是要確保數(shù)據(jù)正確分布到數(shù)據(jù)庫的表中。使用正確的數(shù)據(jù)結(jié)構(gòu),可以極大地簡化應(yīng)用程序的其他內(nèi)容(查詢、窗體、報表、代碼等)。正確進(jìn)行表設(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ù)是否都存在。對項(xiàng)目損失的莫過于在項(xiàng)目后期發(fā)現(xiàn)重要報表缺少數(shù)據(jù)。
知道需要什么樣的數(shù)據(jù)后,就必須確定數(shù)據(jù)的來源。數(shù)據(jù)是否從其他數(shù)據(jù)源中導(dǎo)入?數(shù)據(jù)是否需要清理或驗(yàn)證?用戶是否需要輸入數(shù)據(jù)?
明確所需數(shù)據(jù)的類型和來源是數(shù)據(jù)庫設(shè)計的第一步。
您打算如何處理這些數(shù)據(jù)?
用戶是否需要編輯這些數(shù)據(jù)?如果需要,應(yīng)如何顯示數(shù)據(jù)以便于用戶理解和編輯?有沒有驗(yàn)證規(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)時使用時效果非常好,但是,常常會因?yàn)橛脩粜薷臄?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ā)生哪些變化,可以實(shí)現(xiàn)更好的設(shè)計,減少問題的發(fā)生。
學(xué)習(xí)如何使用查詢
了解如何分析和管理數(shù)據(jù)同樣很重要。您應(yīng)該深刻理解查詢的工作原理,理解如何使用查詢在多個表之間鏈接數(shù)據(jù),如何使用查詢對數(shù)據(jù)進(jìn)行分組和匯總,以及如何在不需要以規(guī)范化格式顯示數(shù)據(jù)時使用交叉表查詢。
好的數(shù)據(jù)設(shè)計的最終目標(biāo)就是要平衡兩個需要:既要隨著時間的推移有效地存儲數(shù)據(jù),又要輕松地檢索和分析數(shù)據(jù)。理解查詢的功能對正確設(shè)計表很有幫助。