Mysql設(shè)置之范式詳解-創(chuàng)新互聯(lián)

范式的定義是什么?范式:Normal Format,是一種離散數(shù)學(xué)中的知識,是為了解決數(shù)據(jù)的存儲與優(yōu)化的問題:保存數(shù)據(jù)的存儲之后,凡是能夠通過關(guān)系尋找出來的數(shù)據(jù),堅決不再重復(fù)存儲,終極目標(biāo)是為了減少數(shù)據(jù)的冗余。

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)樂平,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

范式背景:

1、是為了解決數(shù)據(jù)冗余

2、是為了數(shù)據(jù)的優(yōu)化與存儲

3、保存數(shù)據(jù)之后,可以通過關(guān)系得到的數(shù)據(jù),不再存儲

范式概念:

1、是一種分層結(jié)構(gòu)的規(guī)范,分為6層

2、每一層都比上一層更嚴格

3、若要滿足下一層范式,前提是滿足上一層

4、范式在數(shù)據(jù)庫中具有指導(dǎo)意義,但是不強制規(guī)范

5、數(shù)據(jù)庫不僅要考慮空間問題,還要考慮效率問題,一般用前第三層

6、六層范式, 1NF是最底層,要求最低;6NF最高層,最嚴格.

目前關(guān)系數(shù)據(jù)庫有六種范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又稱完美范式)。一般說來,數(shù)據(jù)庫只需滿足第三范式(3NF)就行了。

第一范式:確保每一列不可再分

要求

1、在設(shè)計表存儲數(shù)據(jù)時候,如果表中設(shè)計的字段存儲的數(shù)據(jù),在取出來使用之前還需要額外的處理(拆分),那么表的設(shè)計不滿足第一范式

2、第一范式要求字段具有原子性、不可再分割

例如:

講師代課表

Mysql設(shè)置之范式詳解

上表設(shè)計不存在問題: 但是如果需求是將數(shù)據(jù)查出來之后,要求顯示一個老師從什么時候開始上課,到什么時候結(jié)課:, 則需要將代課時間進行拆分: 不符合1NF, 數(shù)據(jù)不具有原子性, 可以再拆分.

解決方案

解決方案: 將代課時間拆分成兩個字段就解決問題.

Mysql設(shè)置之范式詳解

第二范式:確保表中每一列都和主鍵有關(guān)

要求

1、在數(shù)據(jù)表設(shè)計過程中,如果有復(fù)合主鍵(多字段主鍵),且表中有字段并不是由整個主鍵來確定,而是依賴于主鍵中的某個字段(主鍵的部分)

2、存在字段依賴主鍵的部分的問題,稱之為部分依賴

3、第二范式就是解決表設(shè)計不允許出現(xiàn)部分依賴

講師帶課表

Mysql設(shè)置之范式詳解

復(fù)合主鍵: 講師+班級

以上表中: 代課時間,開始和結(jié)束字段都與當(dāng)前的主鍵(講師和班級)有關(guān)系, 但是性別并不依賴班級, 教室不依賴講師, 性別只依賴講師, 教室只依賴班級, 出現(xiàn)了性別和教室依賴主鍵中的一部分: 部分依賴.不符合第二范式.

解決方案

解決方案1: 可以將性別與講師單獨成表, 班級與教室也單獨成表.

解決方案2: 取消復(fù)合主鍵, 使用邏輯主鍵

邏輯主鍵:沒有業(yè)務(wù)含義,比如自增主鍵

業(yè)務(wù)主鍵:有業(yè)務(wù)含義,比如person表用身份證號當(dāng)主鍵

Mysql設(shè)置之范式詳解

第三范式:確保每一列都和主鍵列直接相關(guān),而不是間接相關(guān)

要求

1、要滿足第三范式、必須滿足第二范式

2、理論上講,應(yīng)該一張表中的所有字段都應(yīng)該直接依賴于主鍵,如果表設(shè)計中存在一個字段,并不直接依賴主鍵,而是通過某個非關(guān)鍵字段依賴,最終實現(xiàn)依賴主鍵,把這種不是直接依賴主鍵,而是依賴非主鍵字段的依賴關(guān)系稱之為傳遞依賴

3、第三范式就是解決傳遞依賴的問題

講師帶課表

Mysql設(shè)置之范式詳解

主鍵: ID

以上設(shè)計方案中: 性別依賴講師存在, 講師依賴主鍵; 教室依賴班級,班級依賴主鍵: 性別和教室都存在傳遞依賴.

解決方案

將存在傳遞依賴的字段,以及依賴的字段本身單獨取出,形成一個單獨的表, 然后在需要對應(yīng)的信息的時候, 使用對應(yīng)的實體表的主鍵加進來.

講師帶課表

Mysql設(shè)置之范式詳解

講師表

Mysql設(shè)置之范式詳解

教室表

Mysql設(shè)置之范式詳解

反范式

有時候,在設(shè)計表的時候,如果一張表中有幾個字段需要從另外的表中去獲取信息,理論上講,的確可以獲得想要的數(shù)據(jù),但是效率低一點,會刻意的在某些表中,不去保存另外表的主鍵,而是直接保存想要的數(shù)據(jù)信息,這樣一來,在查詢數(shù)據(jù)的時候,一張表可以直接提供數(shù)據(jù),而不需要多表查詢((效率低),但是冗余會增加

看完上文,你對Mysql設(shè)置的范式大概了解了嗎?如果想了解更多,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道哦!

當(dāng)前名稱:Mysql設(shè)置之范式詳解-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://muchs.cn/article46/pogeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、自適應(yīng)網(wǎng)站、網(wǎng)站內(nèi)鏈用戶體驗、微信公眾號ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計