最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql數(shù)據(jù)庫設計三范式實例解析

 更新時間:2020年04月15日 10:09:32   作者:cool小伙  
這篇文章主要介紹了Mysql數(shù)據(jù)庫設計三范式實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

三范式

1NF:字段不可分;

2NF:有主鍵,非主鍵字段依賴主鍵;

3NF:非主鍵字段不能相互依賴;

解釋:

1NF:原子性 字段不可再分,否則就不是關系數(shù)據(jù)庫;

2NF:唯一性 一個表只說明一個事物;

3NF:每列都與主鍵有直接關系,不存在傳遞依賴;

第一范式(1NF)

即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只要數(shù)據(jù)庫是關系型數(shù)據(jù)庫(mysql/oracle/db2/informix/sysbase/sql server),就自動的滿足1NF。數(shù)據(jù)庫表的每一列都是不可分割的原子數(shù)據(jù)項,而不能是集合,數(shù)組,記錄等非原子數(shù)據(jù)項。如果實體中的某個屬性有多個值時,必須拆分為不同的屬性 。通俗理解即一個字段只存儲一項信息。

關系型數(shù)據(jù)庫: mysql/oracle/db2/informix/sysbase/sql server 非關系型數(shù)據(jù)庫: (特點: 面向?qū)ο蠡蛘呒? NoSql數(shù)據(jù)庫: MongoDB/redis(特點是面向文檔)

第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求數(shù)據(jù)庫表中的每個實例或行必須可以被惟一地區(qū)分。為實現(xiàn)區(qū)分通常需要我們設計一個主鍵來實現(xiàn)(這里的主鍵不包含業(yè)務邏輯)。

即滿足第一范式前提,當存在多個主鍵的時候,才會發(fā)生不符合第二范式的情況。比如有兩個主鍵,不能存在這樣的屬性,它只依賴于其中一個主鍵,這就是不符合第二范式。通俗理解是任意一個字段都只依賴表中的同一個字段。(涉及到表的拆分)

看下面的學生選課表:

學號 課程 成績 課程學分
10001 數(shù)學 100 6
10001 語文 90 2
10001 英語 85 3
10002 數(shù)學 90 6
10003 數(shù)學 99 6
10004 語文 89 2

表中主鍵為 (學號,課程),我們可以表示為 (學號,課程) -> (成績,課程學分), 表示所有非主鍵列 (成績,課程學分)都依賴于主鍵 (學號,課程)。 但是,表中還存在另外一個依賴:(課程)->(課程學分)。這樣非主鍵列 ‘課程學分‘ 依賴于部分主鍵列 '課程‘, 所以上表是不滿足第二范式的。

我們把它拆成如下2張表:

學生選課表:

學號 課程 成績
10001 數(shù)學 100
10001 語文 90
10001 英語 85
10002 數(shù)學 90
10003 數(shù)學 99
10004 語文 89

課程信息表:

課程 課程學分
數(shù)學 6
語文 3
英語 2

那么上面2個表,學生選課表主鍵為(學號,課程),課程信息表主鍵為(課程),表中所有非主鍵列都完全依賴主鍵。不僅符合第二范式,還符合第三范式。

再看這樣一個學生信息表:

學號 姓名 性別 班級 班主任
10001 張三 一班 小王
10002 李四 一班 小王
10003 王五 二班 小李
10004 張小三 二班 小李

上表中,主鍵為:(學號),所有字段 (姓名,性別,班級,班主任)都依賴與主鍵(學號),不存在對主鍵的部分依賴。所以是滿足第二范式。

第三范式(3NF)

滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡而言之,第三范式(3NF)要求一個數(shù)據(jù)庫表中不包含已在其它表中已包含的非主鍵字段。就是說,表的信息,如果能夠被推導出來,就不應該單獨的設計一個字段來存放(能盡量外鍵join就用外鍵join)。很多時候,我們?yōu)榱藵M足第三范式往往會把一張表分成多張表。

即滿足第二范式前提,如果某一屬性依賴于其他非主鍵屬性,而其他非主鍵屬性又依賴于主鍵,那么這個屬性就是間接依賴于主鍵,這被稱作傳遞依賴于主屬性。 通俗解釋就是一張表最多只存兩層同類型信息。

反三范式

