MySQL-11數(shù)據(jù)庫(kù)設(shè)計(jì)

大家好,這一篇主要圍繞三個(gè)特點(diǎn)記錄。

mysql數(shù)據(jù)庫(kù)設(shè)計(jì)

    1. 數(shù)據(jù)庫(kù)設(shè)計(jì)三大范式
    1. 數(shù)據(jù)庫(kù)表字段類型分析
    1. 不推薦存儲(chǔ)的數(shù)據(jù)類型

1.數(shù)據(jù)庫(kù)設(shè)計(jì)三大反式。

  • 范式分為:3大范式,以及BC范式床玻,第四范式還有第五范式 一共六大范式通常來(lái)說(shuō)滿足與三大范式就基本 足夠 ;
  • 注意:項(xiàng)目的數(shù)據(jù)庫(kù)設(shè)計(jì)并不一定要完全滿足與三大范式,有些時(shí)候我們會(huì)適量的冗余讓Query盡兩減少 Join
  • 誤區(qū):不是范式越高越就越好 好 => 結(jié)構(gòu)清晰
  • 早期:希望數(shù)據(jù)可以足夠的小數(shù)據(jù)量不是問(wèn)題主要分問(wèn)題 現(xiàn)在:希望查詢速度越快越好,同時(shí)操作越簡(jiǎn)單越好沉帮。

1.1 第一范式(1NF)

第一范式要求關(guān)系中的屬性必須是原子項(xiàng),即不可再分的基本類型笨枯,集合、數(shù)組和 結(jié)構(gòu)不能作 為某一屬性出現(xiàn)遇西,嚴(yán)禁關(guān)系中出現(xiàn)“表中有表”的情況在任何一個(gè)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中馅精,第一范式是關(guān)系模 式 的一個(gè)最起碼的要求。不滿足第一范式的數(shù)據(jù)庫(kù)模式不能稱為關(guān)系數(shù)據(jù)庫(kù)粱檀。

1.2 第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)建立起來(lái)的洲敢,既滿足第二范式(2NF)就必須要 滿足第一范式。第二范式(2NF)要求實(shí)體的屬性完全依賴于主鍵字茄蚯。

第二范式(2NF)要求實(shí)體的屬性完全依賴于主關(guān)鍵字压彭。所謂完全依賴是指不能存在僅依賴主關(guān)鍵字一部分 的屬性,如果存在渗常,那么這個(gè)屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來(lái)形成一個(gè)新的實(shí)體壮不,新實(shí)體與原實(shí) 體之間是一對(duì)多的關(guān)系。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列皱碘,以存儲(chǔ)各個(gè)實(shí)例的唯一標(biāo)識(shí)询一。簡(jiǎn)而言之, 第二范式就是在第一范式的基礎(chǔ)上屬性完全依賴于主鍵。

1.3 第三范式(3NF)

第三范式(3NF)是第二范式的子集健蕊,既滿足第三范式就必須滿足第二范式菱阵。意思是不存在非 關(guān)鍵字段對(duì)任意候選關(guān)鍵字段的傳遞函數(shù)依賴。
其實(shí)就是把表進(jìn)行拆分缩功,然后在關(guān)系表存上依賴關(guān)系的id晴及。

2. 數(shù)據(jù)庫(kù)表字段類型分析

2.1 字符串類型

char和varchar都是用來(lái)存儲(chǔ)字符串類型的數(shù)據(jù),但是他們保存和檢索的方式不一樣.char屬于固定長(zhǎng)度的字符類型, varchar屬于可變長(zhǎng)的字符類型。

