欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:數(shù)據(jù)倉庫—建模方法論—范式建模

柚子快報邀請碼778899分享:數(shù)據(jù)倉庫—建模方法論—范式建模

http://yzkb.51969.com/

范式建模是指根據(jù)關(guān)系數(shù)據(jù)庫理論中的范式規(guī)則,將數(shù)據(jù)庫設(shè)計為符合特定范式要求的結(jié)構(gòu)。范式建模的目標是通過消除數(shù)據(jù)冗余和提高數(shù)據(jù)一致性來優(yōu)化數(shù)據(jù)庫設(shè)計,從而提高數(shù)據(jù)存儲和查詢的效率。

這里的范式要求一般指的是三大范式,三大范式是關(guān)系數(shù)據(jù)庫(OLTP)設(shè)計表結(jié)構(gòu)所遵循的規(guī)范和指導(dǎo)方法,主要用于提高數(shù)據(jù)庫的邏輯結(jié)構(gòu)質(zhì)量,避免數(shù)據(jù)冗余和更新異常,目的是為了減少冗余,通過結(jié)構(gòu)合理的數(shù)據(jù)庫,從而提高數(shù)據(jù)存儲和使用的性能,三大范式之間是具有依賴關(guān)系的,比如第二范式是在第一范式的基礎(chǔ)上建設(shè)的、第三范式是在第二范式的基礎(chǔ)上建設(shè)的。

這里我們只介紹范式中常用的三大范式,當然 Mysql 數(shù)據(jù)庫的范式不止三大范式,除了三大范式,還有巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF,又稱“完美范式")。

雖然,遵循范式能使我們的數(shù)據(jù)庫結(jié)構(gòu)更合理,但是也不是一成不變的,偶爾我們也要學(xué)會在范式的基礎(chǔ),根據(jù)實際應(yīng)用場景,作出相應(yīng)的變通。

三大范式

第一范式 - 1NF

遵循原子性。即,表中字段的數(shù)據(jù),不可以再拆分。

先看一個不符合第一范式的表結(jié)構(gòu),如下:

員工編碼姓名年齡001銷售部小張28002運營部小黃25003技術(shù)部小高22

在這一個表中的,姓名 字段下的數(shù)據(jù)是可以再進行拆分的,因此它不符合第一范式,那怎么樣才符合第一范式呢?如下:

員工編碼部門姓名年齡001銷售部小張28002運營部小黃25003技術(shù)部小高22

那是否遵循第一范式就一定是好的呢?如下:

員工編碼姓名地址001小張江西省南昌市東湖區(qū)002小黃廣東省佛山市禪城區(qū)003小高湖北省武漢市新洲區(qū)

通過觀察上述表結(jié)構(gòu),我們發(fā)現(xiàn),地址是可以再進一步拆分的,比如:

員工編碼姓名省市區(qū)001小張江西省南昌市東湖區(qū)002小黃廣東省佛山市禪城區(qū)003小高湖北省武漢市新洲區(qū)

雖然拆分后,看上去更符合第一范式了,但是如果項目就只需要我們輸出一個完整地址呢?那明顯是表在沒拆分的時候會更好用。

所以范式只是給了我們一個參考,我們更多的是要根據(jù)項目實際情況設(shè)計表結(jié)構(gòu)。

第二范式 - 2NF

在滿足第一范式的情況下,遵循唯一性,消除部分依賴。即,表中任意一個主鍵或任意一組聯(lián)合主鍵,可以確定除該主鍵外的所有的非主鍵值。

再通俗點講就是,一個表只能描述一件事情。

我們用一個經(jīng)典案例進行解析。

學(xué)號姓名年齡課程名稱成績學(xué)分001小張28語文903001小張28數(shù)學(xué)902002小黃25語文903002小黃25語文903003小高22數(shù)學(xué)902

我們先分析一下表結(jié)構(gòu)。

