在數(shù)據(jù)庫設(shè)計中,所有結(jié)構(gòu)和關(guān)系都是有一定方法可尋的,這些方法來自與客戶溝通或在Internet上咨詢行業(yè)知識時所學(xué)的。同樣,數(shù)據(jù)庫設(shè)計也從這些方法開始。那么數(shù)據(jù)庫設(shè)計的方法有哪些?這6個小技巧一定要清楚,即將數(shù)據(jù)按照邏輯思維分成不同的塊,讓生活更簡單;當(dāng)數(shù)據(jù)太多時,rule 1不可用;弄清(OLTP或OLAP)應(yīng)用的本質(zhì)是什么;當(dāng)心數(shù)據(jù)依賴;將重復(fù)、不統(tǒng)一的數(shù)據(jù)視作你最大的敵人;注意被分隔符分割的數(shù)據(jù)。
數(shù)據(jù)庫設(shè)計的方法有哪些?
Rule 1:將數(shù)據(jù)按照邏輯思維分成不同的塊,讓生活更簡單
這個規(guī)則其實就是“三范式” 中的第一范式。這樣設(shè)計的目標(biāo),是為了當(dāng)你需要查詢套多的字符串解析功能時,如子串,charindexetc,它能為你提供這項功能。
例如,如果你想查詢某個學(xué)生的姓名,通過“Koirala”和“Harisingh”來進(jìn)行區(qū)分。因此,更好的方法就是打破數(shù)據(jù)邏輯思維,以便我們編寫更加簡潔、容易查詢的表單。
Rule 2:當(dāng)數(shù)據(jù)太多時,rule 1不可用
開發(fā)者們的思維有時很單一,如果你告訴他們某種方式,他們會一直這么做下去,要知道過度的使用會造成不必要的麻煩。正如我們之前談到的rule 1,首先要進(jìn)行分解,明確自己的需求。例如,當(dāng)你看到電話號碼字段時,你可以在ISD代碼上進(jìn)行操作區(qū)分這些電話號碼(直到滿足你的需求)。盡管這是不錯的方法,但會給你帶來更多的并發(fā)癥。
Rule 3:弄清(OLTP或OLAP)應(yīng)用的本質(zhì)是什么?
當(dāng)開始制作數(shù)據(jù)表單設(shè)計時,首先,要分析你數(shù)據(jù)庫設(shè)計的這個程序的本質(zhì)是什么?是事務(wù)性還是分析性的?你會發(fā)現(xiàn)許多開發(fā)者會默認(rèn)應(yīng)用常規(guī)化規(guī)則,隨后才考慮性能問題而不考慮應(yīng)用的本質(zhì)。關(guān)于事務(wù)性和分析性,一起來看下兩者區(qū)別。Transactional:這種應(yīng)用,用戶對CRUD較為感興趣,即創(chuàng)建、讀取、更新和刪除記錄。這種數(shù)據(jù),官方名稱之位OLTP。
Analytical:用戶對分析、報告、預(yù)測等方面感興趣。這類數(shù)據(jù)庫很少有嵌入和更新。主要目的是為了盡快獲取和分析數(shù)據(jù)。官方名稱之為OLAP。
換句話說,如果你想以嵌入、更新、刪除為重點(diǎn),可選擇常規(guī)化的表單設(shè)計或者創(chuàng)建一個簡單的非常規(guī)化的數(shù)據(jù)架構(gòu)。
Rule 4:當(dāng)心數(shù)據(jù)依賴
觀察該領(lǐng)域中的部分列表。假如我們創(chuàng)建了roll number和standard,可以看到教學(xué)科目緊密聯(lián)系在一起,但與學(xué)生學(xué)習(xí)的科目沒有直接關(guān)聯(lián)。如果我們想給每位學(xué)生更新教學(xué)科目,這似乎看起來是不符合邏輯的,但是通過鍵入standard條目轉(zhuǎn)換這些數(shù)據(jù)就可達(dá)到目的。這個規(guī)則告訴我們“所有的鍵入都應(yīng)該依賴主鍵”。All keys should depend on the full primary key and not partially。
Rule 5:將重復(fù)、不統(tǒng)一的數(shù)據(jù)視作你最大的敵人
聚焦和重構(gòu)復(fù)制數(shù)據(jù)。我比較擔(dān)心的不是復(fù)制數(shù)據(jù)所需要的磁盤空間而是它因此而造成的混亂。
其中一個解決方法就是將不同的任務(wù)欄把相同的數(shù)據(jù)通過新建一個鍵入值聯(lián)接在一起。如圖。我們通過創(chuàng)建一個新的條目“Standards”即可將數(shù)據(jù)重新排,顯示相同的部分。
Rule 6:注意被分隔符分割的數(shù)據(jù)
前面的規(guī)則1即“第一范式”提到避免數(shù)組重復(fù)。如果你看到教學(xué)大綱緊密排列在一起,這個領(lǐng)域中需要很多數(shù)據(jù)來填充,這種我們稱之為“重復(fù)數(shù)組”。如果我們必須操縱這些數(shù)據(jù),單憑查詢是很困難的,我甚至還懷疑是否具備這個查詢功能。這些帶分隔符的數(shù)據(jù)需要特別注意,要利用更好的方法將這些數(shù)據(jù)移動到一個不同的任務(wù)欄中,以便更好的分類。
上述就是關(guān)于數(shù)據(jù)庫設(shè)計的方法有哪些的全部內(nèi)容介紹,想了解更多關(guān)于數(shù)據(jù)庫設(shè)計的信息,請繼續(xù)關(guān)注中培偉業(yè)。