由于char是固定長(zhǎng)度的,所以它的處理速度比varchar快得多,但是其缺點(diǎn)是浪費(fèi)存儲(chǔ)空間,程序需要對(duì)尾行空格 進(jìn)行處理,所以對(duì)那些變化不打并且查詢速度有較高的 要求的數(shù)據(jù)可以考慮使用char類型來(lái)存儲(chǔ)嫡锌。
在mysql中,不同的存儲(chǔ)引擎對(duì)char和varchar的使用原則有所不同 MyISAM存儲(chǔ)引擎建議使用固定長(zhǎng)度的數(shù)列代替可變長(zhǎng)度的數(shù)據(jù)列 InnoDB存儲(chǔ)引擎
建議使用varchar類型,對(duì)于InnnoDB數(shù)據(jù)表,內(nèi)部的行存儲(chǔ)格式?jīng)]有區(qū)分固定長(zhǎng)度和可變長(zhǎng)度,因此使用 char列不一定比 可變長(zhǎng)度的varchar性能好 由于char平均占用空間多余varchar,因此varchar來(lái)UI消化需要處理的數(shù)據(jù)航的存儲(chǔ)總量和磁盤I/O是比較 好的虑稼。

2.2 數(shù)字類型

d 必為主鍵,類型為int bigint unsigned势木、單表時(shí)自增蛛倦、步長(zhǎng)為 1; 注意一下因?yàn)橐恍┍砜赡芤驗(yàn)閿?shù)據(jù)量的關(guān) 系導(dǎo)致主鍵會(huì)很大可能會(huì)超出int的范圍這個(gè)時(shí)候就比較建議使用bigint通常int即可。
注:不過(guò)當(dāng)一個(gè)表數(shù)據(jù)量超過(guò)了500萬(wàn)的時(shí)候或者單表容量超過(guò)2GB的時(shí)候推介分庫(kù)分表;這一步操作是需 要實(shí)先對(duì)于數(shù)據(jù)量在項(xiàng)目上線之后的思考點(diǎn)UNSIGNED屬性就是將數(shù)字類型無(wú)符號(hào)化, unsigned的使用 注意 unsigned tinyint 的范圍就是 0-255跟压。

2.3 時(shí)間類型

  • 注意: 默認(rèn)情況下胰蝠,當(dāng)MySQL遇到超出范圍的日期或時(shí)間類型的值或該類型的其他無(wú)效值時(shí)歼培,它會(huì)將該值 轉(zhuǎn)換為“零”值的值震蒋。唯 一的例外是超出了范圍。TIME值被裁剪 到TIME范圍躲庄。
  • MySQL允許在DATE或DATETIME列查剖。這對(duì)于需要存儲(chǔ)您可能不知道確切日期的生日的應(yīng)用程序非常有用。在 這種情況下噪窘, 您只需將日期存儲(chǔ)為'2009-00- 00'或'2009-01-00'笋庄。如果存儲(chǔ)這樣的日期,就不應(yīng)該期望得到 正確的結(jié)果倔监,例 如DATE_SUB()或DATE_ADD()需要完整的日期直砂。若要在日期中不允許零個(gè)月或日部分,請(qǐng)啟 用NO_ZERO_IN_DATE模式 浩习。
  • MySQL允許您存儲(chǔ)“零”價(jià)值'0000-00-00'作為“假約會(huì)静暂。”在某些情況下谱秽,這比使用NULL值洽蛀,并使用較少的數(shù) 據(jù)和索引空 間。不允許'0000-00-00'疟赊,啟用NO_ZERO_DATE模式郊供。

