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

【MySQL】數(shù)據(jù)庫基本知識小結

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

哈嘍大家好,我是阿Q,今天我們來總結一下【MySQL】 入門的必備知識點吧~

數(shù)據(jù)庫的基本概念

  • 數(shù)據(jù)庫:DataBase 簡稱 DB,就是信息的集合或者說數(shù)據(jù)庫是由數(shù)據(jù)庫管理系統(tǒng)管理的數(shù)據(jù)的集合。
  • 數(shù)據(jù)庫管理系統(tǒng):DataBase Management System 簡稱 DBMS,是一種操縱和管理數(shù)據(jù)庫的大型軟件,通常用于建立、使用和維護數(shù)據(jù)庫。
  • 數(shù)據(jù)庫管理員:DataBase Administrator, 簡稱 DBA,負責全面管理和控制數(shù)據(jù)庫系統(tǒng)。

什么是元組, 碼, 候選碼, 主碼, 外碼, 主屬性, 非主屬性?

  • 元組:元組(tuple)是關系數(shù)據(jù)庫中的基本概念,關系是一張表,表中的每行(即數(shù)據(jù)庫中的每條記錄)就是一個元組,每列就是一個屬性。 在二維表里,元組也稱為行。
  • 碼:碼就是能唯一標識實體的屬性,對應表中的列;
  • 候選碼: 若關系中的某一屬性或?qū)傩越M的值能唯一的標識一個元組,而其任何、子集都不能再標識,則稱該屬性組為候選碼。我理解的是一個字段或者多個字段組成唯一索引。例如:在學生實體中,“學號”是能唯一的區(qū)分學生實體的,同時又假設“姓名”、“班級”的屬性組合足以區(qū)分學生實體,那么{學號}和{姓名,班級}都是候選碼。
  • 主碼:主碼也叫主鍵。主碼是從候選碼中選出來的。 一個實體集中只能有一個主碼,但可以有多個候選碼。
  • 外碼:外碼也叫外鍵。如果一個關系中的一個屬性是另外一個關系中的主碼則這個屬性為外碼。
  • 主屬性:候選碼中出現(xiàn)過的屬性稱為主屬性。比如關系 工人(工號,身份證號,姓名,性別,部門). 顯然工號和身份證號都能夠唯一標示這個關系,所以都是候選碼。工號、身份證號這兩個屬性就是主屬性。如果主碼是一個屬性組,那么屬性組中的屬性都是主屬性。
  • 非主屬性:不包含在任何一個候選碼中的屬性稱為非主屬性。比如在關系——學生(學號,姓名,年齡,性別,班級)中,主碼是“學號”,那么其他的“姓名”、“年齡”、“性別”、“班級”就都可以稱為非主屬性。

主鍵和外鍵有什么區(qū)別?

  • 主鍵(主碼) :主鍵用于唯一標識一個元組,不能有重復,不允許為空。一個表只能有一個主鍵。
  • 外鍵(外碼) :外鍵用來和其他表建立聯(lián)系用,外鍵是另一表的主鍵,外鍵是可以有重復的,可以是空值。一個表可以有多個外鍵。

為什么不推薦使用外鍵與級聯(lián)?

對于外鍵和級聯(lián),阿里巴巴開發(fā)手冊這樣說到:

【強制】不得使用外鍵與級聯(lián),一切外鍵概念必須在應用層解決。
說明: 以學生和成績的關系為例,學生表中的 student_id 是主鍵,那么成績表中的 student_id 則為外鍵。如果更新學生表中的 student_id,同時觸發(fā)成績表中的 student_id 更新,即為級聯(lián)更新。外鍵與級聯(lián)更新適用于單機低并發(fā),不適合分布式、高并發(fā)集群; 級聯(lián)更新是強阻塞,存在數(shù)據(jù)庫更新風暴的風 險; 外鍵影響數(shù)據(jù)庫的插入速度。

外鍵的缺點

  1. 增加了復雜性: a. 每次做DELETE 或者UPDATE都必須考慮外鍵約束,會導致開發(fā)的時候很痛苦, 測試數(shù)據(jù)極為不方便; b. 外鍵的主從關系是定的,假如哪天需求有變化,數(shù)據(jù)庫中的這個字段根本不需要和其他表有關聯(lián)的話就會增加很多麻煩。
  2. 增加了額外工作:數(shù)據(jù)庫需要增加維護外鍵的工作,比如當我們做一些涉及外鍵字段的增,刪,更新操作之后,需要觸發(fā)相關操作去檢查,保證數(shù)據(jù)的的一致性和正確性,這樣會不得不消耗資源;(個人覺得這個不是不用外鍵的原因,因為即使你不使用外鍵,你在應用層面也還是要保證的。所以,我覺得這個影響可以忽略不計。)
  3. 對分庫分表不友好 :因為分庫分表下外鍵是無法生效的。

