亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文了解MYSQL三大范式和表約束

 更新時間:2022年04月02日 15:45:05   作者:淡沫初夏Zz  
范式是"符合某一種級別的關系模式的集合,表示一個關系內(nèi)部各屬性之間的聯(lián)系的合理化程度",下面這篇文章主要給大家介紹了關于MYSQL三大范式和表約束的相關資料,需要的朋友可以參考下

?? 一,什么是范式

范式簡言之就是,數(shù)據(jù)庫設計對數(shù)據(jù)的存儲性能,還有開發(fā)人員對數(shù)據(jù)的操作都有莫大的關系。所以建立科學的,規(guī)范的的數(shù)據(jù)庫是需要滿足一些規(guī)范的來優(yōu)化數(shù)據(jù)數(shù)據(jù)存儲方式

范式一共有六種,這里主要詳細介紹三大范式:
第一范式(1NF),第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又稱完美范式)。滿足最低要求的范式是第一范式(1NF)。在第一范式的基礎上進一步滿足更多規(guī)范要求的稱為第二范式(2NF),其余范式以次類推。一般說來,數(shù)據(jù)庫只需滿足第三范式(3NF)就行了

?? 二,三大范式的理解

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

首先第一范式是最基本的范式,而第一范式的合理遵循要按照系統(tǒng)的需求而定,第一范式也是為了確保每列保持原子性,如果數(shù)據(jù)庫表中的所有字段值都是不可分解的原子值,就說明該數(shù)據(jù)庫表滿足了第?范式。

例如:某些數(shù)據(jù)庫系統(tǒng)中需要用到“地址”這個屬性,本來直接將“地址”屬性設計成?個數(shù)據(jù)庫表的字段

2,第二范式(保證每列都和主鍵相關)

第?范式在第?范式的基礎之上更進?層。第?范式需要確保數(shù)據(jù)庫表中的每?列都和主鍵相關,而不能只與主鍵的某?部分相關(主要針對聯(lián)合主鍵)。也就是說在?個數(shù)據(jù)庫表中,?個表中只能保存?種數(shù)據(jù),不可以把多種數(shù)據(jù)
保存在同?張數(shù)據(jù)庫表中

例如:對于一張訂單表,應該只包括訂單信息,若第一張有數(shù)量信息,不符合第二范式,對于訂單數(shù)量應該單獨為一張表

3,第三范式(保證每列和主鍵直接相關,不能間接相關)

第三范式需要確保數(shù)據(jù)表中的每?列數(shù)據(jù)都和主鍵直接相關,而不能間接相關,即滿足第二范式前提,如果某一屬性依賴于其他非主鍵屬性,而其他非主鍵屬性又依賴于主鍵,那么這個屬性就是間接依賴于主鍵,這被稱作傳遞依賴于主屬性。 解釋就是一張表最多只存兩層同類型信息。

例如:在設計?個訂單數(shù)據(jù)表的時候,可以將客戶編號作為?個外鍵和訂單表建立相應的關系

4,表的關系

(1)一對一

一對一就是?個學生對應?個學號

(2)一對多

一對多是 ?個班級包含多個學生(用兩張表表示)

(3)多對多

?張表中的?條數(shù)據(jù)可以對應到另?張表的多條數(shù)據(jù)

??三,表的約束有哪些

??1,約束類型

表約束也是為了規(guī)范程序員正確使用表的,但表約束是預先設置的,設置之后就對所有插?和修改立即生效

? NOT NULL - 指示某列不能存儲 NULL 值。
?UNIQUE - 保證某列的每行必須有唯一的值。
?DEFAULT - 規(guī)定沒有給列賦值時的默認值。
?PRIMARY KEY - NOT NULL 和 UNIQUE 的結合。確保某列(或兩個列多個列的結合)有唯一標識,有助于更容易更快速地找到表中的一個特定的記錄。
?FOREIGN KEY - 保證一個表中的數(shù)據(jù)匹配另一個表中的值的參照完整性。
?CHECK - 保證列中的值符合指定的條件。對于MySQL數(shù)據(jù)庫,對CHECK子句進行分析,但是忽略CHECK子句

??2,表的約束

(1)非空約束:NOT NULL

創(chuàng)建的字段默認是可以為空的

而添加了非空約束之后,設置的字段就不能為空了。

語法

字段名 數(shù)據(jù)類型 NOT NULL
說明了某列不可以存儲空值

(2)主鍵約束:PRIMARY KEY

主鍵的特征:

1.主鍵可以由多個字段或單個字段組成

2. 主鍵不能為空且唯?

3. ?個表中只能有?個主鍵

獨立主鍵語法:

語法: 字段 字段類型 primary key
示例:
create table test4(id int primary key,name varchar(250));

獨立主鍵:該主鍵由一個字段組成,且該主鍵不能重復
聯(lián)合主鍵:多個字段組成的主鍵,因此字段不能重復
一個主鍵可以有多個字段,一張表只能有一個主鍵

聯(lián)合主鍵語法:

語法: primary key(字段1,字段2…)

 示例:
> create table test5(
id int,
name varchar(250),
primary key(id,name)
);

(3)唯一約束:UNIQUE

