在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    阿里面試篇:數(shù)據(jù)庫(kù)的三大范式

    阿里面試篇:數(shù)據(jù)庫(kù)的三大范式

    1.為什么需要數(shù)據(jù)庫(kù)設(shè)計(jì)

    設(shè)計(jì)數(shù)據(jù)表的時(shí)候,要考慮很多的問(wèn)題:

    • 用戶需要哪些數(shù)據(jù),我們?cè)跀?shù)據(jù)表中要保存哪一些數(shù)據(jù)
    • 怎么保證數(shù)據(jù)表中的數(shù)據(jù)的正確性
    • 如何降低數(shù)據(jù)表的冗余
    • 開(kāi)發(fā)人員怎么才能更方便的使用數(shù)據(jù)庫(kù)

    如果數(shù)據(jù)庫(kù)設(shè)計(jì)得不合理的話,可能導(dǎo)致下面的幾種問(wèn)題:

    • 設(shè)計(jì)容易,信息重復(fù),存儲(chǔ)空間浪費(fèi)
    • 數(shù)據(jù)更新,插入,刪除的異常
    • 不能正確表示信息
    • 丟失有效信息
    • 程序性能

    我們可以看出設(shè)計(jì)良好的數(shù)據(jù)庫(kù)是很重要的,它有下面的優(yōu)點(diǎn):

    • 節(jié)省數(shù)據(jù)的存儲(chǔ)空間
    • 能夠保證數(shù)據(jù)的完整性
    • 方便進(jìn)行數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的開(kāi)發(fā)
    • 設(shè)計(jì)數(shù)據(jù)庫(kù),我們得重視數(shù)據(jù)表的設(shè)計(jì),為了建立冗余度小,結(jié)構(gòu)合理的數(shù)據(jù)庫(kù),設(shè)計(jì)數(shù)據(jù)庫(kù)必須遵循一定的規(guī)則。

    2.范式(Normal Formal)

    2.1范式概述

    關(guān)系型數(shù)據(jù)庫(kù)中,關(guān)于數(shù)據(jù)表設(shè)計(jì)的基本原則,規(guī)則就稱為范式,范式是我們?cè)谠O(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu)過(guò)程中需要遵循的規(guī)則和指導(dǎo)方法。

    不過(guò),有的時(shí)候?yàn)榱颂岣吣骋恍┎樵冃阅埽覀冞€需要破壞范式規(guī)則,也就是反規(guī)范化。

    2.2鍵和相關(guān)屬性的概念

    范式的定義會(huì)用到主鍵和候選鍵,我們先來(lái)看看相關(guān)的概念,數(shù)據(jù)庫(kù)中的鍵是由一個(gè)或多個(gè)屬性組成的,我們來(lái)看一下數(shù)據(jù)表中常用的幾種鍵和屬性的定義。

    2.3第一范式(1NF)

    • 第一范式主要是保證數(shù)據(jù)表中的每一個(gè)字段的值必須具有原子性,也就是數(shù)據(jù)表中的每個(gè)字段的值是不可再拆分的最小數(shù)據(jù)單元

    • 屬性的原子性是主觀的,我們要根據(jù)實(shí)際項(xiàng)目的需求來(lái)設(shè)計(jì),比如說(shuō)地址,如果項(xiàng)目沒(méi)有說(shuō)要細(xì)分為省,市,縣,鎮(zhèn)這么具體的話,我們一般就可以不拆分。

    2.4第二范式(2NF)

    • 第二范式要求在滿足第一范式的基礎(chǔ)上,還要滿足數(shù)據(jù)表里的每一條數(shù)據(jù)記錄,都是可唯一標(biāo)識(shí)的,而且所有的非主鍵字段,都必須完全依賴主鍵,不能只依賴主鍵的一部分。
    • 如果知道主鍵的所有屬性的值,我們就可以檢索任何元組(行)的任何屬性的任何值(要求中的主鍵可以拓展替換為候選鍵)

    比如說(shuō),在成績(jī)表(學(xué)號(hào),課程號(hào),成績(jī))關(guān)系中,(學(xué)號(hào),課程號(hào))可以決定成績(jī),因?yàn)橐粋€(gè)學(xué)生可以選多門課,一門課也可以被多個(gè)學(xué)生選擇,所以學(xué)號(hào)或課程號(hào)都不能單獨(dú)決定成績(jī)。

    所以(學(xué)號(hào),課程號(hào))——>成績(jī)就是完全依賴關(guān)系。

    比賽表里面包含球員編號(hào),姓名,年齡,比賽編號(hào),比賽實(shí)際和比賽場(chǎng)地等屬性,候選鍵和主鍵都是(球員編號(hào),比賽編號(hào)),我們可以通過(guò)候選鍵(主鍵)來(lái)決定下面的關(guān)系。

    (球員編號(hào),比賽編號(hào))——>(姓名,年齡,比賽時(shí)間,比賽場(chǎng)地,得分)

    但是這個(gè)數(shù)據(jù)表不滿足第二范式,因?yàn)閿?shù)據(jù)表中的字段之間還存在下面的對(duì)應(yīng)關(guān)系:

    (球員編號(hào))——>(姓名,年齡)

    (比賽編號(hào))——>(比賽時(shí)間,比賽場(chǎng)地)

    非主屬性并非完全依賴候選鍵,這樣會(huì)產(chǎn)生下面的問(wèn)題。

    • 數(shù)據(jù)冗余:如果一個(gè)球員參加m場(chǎng)比賽,那么球員的姓名和年齡就重復(fù)了m-1次,一個(gè)比賽可能有n個(gè)球員參加,比賽時(shí)間和地點(diǎn)就重復(fù)了n-1次
    • 插入異常:如果我們要添加一場(chǎng)新的比賽,但是這時(shí)還沒(méi)有確定參加的球員都有誰(shuí)2,那么就沒(méi)發(fā)插入
    • 刪除異常:我們想刪除某個(gè)球員編號(hào),但是如果沒(méi)有單獨(dú)保存比賽表的話,就會(huì)同時(shí)把比賽信息刪除掉
    • 更新異常:如果我們調(diào)整了某個(gè)比賽時(shí)間,那么數(shù)據(jù)表所有的這個(gè)比賽的時(shí)間都得進(jìn)行調(diào)整,不然就會(huì)出現(xiàn)同一場(chǎng)比賽但是時(shí)間不同的情況。

    為了避免上述情況,我們可以把球員比賽表設(shè)計(jì)成下面的三張表。

    這樣的話,每張數(shù)據(jù)表都符合第二范式,,就避免了異常情況的發(fā)生

    第二范式要求實(shí)體的屬性完全依賴主關(guān)鍵字,如果存在不完全依賴,那么這個(gè)屬性和主關(guān)鍵字的這一部分就應(yīng)該分離處理形成一個(gè)新的實(shí)體,新實(shí)體和原來(lái)實(shí)體之間是一對(duì)多的關(guān)系

    2.5第三范式(3NF)

    • 第三范式建立在已經(jīng)滿足第二范式的基礎(chǔ)上
    • 數(shù)據(jù)表中的每一個(gè)非主鍵字段都和主鍵字段直接相關(guān)
    • 也就是說(shuō)數(shù)據(jù)表中的所有非主鍵字段不能依賴于其他非主鍵字段
    • 這個(gè)規(guī)則的意思是所有非主屬性之間不能有依賴關(guān)系,它們是互相獨(dú)立的
    • 這里的主鍵可以拓展成為候選鍵

    、

    2.6范式的優(yōu)缺點(diǎn)

    • 優(yōu)點(diǎn):

      • 數(shù)據(jù)的標(biāo)準(zhǔn)化有助于消除數(shù)據(jù)庫(kù)中的數(shù)據(jù)冗余
      • 第三范式通常被認(rèn)為在性能,擴(kuò)展性和數(shù)據(jù)完整性方面達(dá)到了最好的平衡

    • 缺點(diǎn):

      • 降低了查詢效率,因?yàn)榉妒降燃?jí)越高,設(shè)計(jì)出來(lái)的表就越多,進(jìn)行數(shù)據(jù)查詢的時(shí)候就可能需要關(guān)聯(lián)多張表,不僅代價(jià)昂貴,而且可能會(huì)使得一些索引失效

      • 范式只是提出設(shè)計(jì)的標(biāo)標(biāo)準(zhǔn),實(shí)際設(shè)計(jì)的時(shí)候,我們可能為了性能和讀取效率違反范式的原則,通過(guò)增加少量的冗余或重復(fù)的數(shù)據(jù)來(lái)提高數(shù)據(jù)庫(kù)的讀取性能,減少關(guān)聯(lián)查詢,實(shí)現(xiàn)空間換時(shí)間的目的

    3.反范式化

    3.1概述

    • 遵循業(yè)務(wù)優(yōu)先的原則
    • 首先滿足業(yè)務(wù)需求,再進(jìn)來(lái)減少冗余
    • 有時(shí)候我們想要對(duì)查詢效率進(jìn)行優(yōu)化,反范式化也是一種優(yōu)化思路,我們可以通過(guò)在數(shù)據(jù)表中增加冗余字段來(lái)提高數(shù)據(jù)庫(kù)的讀性能。

    3.2 反范式的新問(wèn)題

    反范式雖然可以通過(guò)空間換實(shí)際,提升查詢的效率,但是反范式也會(huì)帶來(lái)一些新問(wèn)題

    • 存儲(chǔ)空間變大了
    • 一個(gè)表中字段做了修改,另外一個(gè)表中冗余字段也要同步進(jìn)行修改,不然會(huì)導(dǎo)致數(shù)據(jù)不一致
    • 如果用存儲(chǔ)過(guò)程了支持?jǐn)?shù)據(jù)的更新,刪除等操作,如果操作頻繁,就會(huì)消耗系統(tǒng)資源
    • 在數(shù)據(jù)量小的情況下,反范式不能體現(xiàn)性能的優(yōu)勢(shì),可能還會(huì)讓數(shù)據(jù)庫(kù)的設(shè)計(jì)更加復(fù)雜。

    3.3反范式的適用場(chǎng)景

    當(dāng)冗余信息能大幅度提高查詢效率的時(shí)候,我們才會(huì)采取反范式的優(yōu)化。

    增加冗余字段的建議

    增加冗余冗余字段一定要符合下面的兩個(gè)條件,滿足下面的兩個(gè)條件才可以考慮增加冗余字段

    ①這個(gè)冗余字段不需要經(jīng)常進(jìn)行修改

    ②這個(gè)冗余字段查詢的時(shí)候不可或缺

    4.BCNF(巴斯范式)

    這個(gè)表符合第三范式

    碼出八股文_斬出offer線八股文導(dǎo)航(持續(xù)更新)

    字節(jié)面試:如何設(shè)計(jì)一個(gè)秒殺系統(tǒng)

    IDEA 官宣全新默認(rèn) UI,太震撼了!!

    實(shí)習(xí)轉(zhuǎn)正上岸,我經(jīng)歷了什么?

    SQL查找是否”存在”,別再count了!

    如果本文對(duì)你有幫助,別忘記給我個(gè)3連 ,點(diǎn)贊,轉(zhuǎn)發(fā),評(píng)論,

    咱們下期見(jiàn)!答案獲取方式:已贊 已評(píng) 已關(guān)~

    學(xué)習(xí)更多知識(shí)與技巧,關(guān)注與私信博主(03)

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年7月3日 22:03
    下一篇 2022年7月3日 22:03

    相關(guān)推薦

    • 破案了!李鐵被帶走細(xì)節(jié)曝光,始作俑者是武漢卓爾

      前幾天,前國(guó)家隊(duì)主帥李鐵突然被帶走的事情引發(fā)了球迷們的熱議,針對(duì)這個(gè)事情,外界的猜測(cè)有很多個(gè)版本,而這其中媒體人冉雄飛的說(shuō)法可能是最為權(quán)威的。現(xiàn)在他針對(duì)這個(gè)事情繼續(xù)進(jìn)行爆料,透露了…

      2022年11月27日
    • 內(nèi)馬爾被侵犯9次

      1、如今大家非常熱衷于討論這件事,因?yàn)槟鞘莾?nèi)馬爾,一切都被放大了我尊重貝利的批評(píng),但是我并不認(rèn)同”不可否認(rèn)的是,內(nèi)馬爾在世界杯賽場(chǎng)上的確被對(duì)方球員重點(diǎn)照顧,多次被侵犯,這和內(nèi)馬爾的…

      2022年11月26日
    • 《寶可夢(mèng)朱紫》獒教父屬性是什么?獒教父屬性一覽

      寶可夢(mèng)朱紫里獒教父是一只很強(qiáng)的寶可夢(mèng),很多玩家不清楚獒教父的屬性是什么樣的,下面就給大家?guī)?lái)寶可夢(mèng)朱紫獒教父屬性一覽,感興趣的小伙伴一起來(lái)看看吧,希望能幫助到大家。 獒教父屬性一覽…

      2022年11月25日
    • 《寶可夢(mèng)朱紫》太晶化強(qiáng)力寶可夢(mèng)推薦 太晶化哪些寶可夢(mèng)最強(qiáng)?

      寶可夢(mèng)朱紫游戲中寶可夢(mèng)種類繁多,不過(guò)有的寶可夢(mèng)比較強(qiáng),有的稍弱一些,那么太晶化化哪些寶可夢(mèng)最強(qiáng)呢,為了便于大家更好的體驗(yàn)游戲,這里給大家?guī)?lái)了寶可夢(mèng)朱紫太晶化強(qiáng)力寶可夢(mèng)推薦,一起來(lái)…

      2022年11月25日
    • “C羅哭了”!創(chuàng)造歷史!

      葡萄牙3:2加納!賽前“C羅哭了”登上熱搜第一 北京時(shí)間11月25日0時(shí),2022卡塔爾世界杯小組賽H組第1輪,葡萄牙隊(duì)與加納隊(duì)在974球場(chǎng)展開(kāi)角逐。 在賽前奏唱國(guó)歌環(huán)節(jié), 葡萄牙…

      2022年11月25日
    • 寶可夢(mèng)朱紫四大天王屬性怎么樣 四大天王屬性數(shù)值介紹

      寶可夢(mèng)朱紫四大天王屬性如何?四大天王的屬性數(shù)值玩家們還是挺好奇的,想要了解四大天王屬性的可以看看下面小編的介紹,小編會(huì)把四大天王的屬性數(shù)值全都分享在下面,各位趕緊來(lái)小編這里多了解一…

      2022年11月25日
    • 寶可夢(mèng)朱紫皮卡丘多少級(jí)進(jìn)化 皮卡丘進(jìn)化條件攻略

      寶可夢(mèng)朱紫皮卡丘進(jìn)化條件是什么?皮卡丘怎么進(jìn)化?作為最受歡迎的電屬性寶可夢(mèng),大家都很想知道皮卡丘進(jìn)化的方法,今天小編這就在下面的攻略中分享皮卡丘進(jìn)化條件,各位可以趕緊來(lái)小編這里了解…

      2022年11月25日
    • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

      CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊(cè),可以是激活,可以是搜索下載激活,可以是綁卡,實(shí)名認(rèn)證,可以是付費(fèi),可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來(lái)定…

      2022年11月25日
    • 抖音直播帶貨有哪些方法技巧(抖音直播帶貨有哪些痛點(diǎn))

      如今抖音這個(gè)短視頻的變現(xiàn)能力越來(lái)越突顯了,尤其是在平臺(tái)上開(kāi)通直播,更具有超強(qiáng)的帶貨屬性,已經(jīng)有越來(lái)越多的普通人加入到其中了。不過(guò)直播帶貨雖然很火,但是也不是每個(gè)人都能做好的,那么在…

      2022年11月24日
    • OPPO Reno9 Pro+硬件規(guī)格強(qiáng) 搭載驍龍8+旗艦處理器

      OPPO Reno9系列正式發(fā)布,Reno9 Pro+作為三款新機(jī)中定位最高的超大杯機(jī)型,整體配置較上一代有著大幅度的升級(jí),如果單看硬件配置的話,Reno9 Pro+甚至是目前OP…

      2022年11月24日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息