外鍵的優(yōu)點

  1. 保證了數(shù)據(jù)庫數(shù)據(jù)的一致性和完整性;
  2. 級聯(lián)操作方便,減輕了程序代碼量;

總結

如果不涉及到分庫分表,并發(fā)量不是很高的可以考慮外鍵。

ER 圖

E-R 圖 也稱實體-聯(lián)系圖(Entity Relationship Diagram),提供了表示實體類型、屬性和聯(lián)系的方法,用來描述現(xiàn)實世界的概念模型。 它是描述現(xiàn)實世界關系概念模型的有效方法,是表示概念關系模型的一種方式。

下圖是一個學生選課的 ER 圖,每個學生可以選若干門課程,同一門課程也可以被若干人選擇,所以它們之間的關系是多對多(M: N)。另外,還有其他兩種關系是:1 對 1(1:1)、1 對多(1: N)。

【MySQL】數(shù)據(jù)庫基本知識小結

我們試著將上面的 ER 圖轉換成數(shù)據(jù)庫實際的關系模型(實際設計中,我們通常會將任課教師也作為一個實體來處理)

【MySQL】數(shù)據(jù)庫基本知識小結

數(shù)據(jù)庫范式

1NF(第一范式)

屬性(對應于表中的字段)不能再被分割,也就是這個字段只能是一個值,不能再分為多個其他的字段了。1NF 是所有關系型數(shù)據(jù)庫的最基本要求 ,也就是說關系型數(shù)據(jù)庫中創(chuàng)建的表一定滿足第一范式。

2NF(第二范式)

2NF 在 1NF 的基礎之上,消除了非主屬性對于碼的部分函數(shù)依賴

舉例1:比如學生表中有學號、姓名、系名、課名、分數(shù)字段,其中(學號、課名)能唯一確定一條數(shù)據(jù),所以(學號、課名)就被稱為碼,則學號、課名分別被稱為主屬性,其它的字段便為非主屬性。此時(學號、課名)能確定唯一的學生姓名,但是學號也可以確定,這就是非主屬性(姓名)對于碼(學號、課名)的部分函數(shù)依賴。

舉例2:比如學生表中有學號、姓名、系名、課名、分數(shù)字段,我們把它拆成學號、課名、分數(shù)表(表一)和學號、姓名、系名表(表二)。

  • 表一中(學號、課名)依然是碼,此時(學號、課名)能確定唯一的分數(shù),但是學號和課名不能單獨確定,所以不存在非主屬性分數(shù)對于碼 (學號、課名)的部分函數(shù)依賴,所以此表符合2NF的要求。
  • 表二中學號是碼,非主屬性是姓名、系名,因為碼只有一個屬性,所以不可能存在非主屬性對于碼的部分函數(shù)依賴,也符合2NF的要求。

如下圖所示,展示了第一范式到第二范式的過渡。第二范式在第一范式的基礎上增加了一個列,這個列稱為主鍵,非主屬性都依賴于主鍵。

【MySQL】數(shù)據(jù)庫基本知識小結

3NF(第三范式)

3NF 在 2NF 的基礎之上,消除了非主屬性對于碼的傳遞函數(shù)依賴。符合 3NF 要求的數(shù)據(jù)庫設計,基本上解決了數(shù)據(jù)冗余過大,插入異常,修改異常,刪除異常的問題。

舉例:比如學生表中有學號、姓名、系名、系主任字段,學號是碼,非主屬性是姓名、系名、系主任。其中系名依賴于學號,系主任依賴于系名,所以存在非主屬性(系主任)對于碼(學號)的傳遞依賴,所以該表不符合3NF的要求,可以將表拆為(學號,姓名,系名)和(系名、系主任)。

