解析mysql數(shù)據(jù)庫(kù)設(shè)計(jì)技巧

解析mysql數(shù)據(jù)庫(kù)設(shè)計(jì)技巧

使用明確、統(tǒng)一的標(biāo)明和列名,例如 person, studentid。
表名使用單數(shù)而不是復(fù)數(shù),例如 schoolname,而不是 schoolnames。
表名不要使用空格。
表名不要使用不必要的前綴或者后綴,例如使用school,而不是tblschool,或者schooltable等等。
數(shù)據(jù)庫(kù)中的密碼要加密,到應(yīng)用中再解密。 (其實(shí)就是散列存儲(chǔ)、單向加密)
使用整數(shù)作為id字段,也許現(xiàn)在沒有這個(gè)必要,但是將來(lái)需要,例如關(guān)聯(lián)表,整數(shù)等等。
使用整數(shù)字段做索引,否則會(huì)帶來(lái)很大的性能問題 。
使用 bit 作為布爾字段,使用整數(shù)或者varcha是浪費(fèi)。同時(shí),這類字段應(yīng)該以“is”開頭。
要經(jīng)過(guò)認(rèn)證才能訪問數(shù)據(jù)庫(kù),不要給每一個(gè)整數(shù)員權(quán)限。
盡量避免使用“select *”,而使用“select [required_column_list]”以獲得更好的性能。
假如程序代碼比較復(fù)雜,使用orm框架,例如hibernate,ibatis。orm框架的性能問題可以通過(guò)詳細(xì)的配置去解決。
分割不常使用的表到不同的物理存儲(chǔ)以獲得更好的性能。
對(duì)于關(guān)鍵數(shù)據(jù)庫(kù),使用安全備份系統(tǒng),例如集群,同步等等。
使用外鍵,非空等限制來(lái)保證數(shù)據(jù)的完整性,不要把所有的東西都扔給程序。
缺乏數(shù)據(jù)庫(kù)文檔是致命的。你應(yīng)該為你的數(shù)據(jù)庫(kù)設(shè)計(jì)寫文檔,包括整數(shù)整數(shù)和其他腳本。
對(duì)于經(jīng)常使用的查詢和大型數(shù)據(jù)表,要使用索引。數(shù)據(jù)分析工具可以幫助你決定如何建立索引。
數(shù)據(jù)庫(kù)服務(wù)器和網(wǎng)頁(yè)服務(wù)器應(yīng)該放在不同的機(jī)器上。這回提高安全性,并減輕cpu壓力。
image和blob字段不應(yīng)該定義在常用的數(shù)據(jù)表中,否則會(huì)影響性能。
范式(normalization)要按照要求使用以提高性能。normalization做的不夠會(huì)導(dǎo)致數(shù)據(jù)冗余,而過(guò)度normalization 會(huì)導(dǎo)致太多的join和數(shù)據(jù)表,這兩種情況都會(huì)影響性能。
多花點(diǎn)時(shí)間在數(shù)據(jù)庫(kù)設(shè)計(jì)上,否則你將來(lái)會(huì)付出加倍的時(shí)間來(lái)償還。

時(shí)間證明,很多程序的效率問題其實(shí)都是數(shù)據(jù)庫(kù)的設(shè)計(jì)不合理引起的,所以能夠設(shè)計(jì)出合理的數(shù)據(jù)庫(kù)對(duì),整個(gè)軟件和網(wǎng)站至關(guān)重要!

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊10 分享