MySQL系列數(shù)據(jù)庫(kù)設(shè)計(jì)三范式教程示例
一、數(shù)據(jù)庫(kù)設(shè)計(jì)三范式相關(guān)知識(shí)說明
1、什么是設(shè)計(jì)范式?
設(shè)計(jì)表的依據(jù),按照這三個(gè)范式設(shè)計(jì)出來的表,不會(huì)出現(xiàn)數(shù)據(jù)的冗余。
2、為什么要學(xué)習(xí)數(shù)據(jù)庫(kù)的三個(gè)范式?
數(shù)據(jù)庫(kù)的設(shè)計(jì)范式是數(shù)據(jù)庫(kù)設(shè)計(jì)所需要滿足的規(guī)范,滿足這些規(guī)范的數(shù)據(jù)庫(kù)是簡(jiǎn)潔的、結(jié)構(gòu)明晰的,同時(shí),不會(huì)發(fā)生插入(insert)、刪除(delete)和更新(update)操作異常。反之則是亂七八糟,不僅給數(shù)據(jù)庫(kù)的編程人員制造麻煩,而且面目可憎,可能存儲(chǔ)了大量不需要的冗余信息。
我們數(shù)據(jù)分析師雖然不需要自己去設(shè)計(jì)數(shù)據(jù)庫(kù),但是了解數(shù)據(jù)庫(kù)的三個(gè)范式,對(duì)于我們后面進(jìn)行表的理解能夠有一定的幫助。
3、三范式都有哪些?
1)第一范式:任何一張表都應(yīng)該有主鍵,并且每一個(gè)字段原子性不可再分。
2)第二范式:建立在第一范式基礎(chǔ)上的,另外要求所有非主鍵字段完全依賴主鍵,不能 產(chǎn)生部分依賴。
解決辦法:多對(duì)多,三張表,關(guān)系表兩個(gè)外鍵。
3)第三范式:建立在第二范式的基礎(chǔ)之上,所有非主鍵字段直接依賴主鍵,不能產(chǎn)生傳遞依賴。
解決辦法:一對(duì)多,兩張表,多的表加外鍵。
注意:牢記上述藍(lán)色部分的兩句話。
提醒:在實(shí)際的開發(fā)中,以滿足客戶的需求為主,有的時(shí)候會(huì)拿冗余換執(zhí)行速度。
二、數(shù)據(jù)庫(kù)表的經(jīng)典設(shè)計(jì)方案
一對(duì)一怎么設(shè)計(jì)?
第一種方案:主鍵共享
第二種方案:外鍵唯一
注意:外鍵唯一這種情況,有點(diǎn)像上面講述的多對(duì)多的情形,當(dāng)外鍵字段加了一個(gè)
unique限制條件后,就變成一對(duì)一了。
以上就是MySQL系列數(shù)據(jù)庫(kù)設(shè)計(jì)三范式教程示例的詳細(xì)內(nèi)容,更多關(guān)于MySQL數(shù)據(jù)庫(kù)設(shè)計(jì)三范式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
mybatis分頁(yè)插件pageHelper詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了mybatis分頁(yè)插件pageHelper詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05Django創(chuàng)建項(xiàng)目+連通mysql的操作方法
這篇文章主要介紹了Django創(chuàng)建項(xiàng)目+連通mysql的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03percona-toolkit之pt-kill 殺掉mysql查詢或連接的方法
本文主要描述了percona-toolkit中pt-kill的 使用實(shí)例 ,及 一些重要參數(shù)的介紹,需要的朋友可以參考下2016-04-04MySQL中浮點(diǎn)型轉(zhuǎn)字符型可能會(huì)遇的問題詳解
類型轉(zhuǎn)換是我們?nèi)粘i_發(fā)中經(jīng)常會(huì)遇到的一個(gè)需求,最近在將浮點(diǎn)型轉(zhuǎn)換成字符型的時(shí)候就遇到了一個(gè)問題,所以總結(jié)分享出來,下面這篇文章主要給大家介紹了MySQL中關(guān)于浮點(diǎn)型轉(zhuǎn)字符型可能遇到的問題的相關(guān)資料,需要的朋友可以參考下。2017-09-09MySQL存儲(chǔ)引擎 InnoDB與MyISAM的區(qū)別
InnoDB和MyISAM是許多人在使用MySQL時(shí)最常用的兩個(gè)表類型,這兩個(gè)表類型各有優(yōu)劣,視具體應(yīng)用而定。2014-03-03