概念補充

  • 函數(shù)依賴(functional dependency) :若在一張表中,在屬性(或?qū)傩越M)X 的值確定的情況下,必定能確定屬性 Y 的值,那么就可以說 Y 函數(shù)依賴于 X,寫作 X → Y。
  • 部分函數(shù)依賴(partial functional dependency) :如果 X→Y,并且存在 X 的一個真子集 X0,使得 X0→Y,則稱 Y 對 X 部分函數(shù)依賴。見第二范式舉例。
  • 完全函數(shù)依賴(Full functional dependency) :在一個關系中,若某個非主屬性數(shù)據(jù)項依賴于全部關鍵字稱之為完全函數(shù)依賴。
  • 傳遞函數(shù)依賴 : 在關系模式 R(U)中,設 X,Y,Z 是 U 的不同的屬性子集,如果 X 確定 Y、Y 確定 Z,且有 X 不包含 Y,Y 不確定 X,(X∪Y)∩Z=空集合,則稱 Z 傳遞函數(shù)依賴(transitive functional dependency) 于 X。見第三范式舉例。傳遞函數(shù)依賴會導致數(shù)據(jù)冗余和異常。傳遞函數(shù)依賴的 Y 和 Z 子集往往同屬于某一個事物,因此可將其合并放到一個表中。

存儲過程

我們可以把存儲過程看成是一些 SQL 語句的集合,中間加了點邏輯控制語句。

存儲過程在業(yè)務比較復雜的時候是非常實用的,比如很多時候我們完成一個操作可能需要寫一大串 SQL 語句,這時候我們就可以寫一個存儲過程,這樣也方便我們下一次的調(diào)用。

存儲過程一旦調(diào)試完成通過后就能穩(wěn)定運行,另外,使用存儲過程比單純 SQL 語句執(zhí)行要快,因為存儲過程是預編譯過的。

存儲過程在互聯(lián)網(wǎng)公司應用不多,因為存儲過程難以調(diào)試和擴展,而且沒有移植性,還會消耗數(shù)據(jù)庫資源。

阿里巴巴 Java 開發(fā)手冊里要求禁止使用存儲過程。文章來源地址http://www.zghlxwxcb.cn/news/detail-484182.html

總結

  • 了解數(shù)據(jù)庫的基本概念;
  • 區(qū)分基本的元組、碼、候選碼、主碼、外碼、主屬性、非主屬性的概念;
  • 注意外鍵的優(yōu)缺點及具體使用場景;
  • 數(shù)據(jù)庫范式不一定都需要滿足,要具體場景具體處理;
  • 存儲過程在生產(chǎn)中慎用;

