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