假設(shè)學(xué)號是表中的唯一主鍵,那由學(xué)號就可以確定姓名和年齡了,但是卻不能確定課程名稱和成績。 假設(shè)課程名稱是表中的唯一主鍵,那由課程名稱就可以確定學(xué)分了,但是卻不能確定姓名、年齡和成績。 雖然通過學(xué)號和課程名稱的聯(lián)合主鍵,可以確定除聯(lián)合主鍵外的所有的非主鍵值,但是基于上述兩個假設(shè),也不符合第二范式的要求。

那我們應(yīng)該如何調(diào)整表結(jié)構(gòu),讓它能復(fù)合第二范式的要求呢?

我們可以基于上述的三種主鍵的可能,拆分成 3 張表,保證一張表只描述一件事情。

學(xué)生表 - 學(xué)號做主鍵

學(xué)號姓名年齡001小張28002小黃25003小高22

課程表 - 課程名稱做主鍵

課程名稱學(xué)分語文3數(shù)學(xué)2

成績表 - 學(xué)號和課程名稱做聯(lián)合主鍵

學(xué)號課程名稱成績001語文90001數(shù)學(xué)90002語文90002語文90003數(shù)學(xué)90

這時候我們可能會想,為什么我們就要遵循第二范式呢?不遵循第二范式會造成什么樣的后果呢?

造成整表的數(shù)據(jù)冗余。

如,學(xué)生表,可能我就只有2個學(xué)生,每個學(xué)生都有許多的信息,比如,年齡、性別、身高、住址…如果與課程信息放到同一張表中,可能每個學(xué)生有3門課程,那數(shù)據(jù)總條數(shù)就會變成6條了。但是通過拆分,學(xué)生表我們只需要存儲 2 條學(xué)生信息,課程表只需要存儲 3 條課程信息,成績表就只需保留學(xué)號、課程名稱和成績字段。

更新數(shù)據(jù)不方便。

假設(shè),課程的學(xué)分發(fā)生了變更,那我們就需要把整表關(guān)于該課程的學(xué)分都要更新一次,但如果我們拆分出課程表,那我們就只需要把課程表中的課程信息更新就行。

插入數(shù)據(jù)不方便或產(chǎn)生異常。

假設(shè)主鍵是學(xué)號或課程名稱,我們新增了某個課程,需要把數(shù)據(jù)插入到表中,這時,可能只有部分人有選修這門課程,那我們插入數(shù)據(jù)的時候還要規(guī)定給哪些人插入對應(yīng)的課程信息,同時可能由于成績還沒有,我們需要對成績置空,后續(xù)有成績后還得重新更新一遍。

假設(shè)主鍵是學(xué)號和課程名稱的聯(lián)合主鍵。同樣也是新增了某課程,但是暫時沒有人選修這門課,缺少了學(xué)號主鍵字段數(shù)據(jù),會導(dǎo)致課程信息無法插入。

第三范式 - 3NF

在滿足第二范式的情況下,消除傳遞依賴。即,在任一主鍵都可以確定所有非主鍵字段值的情況下,不能存在某非主鍵字段 A 可以獲取 某非主鍵字段 B。

仍然用一個經(jīng)典例子來解析

學(xué)號姓名班級班主任001小黃一年級(1)班高老師

這個表中,學(xué)號是主鍵,它可以唯一確定姓名、班級、班主任,符合了第二范式,但是在非主鍵字段中,我們也可以通過班級推導(dǎo)出該班級的班主任,所以它是不符合第三范式的。

那怎么設(shè)計表結(jié)構(gòu),才是符合第三范式的呢?

學(xué)生表

學(xué)號姓名班級001小黃一年級(1)班

班級表

班級班主任一年級(1)班高老師

通過把班級與班主任的映射關(guān)系另外做成一張映射表,我們就成功地消除了表中的傳遞依賴了。

擴展

除了第一范式(1NF)、第二范式(2NF)、第三范式(3NF)外,還存在其他一些擴展范式,如巴斯-科德規(guī)范形式(BCNF)和第四范式(4NF)。這些范式在一定程度上進一步規(guī)范了數(shù)據(jù)庫表的設(shè)計,提高了數(shù)據(jù)的一致性和規(guī)范性。

