国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

這篇具有很好參考價值的文章主要介紹了【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

此筆記為尚硅谷MySQL高級篇部分內容

目錄

一、為什么要數(shù)據(jù)庫設計?

二、范式

1、范式簡介

2、范式都包括哪些?

3、鍵和相關屬性的概念

4、第一范式(1st NF)

5、第二范式(2nd NF)

6、第三范式(3rd NF)

7、小結

三、反范式化

1、概述

2、?應用舉例

3、反范式的新問題

4、反范式的適用場景?

1. 增加冗余字段的建議?

2. 歷史快照、歷史數(shù)據(jù)的需要

五、BCNF(巴斯范式)

六、第四范式(了解)

七、第五范式、域鍵范式(了解)

八、ER模型

1、ER模型包括哪些要素?

2、關系的類型?

九、數(shù)據(jù)表的設計原則?

十、數(shù)據(jù)庫對象編寫建議

1、關于庫?

2、關于表、列

3、關于索引

4、SQL編寫


一、為什么要數(shù)據(jù)庫設計?


【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

二、范式


1、范式簡介

在關系型數(shù)據(jù)庫中,關于數(shù)據(jù)表設計的基本原則、規(guī)則就稱為范式。可以理解為,一張數(shù)據(jù)表的設計結構需要滿足的某種設計標準的 級別 。要想設計一個結構合理的關系型數(shù)據(jù)庫,必須滿足一定的范式。

2、范式都包括哪些?

目前關系型數(shù)據(jù)庫有六種常見范式,按照范式級別,從低到高分別是:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又稱完美范式)。

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

3、鍵和相關屬性的概念

范式的定義會使用到主鍵和候選鍵,數(shù)據(jù)庫中的鍵(Key)由一個或者多個屬性組成。數(shù)據(jù)表中常用的幾種鍵和屬性的定義:

  • 超鍵︰能唯─標識元組的屬性集叫做超鍵。

  • 候選鍵︰如果超鍵不包括多余的屬性,那么這個超鍵就是候選鍵?!ぶ麈I:用戶可以從候選鍵中選擇一個作為主鍵。

  • 外鍵∶如果數(shù)據(jù)表R1中的某屬性集不是R1的主鍵,而是另一個數(shù)據(jù)表R2的主鍵,那么這個屬性集就是數(shù)據(jù)表R1的外鍵。

  • 主屬性:包含在任一候選鍵中的屬性稱為主屬性。

  • 非主屬性:與主屬性相對,指的是不包含在任何一個候選鍵中的屬性。

通常,我們也將候選鍵稱之為“”,把主鍵也稱為“主碼”。因為鍵可能是由多個屬性組成的,針對單個屬性,我們還可以用主屬性和非主屬性來進行區(qū)分

4、第一范式(1st NF)

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

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

5、第二范式(2nd NF)

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

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

6、第三范式(3rd NF)

