分享20個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的最佳實(shí)踐
數(shù)據(jù)庫(kù)設(shè)計(jì)是整個(gè)程序的重點(diǎn)之一,為了支持相關(guān)程序運(yùn)行,最佳的數(shù)據(jù)庫(kù)設(shè)計(jì)往往不可能一蹴而就,只能反復(fù)探尋并逐步求精,這是一個(gè)復(fù)雜的過(guò)程,也是規(guī)劃和結(jié)構(gòu)化數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象以及這些數(shù)據(jù)對(duì)象之間關(guān)系的過(guò)程。下面給出了20個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)最佳實(shí)踐,當(dāng)然,所謂最佳,還是要看它是否適合你的程序。一起來(lái)了解了解吧。
1.使用明確、統(tǒng)一的標(biāo)明和列名,例如 School, SchoolCourse, CourceID。
2.數(shù)據(jù)表名使用單數(shù)而不是復(fù)數(shù),例如 StudentCourse,而不是StudentCourses。
3.數(shù)據(jù)表名不要使用空格。
4.數(shù)據(jù)表名不要使用不必要的前綴或者后綴,例如使用School,而不是TblSchool,或者SchoolTable等等。
5.數(shù)據(jù)庫(kù)中的密碼要加密,到應(yīng)用中再解密。 (其實(shí)就是散列存儲(chǔ)、單向加密)
6.使用整數(shù)作為ID字段,也許現(xiàn)在沒(méi)有這個(gè)必要,但是將來(lái)需要,例如關(guān)聯(lián)表,索引等等。
7.使用整數(shù)字段做索引,否則會(huì)帶來(lái)很大的性能問(wèn)題 。
8.使用 bit 作為布爾字段,使用整數(shù)或者varcha是浪費(fèi)。同時(shí),這類(lèi)字段應(yīng)該以“Is”開(kāi)頭。
9.要經(jīng)過(guò)認(rèn)證才能訪問(wèn)數(shù)據(jù)庫(kù),不要給每一個(gè)用戶(hù)管理員權(quán)限。
10.盡量避免使用“select *”,而使用“select [required_column_list]”以獲得更好的性能。
11.假如程序代碼比較復(fù)雜,使用ORM框架,例如hibernate,iBatis。ORM框架的性能問(wèn)題可以通過(guò)詳細(xì)的配置去解決。
12.分割不常使用的數(shù)據(jù)表到不同的物理存儲(chǔ)以獲得更好的性能。
13.對(duì)于關(guān)鍵數(shù)據(jù)庫(kù),使用安全備份系統(tǒng),例如集群,同步等等。
14.使用外鍵,非空等限制來(lái)保證數(shù)據(jù)的完整性,不要把所有的東西都扔給程序。
15.缺乏數(shù)據(jù)庫(kù)文檔是致命的。你應(yīng)該為你的數(shù)據(jù)庫(kù)設(shè)計(jì)寫(xiě)文檔,包括觸發(fā)器、存儲(chǔ)過(guò)程和其他腳本。
16.對(duì)于經(jīng)常使用的查詢(xún)和大型數(shù)據(jù)表,要使用索引。數(shù)據(jù)分析工具可以幫助你決定如何建立索引。
17.數(shù)據(jù)庫(kù)服務(wù)器和網(wǎng)頁(yè)服務(wù)器應(yīng)該放在不同的機(jī)器上。這回提高安全性,并減輕CPU壓力。
18.Image和blob字段不應(yīng)該定義在常用的數(shù)據(jù)表中,否則會(huì)影響性能。
19.范式(Normalization)要按照要求使用以提高性能。Normalization做的不夠會(huì)導(dǎo)致數(shù)據(jù)冗余,而過(guò)度Normalization 會(huì)導(dǎo)致太多的join和數(shù)據(jù)表,這兩種情況都會(huì)影響性能。
20.多花點(diǎn)時(shí)間在數(shù)據(jù)庫(kù)設(shè)計(jì)上,否則你將來(lái)會(huì)付出加倍的時(shí)間來(lái)償還。
英文原址:javacodegeeks.com
相關(guān)文章
mysql分頁(yè)原理和高效率的mysql分頁(yè)查詢(xún)語(yǔ)句
這篇文章主要介紹了mysql分頁(yè)原理和高效率的mysql分頁(yè)查詢(xún)語(yǔ)句,大家參考使用吧2014-01-01
Mac安裝 mysql 數(shù)據(jù)庫(kù)總結(jié)
本文給大家分享的是如何在Mac下安裝mysql數(shù)據(jù)庫(kù)的方法,總結(jié)的很全面,有需要的小伙伴可以參考下2016-04-04
MySQL8.0設(shè)置遠(yuǎn)程訪問(wèn)權(quán)限的方法
這篇文章主要介紹了MySQL8.0設(shè)置遠(yuǎn)程訪問(wèn)權(quán)限的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Mysql中的超時(shí)時(shí)間設(shè)置方式
這篇文章主要介紹了Mysql中的超時(shí)時(shí)間設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
巧用mysql提示符prompt清晰管理數(shù)據(jù)庫(kù)的方法
隨著管理mysql服務(wù)器越來(lái)越多,同樣的mysql>的提示符有可能會(huì)讓你輸入錯(cuò)誤的命令到錯(cuò)誤的數(shù)據(jù)庫(kù),這時(shí)候需要巧用mysql的提示符,這是我的提示符root@localhost(mysql) 08:55:21> 用prompt命令實(shí)現(xiàn)(適用于windows和linux環(huán)境)2009-08-08
解決從集合運(yùn)算到mysql的not like找不出NULL的問(wèn)題
這篇文章主要介紹了解決從集合運(yùn)算到mysql的not like找不出NULL的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
MySQL8.0?索引優(yōu)化invisible?index詳情
這篇文章主要介紹了MySQL8.0?索引優(yōu)化invisible?index詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09

