高性能數(shù)據(jù)庫庫表設(shè)計

優(yōu)秀的庫表設(shè)計,是高性能數(shù)據(jù)庫的基礎(chǔ)

范式:設(shè)計數(shù)據(jù)庫結(jié)構(gòu)過程中所要遵循的規(guī)則和指導(dǎo)方法

六種范式:
1NF、2NF扳躬、3NF、BCNF甚亭、4NF贷币、5NF
常用的范式是前三個
1NF:無重復(fù)的列
2NF:屬于完全依賴于主鍵
3NF:屬性不傳遞依賴于其他非主屬性
后面的范式必須滿足前一個范式
2NF和3NF的區(qū)別
2NF:非主鍵列依賴主鍵
要是有依賴關(guān)系的就是第二范式
3NF:非主鍵列是直接依賴主鍵不是通過傳遞關(guān)系的依賴的
符合這種就是第三范式



將一張大表拆分為三個表
優(yōu)點(diǎn):

  • 避免數(shù)據(jù)冗余
  • 避免數(shù)據(jù)庫的空間
  • 數(shù)據(jù)變更速度快
    缺點(diǎn):
  • 范式等級越高,表的數(shù)量越多
  • 獲取數(shù)據(jù)時關(guān)聯(lián)過多亏狰,性能較差

反范式:范式設(shè)計表無法滿足性能需求時役纹,需要根據(jù)業(yè)務(wù)場景,在范式的基礎(chǔ)之上靈活設(shè)計

范式化模型:

  • 數(shù)據(jù)沒有冗余暇唾,更新容易
    1- 表的數(shù)量比較多
  • 查詢數(shù)據(jù)需要多表關(guān)聯(lián)時促脉,查詢性能低下

反范式模型:

  • 冗余將帶來很好的讀取性能
  • 需要維護(hù)冗余數(shù)據(jù)
  • 對磁盤空間的消耗是可以接受的

基礎(chǔ)規(guī)范

1.回歸存儲的基本職能
2.查詢時,盡量單表查詢
3.杜絕大事務(wù)策州、大SQL瘸味、大批量、大字段等性能殺手

同一規(guī)范

  • 默認(rèn)存儲引擎InnoDB
  • 默認(rèn)字符集utf8mb4
  • 關(guān)閉大小寫
  • 開啟per-table表空間

禁用功能

  • eunm够挂、set
  • blob旁仿、text
  • 視圖、event
  • 存儲過程孽糖、觸發(fā)器

命名規(guī)范

名稱的字符范圍為:a-z枯冈,0-9和_(下劃線)
>所有表名小寫
>不允許使用-(橫杠)、空格
>不允許使用其他字符作為名稱

遵循"見名知意"的原則
庫名:1位數(shù)據(jù)庫類型代碼+項(xiàng)目簡稱+識別代碼+序號

出入系統(tǒng)業(yè)務(wù)生產(chǎn)庫:AOCT\AOCT1\AOCT2
出入系統(tǒng)業(yè)務(wù)開發(fā)庫:AOCTDEV\AOCTDEV1\AOCTDEV2
出入系統(tǒng)業(yè)務(wù)測試庫:AOCTEST\AOCTEST1\AOCTEST2


3.png

表的命名規(guī)則


4.png

字段名表達(dá)精準(zhǔn)办悟,遵循"見名知意"的原則霜幼,格式:名稱_后綴

避免普遍簡單、有歧義的名稱
布爾型的字段誉尖、以助動詞(has/is)開頭


5.png

程序賬號與數(shù)據(jù)庫名字保持一致

索引命名格式
前綴表名(或縮寫)字段名(或縮寫)
主鍵必須用前綴"pk_"
UNIQUE約束必須用前綴"uk_"
普通索引必須使用前綴"idx_“

數(shù)據(jù)庫表設(shè)計規(guī)范

顯式指定需要的屬性

  • 創(chuàng)建表時顯示指定字符集、存儲引擎铸题、注釋信息

不同系統(tǒng)之間铡恕,統(tǒng)一規(guī)范

  • 命名琢感、類型保持一致
  • 庫表字符集和前端程序、中間件必須保持一致

InnoDB表

  • 主鍵列探熔,UNSIGNED整數(shù)驹针,使用auto_increment
  • 必須使用comment注釋
  • 必須顯示指定engine
  • 表必備三字段:id,xxx_create诀艰,xxx_modified

字段規(guī)范

  • 合適的類型柬甥,最短的長度,NOT NULL
  • 表字段數(shù)少而精
  • 單實(shí)例表個數(shù)必須控制在2000個以內(nèi)
  • 單表分表個數(shù)必須控制在1024個以內(nèi)
  • 單表字段數(shù)上限控制在20-50個
  • 禁用ENUM其垄、SET類型苛蒲,采用其他類型替代
  • 禁用列為NULL
  • 禁止VARBINARY、BLOB存儲圖片绿满、文件等
  • 不建議TEXT臂外、BLOB,否則拆分

存儲字符串長度相同的全部使用CHAR類型
變長采用VARCHAR類型喇颁,不預(yù)先分配存儲空間漏健,長度不要超過255

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市橘霎,隨后出現(xiàn)的幾起案子蔫浆,更是在濱河造成了極大的恐慌,老刑警劉巖姐叁,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓦盛,死亡現(xiàn)場離奇詭異,居然都是意外死亡七蜘,警方通過查閱死者的電腦和手機(jī)谭溉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來橡卤,“玉大人扮念,你說我怎么就攤上這事”炭猓” “怎么了柜与?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嵌灰。 經(jīng)常有香客問我弄匕,道長,這世上最難降的妖魔是什么沽瞭? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任迁匠,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘城丧。我一直安慰自己延曙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布亡哄。 她就那樣靜靜地躺著枝缔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚊惯。 梳的紋絲不亂的頭發(fā)上愿卸,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機(jī)與錄音截型,去河邊找鬼趴荸。 笑死,一個胖子當(dāng)著我的面吹牛菠劝,可吹牛的內(nèi)容都是我干的赊舶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼赶诊,長吁一口氣:“原來是場噩夢啊……” “哼笼平!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舔痪,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤寓调,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锄码,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夺英,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年滋捶,在試婚紗的時候發(fā)現(xiàn)自己被綠了痛悯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡重窟,死狀恐怖载萌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巡扇,我是刑警寧澤扭仁,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站厅翔,受9級特大地震影響乖坠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刀闷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一熊泵、第九天 我趴在偏房一處隱蔽的房頂上張望仰迁。 院中可真熱鬧,春花似錦顽分、人聲如沸轩勘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至花墩,卻和暖如春悬秉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冰蘑。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工和泌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人祠肥。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓武氓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親仇箱。 傳聞我的和親對象是個殘疾皇子县恕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359