第三范式是在第二范式的基礎上,確保數(shù)據(jù)表中的每一個非主鍵字段都和主鍵字段直接相關,也就是說,要求數(shù) 據(jù)表中的所有非主鍵字段不能依賴于其他非主鍵字段。(即,不能存在非主屬性A依賴于非王屬性B,非士屬任B依賴于主鍵C的情況,即存在“A→B一C”"的決定關系)通俗地講,該規(guī)則的意思是所有非主鍵屬性之間不能有依 賴關系,必須相互獨立。

這里的主鍵可以拓展為候選鍵。

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

7、小結

關于數(shù)據(jù)表的設計,有三個范式要遵循。

(1)第一范式(1NF),確保每列保持原子性

數(shù)據(jù)庫的每一列都是不可分割的原子數(shù)據(jù)項,不可再分的最小數(shù)據(jù)單元,而不能是集合、數(shù)組、記錄等非原子數(shù)據(jù)項。

(2)第二范式(2NF),確保每列都和主鍵完全依賴

尤其在復合主鍵的情況下,非主鍵部分不應該依賴于部分主鍵。

(3)第三范式(3NF)確保每列都和主鍵列直接相關,而不是間接相關

范式的優(yōu)點: 數(shù)據(jù)的標準化有助于消除數(shù)據(jù)庫中的數(shù)據(jù)冗余,第三范式(3NF)通常被認為在性能、擴展性和數(shù)據(jù)完整性方面達到了最好的平衡。

范式的缺點: 范式的使用,可能降低查詢的效率。因為范式等級越高,設計出來的數(shù)據(jù)表就越多、越精細,數(shù)據(jù)的冗余度就越低,進行數(shù)據(jù)查詢的時候就可能需要關聯(lián)多張表,這不但代價昂貴,也可能使一些引策略無效

范式只是提出了設計的標準,實際上設計數(shù)據(jù)表時,未必一定要符合這些標準。開發(fā)中,我們會出現(xiàn)為了性能和讀取效率違反范式化的原則,通過增加少量的冗余或重復的數(shù)據(jù)來提高數(shù)據(jù)庫的讀性能,減少關聯(lián)查詢,join表的次數(shù),實現(xiàn)空間換取時間的目的。因此在實際的設計過程中要理論結合實際,靈活運用。

范式本身沒有優(yōu)劣之分,只有適用場景不同。沒有完美的設計,只有合適的設計,我們在數(shù)據(jù)表的設計中,還需要根據(jù)需求將范式和反范式混合使用。

三、反范式化


1、概述

規(guī)范化 vs 性能

  • 1. 為滿足某種商業(yè)目標 , 數(shù)據(jù)庫性能比規(guī)范化數(shù)據(jù)庫更重要
  • 2. 在數(shù)據(jù)規(guī)范化的同時 , 要綜合考慮數(shù)據(jù)庫的性能
  • 3. 通過在給定的表中添加額外的字段,以大量減少需要從中搜索信息所需的時間
  • 4. 通過在給定的表中插入計算列,以方便查詢

2、?應用舉例

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

3、反范式的新問題

  • 存儲 空間變大
  • 一個表中字段做了修改,另一個表中冗余的字段也需要做同步修改,否則 數(shù)據(jù)不一致
  • 若采用存儲過程來支持數(shù)據(jù)的更新、刪除等額外操作,如果更新頻繁,會非常 消耗系統(tǒng)資源
  • 數(shù)據(jù)量小 的情況下,反范式不能體現(xiàn)性能的優(yōu)勢,可能還會讓數(shù)據(jù)庫的設計更加 復雜

4、反范式的適用場景?

當冗余信息有價值或者能 大幅度提高查詢效率 的時候,我們才會采取反范式的優(yōu)化。

1. 增加冗余字段的建議?

2. 歷史快照、歷史數(shù)據(jù)的需要

在現(xiàn)實生活中,我們經常需要一些冗余信息,比如訂單中的收貨人信息,包括姓名、電話和地址等。每次發(fā)生的 訂單收貨信息 都屬于 歷史快照 ,需要進行保存,但用戶可以隨時修改自己的信息,這時保存這些冗余信息是非常有必要的。
反范式優(yōu)化也常用在 數(shù)據(jù)倉庫 的設計中,因為數(shù)據(jù)倉庫通常 存儲歷史數(shù)據(jù) ,對增刪改的實時性要求不強,對歷史數(shù)據(jù)的分析需求強。這時適當允許數(shù)據(jù)的冗余度,更方便進行數(shù)據(jù)分析。

五、BCNF(巴斯范式)


【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

六、第四范式(了解)


【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

七、第五范式、域鍵范式(了解)


【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

八、ER模型


1、ER模型包括哪些要素?

ER 模型中有三個要素,分別是實體、屬性和關系。

  • 實體 ,可以看做是數(shù)據(jù)對象,往往對應于現(xiàn)實生活中的真實存在的個體。在 ER 模型中,用 矩形 來表示。實體分為兩類,分別是 強實體 和 弱實體 。強實體是指不依賴于其他實體的實體;弱實體是指對另一個實體有很強的依賴關系的實體。
  • 屬性 ,則是指實體的特性。比如超市的地址、聯(lián)系電話、員工數(shù)等。在 ER 模型中用 橢圓形 來表示。
  • 關系 ,則是指實體之間的聯(lián)系。比如超市把商品賣給顧客,就是一種超市與顧客之間的聯(lián)系。在 ER 模型中用 菱形 來表示。

注意:實體和屬性不容易區(qū)分。這里提供一個原則:我們要從系統(tǒng)整體的角度出發(fā)去看,可以獨立存在的是實體,不可再分的是屬性。也就是說,屬性不能包含其他屬性。?

2、關系的類型?

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

九、數(shù)據(jù)表的設計原則?


綜合以上內容,總結出數(shù)據(jù)表設計的一般原則:"三少一多"

  • 1. 數(shù)據(jù)表的個數(shù)越少越好
  • 2. 數(shù)據(jù)表中的字段個數(shù)越少越好
  • 3. 數(shù)據(jù)表中聯(lián)合主鍵的字段個數(shù)越少越好
  • 4. 使用主鍵和外鍵越多越好

注意:這個原則并不是絕對的,有時候我們需要犧牲數(shù)據(jù)的冗余度來換取數(shù)據(jù)處理的效率。?

十、數(shù)據(jù)庫對象編寫建議


1、關于庫?

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

2、關于表、列

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

3、關于索引

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

4、SQL編寫

【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】

高級篇筆記PDF自取

鏈接:https://pan.baidu.com/s/1pVqrTwIZFoED77i-EFmw6g?pwd=3333?
提取碼:3333文章來源地址http://www.zghlxwxcb.cn/news/detail-478553.html

到了這里,關于【MySQL高級篇筆記-數(shù)據(jù)庫的設計規(guī)范(中) 】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【數(shù)據(jù)庫原理 ? 四】數(shù)據(jù)庫設計和規(guī)范化理論

    【數(shù)據(jù)庫原理 ? 四】數(shù)據(jù)庫設計和規(guī)范化理論

    前言 數(shù)據(jù)庫技術是計算機科學技術中發(fā)展最快,應用最廣的技術之一,它是專門研究如何科學的組織和存儲數(shù)據(jù),如何高效地獲取和處理數(shù)據(jù)的技術。它已成為各行各業(yè)存儲數(shù)據(jù)、管理信息、共享資源和決策支持的最先進,最常用的技術。 當前互聯(lián)網(wǎng)+與大數(shù)據(jù),一切都建立

    2023年04月12日
    瀏覽(23)
  • 數(shù)據(jù)庫——MySQL高性能優(yōu)化規(guī)范

    所有數(shù)據(jù)庫對象名稱必須使用小寫字母并用下劃線分割 所有數(shù)據(jù)庫對象名稱禁止使用 MySQL 保留(如果表名中包含查詢時,需要將其用單引號括起來) 數(shù)據(jù)庫對象的命名要能做到見名識意,并且最后不要超過 32 個字符 臨時庫表必須以 tmp_為前綴并以日期為后綴,

    2024年02月11日
    瀏覽(49)
  • 數(shù)據(jù)庫—設計規(guī)范(依賴、范式、分解)

    如果在一個二維表中:Students(Sno , name, age),Sno 是這個表中的主鍵,所以對于其他屬性來說,Sno決定name,Sno決定age,反過來則叫做name函數(shù)依賴于Sno… 定義:主碼決定其他屬性,其他屬性函數(shù)依賴于主碼 非平凡函數(shù)依賴 SC(Sno,Cno,Grade)這么一個表中解釋,首先主碼是Sno和Cno聯(lián)合

    2024年02月12日
    瀏覽(14)
  • MySQL筆記(一):設計范式、基礎概念、數(shù)據(jù)庫定義語言DDL

    MySQL筆記(一):設計范式、基礎概念、數(shù)據(jù)庫定義語言DDL

    MySQL是一種數(shù)據(jù)庫管理系統(tǒng) (DBMS),是基于客戶機-服務器的數(shù)據(jù)庫; 分為兩個不同的部分, 服務器軟件(MySQL DBMS)是負責所有數(shù)據(jù)訪問和處理的一個文件,這個軟件運行在稱為數(shù)據(jù)庫服務器的計算機上,與數(shù)據(jù)文件打交道; 客戶機則是與用戶打交道的軟件,對于用戶提出的

    2024年02月03日
    瀏覽(22)
  • JAVA編碼規(guī)范:安全規(guī)約、mysql數(shù)據(jù)庫_java后端的sql編碼規(guī)范

    JAVA編碼規(guī)范:安全規(guī)約、mysql數(shù)據(jù)庫_java后端的sql編碼規(guī)范

    7、【強制】如果存儲的字符串長度幾乎相等,使用 char定長字符串類型 8、【強制】varchar是可變長字符串,不預先分配存儲空間,長度不要超過 5000,如果存儲長度大于此值,定義字段類型為 text,獨立出來一張 表,用主鍵來對應,避免影響其它字段索引效率。 9、【強制】表

    2024年04月10日
    瀏覽(43)
  • MySQL 數(shù)據(jù)庫實用指南:測試數(shù)據(jù)準備、SQL語句規(guī)范與基本操作

    MySQL 數(shù)據(jù)庫實用指南:測試數(shù)據(jù)準備、SQL語句規(guī)范與基本操作

    歡迎來到小K的MySQL專欄,本節(jié)將為大家準備MySQL測試數(shù)據(jù)、以及帶來SQL語句規(guī)范、數(shù)據(jù)庫的基本操作的詳細講解 要學習SQL查詢語句,首先必須解決一個問題,數(shù)據(jù)問題。為了方便大家學習閱讀我的文章,在這里提供了一個test.sql文件 ? 登錄MySQL,輸入 source xxx/test.sql 導入sql文

    2024年02月08日
    瀏覽(32)
  • 數(shù)據(jù)庫:園林題庫軟件(《城市綠地設計規(guī)范》答題卷二 )

    《城市綠地設計規(guī)范》答題卷二 填空題 1、城市綠地的豎向設計應以總體設計布局及 控制高程 為依據(jù),營造有利于雨水就地消納的地形并應與相鄰用地標高相協(xié)調,有利于相鄰其他用地的排水。 2、豎向設計應滿足植物的生態(tài)習性要求,有利于 雨水 的排蓄,有利于創(chuàng)造多種

    2024年01月21日
    瀏覽(23)
  • MySQL數(shù)據(jù)庫 --- 高級篇

    MySQL數(shù)據(jù)庫 --- 高級篇

    1.1.1、連接層 最上層是一些客戶端和鏈接服務,包含本地sock 通信和大多數(shù)基于客戶端/服務端工具實現(xiàn)的類似于TCP/IP的通信。主要完成一些類似于連接處理、授權認證、及相關的安全方案。在該層上引入了線程池的概念,為通過認證安全接入的客戶端提供線程。同樣在該層上

    2024年02月08日
    瀏覽(18)
  • MySQL數(shù)據(jù)庫高級操作

    MySQL數(shù)據(jù)庫高級操作

    if not exists:表示檢測要創(chuàng)建的表是否已存在,如果不存在就繼續(xù)創(chuàng)建 int(4) zerofill:表示若數(shù)值不滿4位數(shù),則前面用“0”填充,例0001 auto_increment:表示此字段為自增長字段,即每條記錄自動遞增1,默認從1開始遞增;自增長字段數(shù)據(jù)不可以重復;自增長字段必須是主鍵;如添

    2024年02月09日
    瀏覽(25)
  • MySQL數(shù)據(jù)庫高級查詢語句

    MySQL數(shù)據(jù)庫高級查詢語句

    基于這兩個數(shù)據(jù)庫表格來實現(xiàn)以下實驗 concat(x,y)將提供的參數(shù)x和y拼接成一個字符串 trim()返回去除指定格式的值 GROUP BY 有一個原則,凡是在 GROUP BY 后面出現(xiàn)的字段,必須在 SELECT 后面出現(xiàn); 凡是在 SELECT 后面出現(xiàn)的、且未在聚合函數(shù)中出現(xiàn)的字段,必須出現(xiàn)在 GROUP BY 后

    2024年02月11日
    瀏覽(97)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包