沒有冗余的數(shù)據(jù)庫未必是最好的數(shù)據(jù)庫,有時為了提高運行效率,提高讀性能,就必須降低范式標準,適當保留冗余數(shù)據(jù)。具體做法是: 在概念數(shù)據(jù)模型設計時遵守第三范式,降低范式標準的工作放到物理數(shù)據(jù)模型設計時考慮。降低范式就是增加字段,減少了查詢時的關聯(lián),提高查詢效率,因為在數(shù)據(jù)庫的操作中查詢的比例要遠遠大于DML的比例。但是反范式化一定要適度,并且在原本已滿足三范式的基礎上再做調(diào)整的。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • mysql8報錯:ERROR?1410?(42000):?You?are?not?allowed?to?create?a?user?with?GRANT解決辦法

    mysql8報錯:ERROR?1410?(42000):?You?are?not?allowed?to?

    電腦新裝的mysql,版本為8.0以上,分配權限時直接帶密碼和賬號會報錯,這篇文章主要給大家介紹了關于mysql8報錯:ERROR?1410?(42000):?You?are?not?allowed?to?create?a?user?with?GRANT的解決辦法,需要的朋友可以參考下
    2022-06-06
  • mysql關聯(lián)子查詢的一種優(yōu)化方法分析

    mysql關聯(lián)子查詢的一種優(yōu)化方法分析

    這篇文章主要介紹了mysql關聯(lián)子查詢的一種優(yōu)化方法,結(jié)合實例形式分析了針對MySQL的關聯(lián)子查詢進行優(yōu)化的技巧,需要的朋友可以參考下
    2016-04-04
  • MySQL?EXPLAIN執(zhí)行計劃解析

    MySQL?EXPLAIN執(zhí)行計劃解析

    本文主要介紹了MySQL?EXPLAIN執(zhí)行計劃解析,通過MySQL?EXPLAIN執(zhí)行計劃的各個字段的含義以及使用方式。感興趣的小伙伴可以參考一下
    2022-08-08
  • MySQL處理重復數(shù)據(jù)的方法

    MySQL處理重復數(shù)據(jù)的方法

    這篇文章主要介紹了MySQL處理重復數(shù)據(jù)的方法,處理重復數(shù)據(jù)包括防止表中出現(xiàn)重復數(shù)據(jù)、統(tǒng)計重復數(shù)據(jù)、過濾刪除重復數(shù)據(jù),感興趣的小伙伴們可以參考一下
    2016-02-02
  • MySQL?數(shù)據(jù)庫聚合查詢和聯(lián)合查詢操作

    MySQL?數(shù)據(jù)庫聚合查詢和聯(lián)合查詢操作

    這篇文章主要介紹了MySQL?數(shù)據(jù)庫聚合查詢和聯(lián)合查詢操作,需要的朋友可以參考下
    2021-12-12
  • MySQL 啟動成功但未監(jiān)聽端口的解決方法

    MySQL 啟動成功但未監(jiān)聽端口的解決方法

    這篇文章主要給大家介紹了關于MySQL 啟動成功但未監(jiān)聽端口的解決方法,文中通過圖文給大家介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • MySQL使用IF語句及用case語句對條件并結(jié)果進行判斷?

    MySQL使用IF語句及用case語句對條件并結(jié)果進行判斷?

    這篇文章主要介紹了MySQL使用IF語句及用case語句對條件并結(jié)果進行判斷,文章通過圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 如何用命令行進入mysql具體操作步驟

    如何用命令行進入mysql具體操作步驟

    逛論壇時無意發(fā)現(xiàn)有個伙計提出這樣的問題,如何用命令行進入mysql,搜集整理了一些特意貼出來與大家分享,感興趣的你可以參考下希望對你有所幫助
    2013-03-03
  • MYSQL設置字段自動獲取當前時間的sql語句

    MYSQL設置字段自動獲取當前時間的sql語句

    整理數(shù)據(jù)庫數(shù)據(jù),看到好多表都有加create_time和 update_time字段,來記錄數(shù)據(jù)插入的時間和更新時間,但是時間插入是通過代碼來維護的,這篇文章主要介紹了MYSQL設置字段自動獲取當前時間,需要的朋友可以參考下
    2023-07-07
  • mysql最新版8.0.17解壓版安裝教程

    mysql最新版8.0.17解壓版安裝教程

    這篇文章主要為大家詳細介紹了最新版mysql 8.0.17 解壓版安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評論

河西区| 建平县| 新疆| 天峨县| 江油市| 定日县| 张家界市| 嘉鱼县| 昭觉县| 甘肃省| 论坛| 六安市| 邻水| 桂东县| 全南县| 巩义市| 卢湾区| 五峰| 尼勒克县| 高雄市| 彭山县| 菏泽市| 洛浦县| 萝北县| 沽源县| 崇州市| 琼海市| 鄂伦春自治旗| 丹棱县| 镇安县| 莎车县| 西丰县| 临清市| 呈贡县| 景东| 原阳县| 芷江| 涿州市| 砀山县| 葫芦岛市| 资中县|