3. 不推薦存儲(chǔ)的數(shù)據(jù)類型

    1. 二進(jìn)制多媒體數(shù)據(jù) 將二進(jìn)制多媒體數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中,一個(gè)問(wèn)題是數(shù)據(jù)庫(kù)空間資源耗用非常嚴(yán)重近哟, 另一個(gè)問(wèn)題是 這些數(shù)據(jù)的存儲(chǔ)很消耗數(shù)據(jù)庫(kù)主機(jī)的CPU 資源驮审。這種數(shù)據(jù)主要 包括圖片,音頻、視頻和 其他一些相關(guān)的二進(jìn)制文件头岔。 這些數(shù)據(jù)的處理本不是數(shù)據(jù)的優(yōu)勢(shì)塔拳,如果我們硬要將他們?nèi)霐?shù)據(jù)庫(kù), 肯定會(huì)造成數(shù)據(jù)庫(kù)的處理資源消耗 嚴(yán)重峡竣。
    1. 流水隊(duì)列數(shù)據(jù) 我們都知道靠抑,數(shù)據(jù)庫(kù)為了保證事務(wù)的安全性(支持事務(wù)的存儲(chǔ)引擎)以及可恢復(fù)性,都 是需要記錄所 有變更的日志信息的适掰。而流水隊(duì)列數(shù)據(jù)的用途就決定了存放 這種數(shù)據(jù)的表中的數(shù)據(jù)會(huì)不 斷的被 INSERT颂碧,UPDATE 和 DELETE,而每一個(gè)操作都會(huì)生成與之對(duì)應(yīng)的日志信息类浪。在 MySQL 中载城,如 果是支持事務(wù)的存儲(chǔ)引擎,這 個(gè)日志的產(chǎn)生量 更是要翻倍费就。而如果我們通過(guò)一些成熟的第三方隊(duì)列軟 件來(lái)實(shí)現(xiàn)這個(gè) Queue 數(shù)據(jù)的處理功能诉瓦,性能將會(huì)成倍的提升。
    1. 超大文本數(shù)據(jù) 對(duì)于 5.0.3 之前的 MySQL 版本力细,VARCHAR 類型的數(shù)據(jù)最長(zhǎng)只能存放 255 個(gè)字節(jié)睬澡,如果 需要存儲(chǔ) 更長(zhǎng)的文本數(shù)據(jù)到一個(gè)字段,我們就必須使用 TEXT 類型(最大 可存放 64KB)的字段眠蚂,甚至 是更大的LONGTEXT 類型 (最大 4GB)煞聪。而 TEXT 類型數(shù)據(jù)的處理性能要遠(yuǎn)比 VARCHAR 類型數(shù)據(jù)的 處理性能低下很多。從 5.0.3 版 本開(kāi)始 逝慧,VARCHAR 類型的最大長(zhǎng)度被調(diào)整到 64KB 了昔脯,但是當(dāng)實(shí)際數(shù) 據(jù)小于 255Bytes 的時(shí)候,實(shí)際存儲(chǔ)空間和實(shí)際的數(shù)據(jù)長(zhǎng) 度一樣笛臣,可一旦長(zhǎng)度超過(guò) 255 Bytes 之后云稚,所 占用的存儲(chǔ)空間就是實(shí)際數(shù)據(jù)長(zhǎng)度的兩倍。 對(duì)于圖片的存儲(chǔ)沈堡,如果說(shuō)是 特殊情況可以使用BLOB静陈,但 是通常來(lái)說(shuō)跟推介使用varchar存圖片路徑,而圖片會(huì)放在一個(gè)文件夾中
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末踱蛀,一起剝皮案震驚了整個(gè)濱河市窿给,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌率拒,老刑警劉巖崩泡,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異猬膨,居然都是意外死亡角撞,警方通過(guò)查閱死者的電腦和手機(jī)呛伴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谒所,“玉大人热康,你說(shuō)我怎么就攤上這事×恿欤” “怎么了姐军?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)尖淘。 經(jīng)常有香客問(wèn)我奕锌,道長(zhǎng),這世上最難降的妖魔是什么村生? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任惊暴,我火速辦了婚禮,結(jié)果婚禮上趁桃,老公的妹妹穿的比我還像新娘辽话。我一直安慰自己,他們只是感情好卫病,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布油啤。 她就那樣靜靜地躺著,像睡著了一般忽肛。 火紅的嫁衣襯著肌膚如雪村砂。 梳的紋絲不亂的頭發(fā)上烂斋,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天屹逛,我揣著相機(jī)與錄音,去河邊找鬼汛骂。 笑死罕模,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帘瞭。 我是一名探鬼主播淑掌,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蝶念!你這毒婦竟也來(lái)了抛腕?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤媒殉,失蹤者是張志新(化名)和其女友劉穎担敌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體廷蓉,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡全封,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刹悴。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡行楞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出土匀,到底是詐尸還是另有隱情子房,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布就轧,位于F島的核電站池颈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏钓丰。R本人自食惡果不足惜躯砰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望携丁。 院中可真熱鬧琢歇,春花似錦、人聲如沸梦鉴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肥橙。三九已至魄宏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間存筏,已是汗流浹背宠互。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留椭坚,地道東北人予跌。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像善茎,于是被迫代替她去往敵國(guó)和親券册。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容