唯?約束就是對應字段的值是唯?的,不能重復,但一個表可以有多個唯一索引

語法:

字段名 數(shù)據(jù)類型 unique
示例:
CREATE TABLE student_unique (
id INT unique,
name VARCHAR(250)
);

? 唯一約束和主鍵約束區(qū)別(面試??迹?/p>

主鍵約束?個表只能有?個,?唯?約束可以有多個
主鍵約束不能有 null 值,?唯?約束可以有 null(唯?索引可以有多個 null)

(4)外鍵約束:FOREIGN KEY

外鍵用于關聯(lián)其他表的主鍵或唯?鍵

外鍵可以插入NULL,多個NULL,若外鍵指定了值,那這個值一定要有效,有效是這個值在主表存在了

語法:

foreign key (字段名) references 主表(列)

示例:

創(chuàng)建學生表student,?個學生對應?個班級,?個班級對應多個學生。使用id為主鍵,classes_id為外鍵,關聯(lián)班級表id

-- 重新設置學?表結構
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT PRIMARY KEY auto_increment,
sn INT UNIQUE,
name VARCHAR(250) DEFAULT 'unkown',
qq_mail VARCHAR(250),
classes_id int,
FOREIGN KEY (classes_id) REFERENCES classes(id)
);

(5)默認值約束: DEFAULT

指定id列為主鍵

-- 重新設置學生表結構
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT NOT NULL PRIMARY KEY,
sn INT UNIQUE,
name VARCHAR(20) DEFAULT 'unkown',
qq_mail VARCHAR(20)
);

對于整數(shù)類型的主鍵,常配搭自增長auto_increment來使用。插入數(shù)據(jù)對應字段不給值時,使用最大值+1

– 主鍵是 NOT NULL 和 UNIQUE 的結合,可以不用 NOT NULL
id INT PRIMARY KEY auto_increment

總結 

到此這篇關于MYSQL三大范式和表約束的文章就介紹到這了,更多相關MYSQL三大范式和表約束內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • mysql通過查看跟蹤日志跟蹤執(zhí)行的sql語句

    mysql通過查看跟蹤日志跟蹤執(zhí)行的sql語句

    在SQL SERVER下跟蹤sql采用事件探查器,而在mysql下如何跟蹤sql呢,下面有個不錯的方法,大家可以參考下
    2014-01-01
  • k8s搭建mysql集群實現(xiàn)主從復制的方法步驟

    k8s搭建mysql集群實現(xiàn)主從復制的方法步驟

    本文是基于已有k8s環(huán)境下,介紹在k8s環(huán)境中部署mysql主從集群的實現(xiàn)步驟,對mysql學習有一定的幫助,感興趣的可以學習一下
    2023-01-01
  • 關于MySQL自增ID的一些小問題總結

    關于MySQL自增ID的一些小問題總結

    這篇文章主要給大家總結介紹了關于MySQL自增ID的一些小問題,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11
  • MySQL的自增ID(主鍵) 用完了的解決方法

    MySQL的自增ID(主鍵) 用完了的解決方法

    這篇文章主要介紹了MySQL的自增ID(主鍵) 用完了的解決方法,幫助大家更好的理解和學習MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09
  • xampp修改mysql默認密碼的方法

    xampp修改mysql默認密碼的方法

    在這里介紹xampp修改mysql默認密碼的大概過程是先利用xampp的phpmyadmin進入修改mysql密碼,修改之后我們再修改xampp中phpmyadmin的密碼,這樣就完整的修改mysql默認密碼了,感興趣的朋友一起通過本文學習吧
    2016-10-10
  • mysql自動備份多個數(shù)據(jù)庫的實現(xiàn)

    mysql自動備份多個數(shù)據(jù)庫的實現(xiàn)

    本文主要介紹了mysql自動備份多個數(shù)據(jù)庫的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Mysql服務器的啟動與停止(一)

    Mysql服務器的啟動與停止(一)

    Mysql服務器的啟動與停止(一)...
    2006-11-11
  • InnoDB實現(xiàn)序列化隔離級別的方法

    InnoDB實現(xiàn)序列化隔離級別的方法

    這篇文章主要介紹了InnoDB實現(xiàn)序列化隔離級別的方法,文中介紹的非常詳細,相信對大家學習或者使用InnoDB具有一定的參考價值,需要的朋友們可以參考學習,下面來一起看看吧。
    2017-04-04
  • mysql修改sql_mode報錯的解決

    mysql修改sql_mode報錯的解決

    今天在Navicat中運行sql語句創(chuàng)建數(shù)據(jù)表出現(xiàn)了錯誤Err 1067。本文主要介紹了mysql修改sql_mode報錯的解決,感興趣的可以了解一下
    2021-09-09
  • Ubuntu安裝Mysql+啟用遠程連接的完整過程

    Ubuntu安裝Mysql+啟用遠程連接的完整過程

    這篇文章主要介紹了Ubuntu如何安裝Mysql+啟用遠程連接,用ssh客戶端或者云服務器廠家提供的網(wǎng)頁版控制臺都行,只要你能連上服務器就行,需要的朋友可以參考下
    2022-06-06

最新評論