数据库设计原理
2016.12.6
十九.數(shù)據(jù)庫設(shè)計(jì)原理
數(shù)據(jù)庫設(shè)計(jì)要解決的兩個(gè)問題:
(1)如何把數(shù)據(jù)組織到一組相關(guān)的表中?
(2)在每個(gè)表中應(yīng)該放什么樣的數(shù)據(jù)元素?
18.1 規(guī)范化
規(guī)范化的目標(biāo):
(1)消除冗余數(shù)據(jù)。
(2)消除插入、刪除和更新異常。
規(guī)范化是指在數(shù)據(jù)庫設(shè)計(jì)中消除冗余和更新異常所采取的一系列步驟,這些步驟通常稱為第一范式,第二范式和第三范式等。當(dāng)數(shù)據(jù)是第3范式的形式時(shí),它已經(jīng)足夠規(guī)范了。
規(guī)范化數(shù)據(jù)的3個(gè)原則如下:
(1)消除重復(fù)數(shù)據(jù),意味著不允許多值屬性。若一個(gè)數(shù)據(jù)單元格中有多個(gè)值,會(huì)給數(shù)據(jù)檢索造成問題。同時(shí),不允許有重復(fù)的列。
(2)消除部分依賴,部分依賴就是指表中的數(shù)據(jù)和多個(gè)實(shí)體有關(guān)。這條規(guī)則表明表中沒有列能夠只和主鍵的一部分相關(guān)。表中的所有非鍵列指向的是整個(gè)鍵,而不是鍵的一部分。
(3)消除過度依賴。這條規(guī)則所指的情況就是表中的列指向的不是主鍵,而是指向的是同一表中的另一個(gè)非鍵的列。
18.2 數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)庫設(shè)計(jì)不止簡單的走完規(guī)范化的過程,實(shí)際上是一種藝術(shù),它需要結(jié)合業(yè)務(wù)問題來綜合考慮。數(shù)據(jù)庫的設(shè)計(jì)往往有多種可能,這取決于實(shí)際上如何訪問和修改數(shù)據(jù)。可以通過提出問題來確定設(shè)計(jì)是否像需要的一樣靈活和有意義。如:
(1)有其他的表需要添加到數(shù)據(jù)庫中嗎?
(2)可以把可能聯(lián)合的列加到一起嗎?
(3)如何區(qū)分舊數(shù)據(jù)?
(4)對數(shù)據(jù)有特殊的分析需求嗎?
數(shù)據(jù)庫設(shè)計(jì)必須和現(xiàn)實(shí)需求結(jié)合起來,數(shù)據(jù)庫設(shè)計(jì)是一個(gè)平衡活,優(yōu)秀的數(shù)據(jù)庫設(shè)計(jì)不僅有足夠的靈活性而且直觀,易于理解。
18.3 規(guī)范化的替代方法
規(guī)范化是數(shù)據(jù)庫設(shè)計(jì)中的重要原則,但是在某些 情況下,切實(shí)可行的替代方案可能更合理。例如星型模式。
星型模式的主要思想是創(chuàng)建一個(gè)核心的事實(shí)表,該表和任意數(shù)目的維度表相關(guān)聯(lián)。事實(shí)表包含了本質(zhì)上是可以相加的所有定量數(shù)字。維度表包含了所有的實(shí)體信息。
此外,也有從星型數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)立方。
?
?
總結(jié)
- 上一篇: Java使用zip4j库 压缩文件工具类
- 下一篇: 基于Java后台(Springboot框