BCNF和第四范式適用于對數(shù)據(jù)一致性和規(guī)范性要求較高的數(shù)據(jù)庫設(shè)計場景。在實際應(yīng)用中,設(shè)計人員需要根據(jù)具體的業(yè)務(wù)需求和數(shù)據(jù)特點,靈活選擇合適的范式級別進行數(shù)據(jù)庫建模。同時,需要注意范式過度規(guī)范化可能導(dǎo)致查詢性能下降的問題,因此在設(shè)計時需要權(quán)衡范式規(guī)范性和查詢性能之間的關(guān)系。

BCNF(巴斯-科德規(guī))范式

BCNF要求表中的每一個決定因素(即決定其他字段取值的字段)都是候選鍵。換句話說,如果一個表中存在多個候選鍵,那么每個非主鍵字段必須完全依賴于所有候選鍵,而不僅僅是其中的一部分。BCNF可以進一步減少數(shù)據(jù)冗余,提高數(shù)據(jù)的規(guī)范性和一致性。

第四范式

第四范式要求表中的每個多值依賴都必須是一個鍵函數(shù)依賴。換句話說,如果一個表中存在多值依賴,那么這些多值依賴必須完全依賴于表中的每一個候選鍵。第四范式主要用于解決表中存在的多值依賴問題,進一步提高了數(shù)據(jù)的規(guī)范性和一致性。

范式建模的優(yōu)缺點

優(yōu)點:

數(shù)據(jù)冗余較?。悍妒浇D軌蛳驕p少數(shù)據(jù)冗余,節(jié)省存儲空間。數(shù)據(jù)一致性較高:范式建模能夠提高數(shù)據(jù)的一致性,避免了數(shù)據(jù)更新時的異常情況。 缺點:

查詢性能較低:范式建??赡苄枰M行多次連接操作才能獲取所需數(shù)據(jù),影響了查詢性能。 設(shè)計和維護成本較高:范式建模的設(shè)計比較復(fù)雜,需要仔細考慮表之間的關(guān)系,維護起來也比較困難。

總結(jié)

不知道讀者們有沒有發(fā)現(xiàn),以上所介紹的范式的最終目的都是為了減少我們的工作量呢?所以說,盡管范式是一種很好的指導(dǎo)規(guī)范,但在實際應(yīng)用中,我們也不需要太局限在范式中,更多的是應(yīng)該從項目中出發(fā),設(shè)計出合理的表結(jié)構(gòu)。

以下是本篇三范式的簡單總結(jié):

第一范式(1 NF):字段不可再拆分。 第二范式(2 NF):表中任意一個主鍵或任意一組聯(lián)合主鍵,可以確定除該主鍵外的所有的非主鍵值。 第三范式(3 NF):在任一主鍵都可以確定所有非主鍵字段值的情況下,不能存在某非主鍵字段 A 可以獲取 某非主鍵字段 B。

范式建模的目標是獲得一個無冗余、靈活、易擴展的數(shù)據(jù)庫設(shè)計,但過度依賴范式建模也會造成數(shù)據(jù)庫結(jié)構(gòu)過于復(fù)雜。所以在實際建模過程中,需要綜合考慮業(yè)務(wù)需求和數(shù)據(jù)特征,在滿足基本范式的前提下,采取適當?shù)耐嘶O(shè)計,以保證數(shù)據(jù)庫設(shè)計的可用性。

常用的范式建模原則為

滿足3NF范式,不產(chǎn)生更新異常 根據(jù)業(yè)務(wù)需求,適當考慮BCNF范式或更高級范式 不追求完全范式化,允許適當冗余以提高性能。

需要建模人員在理論和實踐間取得平衡。總之,范式理論為關(guān)系數(shù)據(jù)庫建模提供了重要的理論基礎(chǔ)和指導(dǎo)原則。掌握好范式理論對設(shè)計高質(zhì)量的數(shù)據(jù)庫模型是必不可少的。

柚子快報邀請碼778899分享:數(shù)據(jù)倉庫—建模方法論—范式建模

http://yzkb.51969.com/

精彩文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19069772.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