到了這里,關于【MySQL】數(shù)據(jù)庫基本知識小結的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關文章

  • 再相逢【知識圖譜】中文醫(yī)學知識圖譜CMeKG,中文產(chǎn)科醫(yī)學知識圖譜COKG | 附:圖數(shù)據(jù)庫Neo4j下載安裝教學(遇到問題并解決) + Neo4j基本操作

    ? 無論結果如何,請相信那些你努力游向岸的日子都有它的意義。 ? ?? 作者主頁 : 追光者♂ ?? ???????? ?? 個人簡介 : 計算機專業(yè)碩士研究生 ??、 2022年CSDN博客之星人工智能領域TOP4 ??、 阿里云社區(qū)特邀專家博主 ??、 CSDN-人工智能領域新星創(chuàng)作者 ??、 預期20

    2024年02月14日
    瀏覽(22)
  • MySQL基本知識復習補充

    MySQL基本知識復習補充

    DDL:數(shù)據(jù)定義語言。create、alter、drop、rename、truncate(清空表) DML:數(shù)據(jù)操作語言。insert、delete、update、select DCL:數(shù)據(jù)控制語言。commit、rollback、savepoint、grant、revoke 因為查詢語句使用頻繁,可以把細分為DQL(數(shù)據(jù)查詢語言),和commit、rollback細分為TCL(事務控制語言) MySQL在

    2024年02月08日
    瀏覽(12)
  • 音頻數(shù)據(jù)處理基本知識學習——降噪濾波基礎知識

    濾波是一種信號處理方法,它可以通過消除或減弱信號中的某些頻率分量,來實現(xiàn)信號的去噪、去除干擾、增強某些頻率成分等目的。常見的濾波方法包括低通濾波、高通濾波、帶通濾波等。 降噪是一種信號處理方法,它可以通過消除或減弱信號中的噪聲成分,來提高信號的

    2024年02月15日
    瀏覽(36)
  • 數(shù)據(jù)結構map的基本知識與用法

    映射類似于函數(shù)的對應關系,每個 x 對應一個 y ,而 map 是每個鍵對應一個值。會python的朋友學習后就會知道這和python的字典非常類似。 比如說:學習 對應 看書,學習 是鍵,看書 是值。 學習-看書 玩耍 對應 打游戲,玩耍 是鍵,打游戲 是值。 玩耍-打游戲 ???????? Cp

    2024年02月20日
    瀏覽(29)
  • mysql 數(shù)據(jù)庫 基本介紹

    mysql 數(shù)據(jù)庫 基本介紹

    描述事物的符號記錄 包括數(shù)字,文字、圖形、圖像、聲音、檔案記錄氣 以“記錄”形式按統(tǒng)一的格式進行存儲 1,結構化的數(shù)據(jù) 即有固定格式和有限長度的數(shù)據(jù)。例如填的表格就是結構化的數(shù)據(jù),國籍:中華人民共和國,民族:漢,性別:男,這都叫結構化數(shù)據(jù) 2,非結構化

    2024年03月23日
    瀏覽(24)
  • 深度學習基礎知識-pytorch數(shù)據(jù)基本操作

    深度學習基礎知識-pytorch數(shù)據(jù)基本操作

    1.1.1 數(shù)據(jù)結構 機器學習和神經(jīng)網(wǎng)絡的主要數(shù)據(jù)結構,例如 ? ? ? ? ? ? ? ? 0維:叫標量,代表一個類別,如1.0 ? ? ? ? ? ? ? ? 1維:代表一個特征向量。如 ?[1.0,2,7,3.4] ? ? ? ? ? ? ? ? 2維:就是矩陣,一個樣本-特征矩陣,如: [[1.0,2,7,3.4?] ? ? ? ? ? ? ?? ? ?

    2024年02月11日
    瀏覽(26)
  • MySQL數(shù)據(jù)庫基本命令操作

    MySQL數(shù)據(jù)庫基本命令操作

    一、MySQL基本命令操作指令 二、查看數(shù)據(jù)庫結構 1.查看當前服務器中的數(shù)據(jù)庫 2.查看數(shù)據(jù)庫中包含的表 3.查看表的結構(字段) 三、SQL語句 SQL語句用于維護管理數(shù)據(jù)庫,包括數(shù)據(jù)查詢、數(shù)據(jù)更新、訪問控制、對象管理等功能。 1、SQL語言分類 四、SQL語句操作 1、創(chuàng)建及刪

    2024年02月10日
    瀏覽(42)
  • MySQL數(shù)據(jù)庫基本操作

    MySQL數(shù)據(jù)庫基本操作

    功能 sql 查看所有數(shù)據(jù)庫 show databases; 創(chuàng)建數(shù)據(jù)庫 create? database [if not exists] mydb1 [charset=utf8] 切換數(shù)據(jù)庫 use mydb1; 刪除數(shù)據(jù)庫 drop database?[if exists]?mydb1 ; 修改數(shù)據(jù)庫編碼 alter database mydb1 character set utf8; 數(shù)值類型 字符串類型 日期類型 功能 sql 查看當前數(shù)據(jù)庫所有名稱 show tabl

    2024年02月02日
    瀏覽(27)
  • 【MySQL】1、MySQL數(shù)據(jù)庫的基本概念

    【MySQL】1、MySQL數(shù)據(jù)庫的基本概念

    數(shù)據(jù)庫的基本概念 1.數(shù)據(jù) 2.表 ????????將不同的記錄組織在一起;用來存儲具體數(shù)據(jù) 3.數(shù)據(jù)庫 ????????表的集合,是存儲數(shù)據(jù)的倉庫;以一定的組織方式存儲的相互有關的數(shù)據(jù)集合 4.數(shù)據(jù)庫管理系統(tǒng) ????????是實現(xiàn)對數(shù)據(jù)庫資源有效組織、管理和存取的系統(tǒng)軟件

    2024年02月11日
    瀏覽(24)
  • MYSQL數(shù)據(jù)庫基本操作-DQL-基本查詢

    MYSQL數(shù)據(jù)庫基本操作-DQL-基本查詢

    一.概念 數(shù)據(jù)庫管理系統(tǒng)一個重要功能就是數(shù)據(jù)查詢。數(shù)據(jù)查詢不應是簡單返回數(shù)據(jù)庫中存儲的數(shù)據(jù),還應該根據(jù)需要對數(shù)據(jù)進行篩選以及確定數(shù)據(jù)以什么樣的格式顯示。 MySQL提供了功能強大,靈活的語句來實現(xiàn)這些操作。 MySQL數(shù)據(jù)庫使用select語句來查詢數(shù)據(jù)。 二:語法 ?

    2024年01月25日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包