溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)庫(kù)三大范式,不要以為是測(cè)試就不需要了解!

發(fā)布時(shí)間:2020-07-13 21:10:08 來(lái)源:網(wǎng)絡(luò) 閱讀:267 作者:測(cè)試大白 欄目:軟件技術(shù)

數(shù)據(jù)庫(kù)的相關(guān)知識(shí)點(diǎn),數(shù)據(jù)庫(kù)的三大特性可謂是:實(shí)體屬性和關(guān)系。

實(shí)體:表; 屬性:表中的數(shù)據(jù)(字段); 關(guān)系:表與表之間的關(guān)系;

數(shù)據(jù)庫(kù)設(shè)計(jì)三大范式(重點(diǎn)):

第一范式(1NF):數(shù)據(jù)表中的每一列(每個(gè)字段)必須是不可拆分的小單元,也是確保每一列的原子性;

例如:userInfo:山東省煙臺(tái)市? 131777368781?????????? userAds:山東0省煙臺(tái)市? userTel:131777368781

數(shù)據(jù)庫(kù)三大范式,不要以為是測(cè)試就不需要了解!

第二范式(2NF):滿足1NF后,要求表中的所有列,都必須依賴于主鍵,而不能有任何一列與主鍵沒(méi)有關(guān)系,也是說(shuō)一個(gè)表只描述一件事情;

例如:訂單表只描述訂單相關(guān)的信息,所以所有字段都必須與訂單id相關(guān)?????? 產(chǎn)品表只描述產(chǎn)品相關(guān)的信息,所以所有字段都必須與產(chǎn)品id相 關(guān);因此不能在一張表中同時(shí)出現(xiàn)訂單信息與產(chǎn)品信息;如下圖所示:

數(shù)據(jù)庫(kù)三大范式,不要以為是測(cè)試就不需要了解!

第三范式(3NF):必須先滿足第二范式(2NF),要求:表中的每一列只與主鍵直接相關(guān)而不是間接相關(guān),(表中的每一列只能依賴于主鍵);

例如:訂單表中需要有客戶相關(guān)信息,在分離出客戶表之后,訂單表中只需要有一個(gè)用戶id即可,而不能有其他的客戶信息。因?yàn)槠渌目蛻粜畔⒅苯雨P(guān)聯(lián)于用戶id,而不是直接與訂單id直接相關(guān)。

數(shù)據(jù)庫(kù)三大范式,不要以為是測(cè)試就不需要了解!

【如何更好的區(qū)分三大范式】

第 一范式和第二范式在于有沒(méi)有分出兩張表,第二范式是說(shuō)一張表中包含了所種不同的實(shí)體屬性,那么要必須分成多張表, 第三范式是要求已經(jīng)分成了多張表,那么一張表中只能有另一張表中的id(主鍵),而不能有其他的任何信息(其他的信息一律用主鍵在另一表查詢)。

【數(shù)據(jù)庫(kù)五大約束】

1.primary KEY:設(shè)置主鍵約束;

2.UNIQUE:設(shè)置性約束,不能有重復(fù)值;

3.DEFAULT 默認(rèn)值約束,height DOUBLE(3,2)DEFAULT 1.2 height不輸入是默認(rèn)為1,2

4.NOT NULL:設(shè)置非空約束,該字段不能為空;

5.FOREIGN key :設(shè)置外鍵約束。

【主鍵】

1.主鍵的注意事項(xiàng)?

主鍵默認(rèn)非空,默認(rèn)性約束,只有主鍵才能設(shè)置自動(dòng)增長(zhǎng),自動(dòng)增長(zhǎng)一定是主鍵,主鍵不一定自動(dòng)增長(zhǎng);

2.設(shè)置主鍵的方式?

在定義列時(shí)設(shè)置:ID INT PRIMARY KEY

在列定義完之后設(shè)置:primary KEY(id)

【外鍵】

1.設(shè)置外鍵的注意事項(xiàng):

只有INNODB的數(shù)據(jù)庫(kù)引擎支持外鍵,修改my.ini文件設(shè)置default-storage-engine=INNODB??? 外鍵必須與參照列的數(shù)據(jù)類型必須相同(數(shù)值型要求長(zhǎng)度和無(wú)符號(hào)都相同,字符串要求類型相同,長(zhǎng)度可以不同)。

2設(shè)置外鍵的語(yǔ)法:

CONSTRAINT 外鍵名 FOREIGN KEY (外鍵字段)REFERENCES 參照表 (參照字段)??? ON DELETE SET NULL ON UPDATE CASCADE 設(shè)置參照完整性

3.外鍵約束的參照操作?

測(cè)試交流群:1017539290

參照表的完整性操作:當(dāng)對(duì)參照表的參照字段進(jìn)行刪除或更新時(shí),外鍵表中的外鍵如何應(yīng)對(duì);

參照操作可選值:

RESTRICT拒絕參照表刪除或更新參照字段;

RESTRICT和NO ACTION相同,但這個(gè)指令只在mysql生效;

CASCADE刪除或更新參照表的參照字段時(shí),外鍵表的記錄同步刪除更新;

SET NULL 刪除或更新參照表的參照字段時(shí),外鍵表的外鍵設(shè)為NULL。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI