久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

數(shù)據(jù)庫基礎(chǔ)知識:數(shù)據(jù)庫中的約束和三大范式

一.數(shù)據(jù)庫中的范式:

范式, 英文名稱是 Normal Form,它是英國人 E.F.Codd(關(guān)系數(shù)據(jù)庫的老祖宗)在上個世紀70年代提出關(guān)系數(shù)據(jù)庫模型后總結(jié)出來的,范式是關(guān)系數(shù)據(jù)庫理論的基礎(chǔ),也是我們在設(shè)計數(shù)據(jù)庫結(jié)構(gòu)過程中所要遵循的規(guī)則和指導(dǎo)方法,以下就是對這三個范式的基本介紹:

第一范式(1NF):

數(shù)據(jù)表中的每一列(字段),必須是不可拆分的最小單元,也就是確保每一列的原子性。

例如: userInfo: '山東省煙臺市 1318162008' 依照第一范式必須拆分成

userInfo: '山東省煙臺市' userTel: '1318162008'兩個字段

第二范式(2NF):

滿足1NF后要求表中的所有列,都必需依賴于主鍵,而不能有 任何一列與主鍵沒有關(guān)系(一個表只描述一件事情)。

例如:訂單表只能描述訂單相關(guān)的信息,所以所有的字段都必須與訂單ID相關(guān)。

產(chǎn)品表只能描述產(chǎn)品相關(guān)的信息,所以所有的字段都必須與產(chǎn)品ID相關(guān)。

因此在同一張表中不能同時出現(xiàn)訂單信息與產(chǎn)品信息。

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

例如:訂單表中需要有客戶相關(guān)信息,在分離出客戶表之后,訂單表中只需要有一個用戶

ID即可,而不能有其他的客戶信息,因為其他的用戶信息是直接關(guān)聯(lián)于用戶ID,而不是關(guān)聯(lián)

于訂單ID。

注意事項:

1.第二范式與第三范式的本質(zhì)區(qū)別:在于有沒有分出兩張表。

第二范式是說一張表中包含了多種不同實體的屬性,那么必須要分成多張表,第三范式是要求已經(jīng)分好了多張表的話,一張表中只能有另一張標的ID,而不能有其他任何信息,(其他任何信息,一律用主鍵在另一張表中查詢)。

2.必須先滿足第一范式才能滿足第二范式,必須同時滿足第一第二范式才能滿足第三范式。

二:數(shù)據(jù)庫中的五大約束:

數(shù)據(jù)庫中的五大約束包括:

1.主鍵約束(Primay Key Coustraint) 唯一性,非空性;

2.唯一約束 (Unique Counstraint)唯一性,可以空,但只能有一個;

3.默認約束 (Default Counstraint) 該數(shù)據(jù)的默認值;

4.外鍵約束 (Foreign Key Counstraint) 需要建立兩表間的關(guān)系;

5.非空約束(?Not Null?Counstraint?):設(shè)置非空約束,該字段不能為空。

詳細介紹:

(1)[外鍵約束?(Foreign Key Counstraint)?]
1.設(shè)置外鍵的注意事項:
①:只有INNODB的數(shù)據(jù)庫引擎支持外鍵,修改my.ini文件設(shè)置default-storage-engine=INNODB;
②:外鍵與參照列的數(shù)據(jù)類型必須相同。(數(shù)值型要求長度和無符號都相同,字符串要求類型相同,長度可以不同);
③:設(shè)置外鍵的字段必須要有索引,如果沒有索引,設(shè)置外鍵時會自動生成一個索引;
2.設(shè)置外鍵的語法:
[CONSTRAINT 外鍵名] FOREIGN KEY(外鍵字段) REFERENCES 參照表(參照字段);
[ON DELETE SET NULL ON UPDATE CASCADE] -- 設(shè)置操作完整。

3、外鍵約束的參照操作:
當對參照表的參照字段進行刪除或更新時,外鍵表中的外鍵如何應(yīng)對。
參照操作可選值:
RESTRICT: 拒絕對參照字段的刪除或修改(默認);
NO ACTION:與RESTRICT相同,但這個指令只在MySql生效;
CASCADE:? 刪除或更新參照表的參照字段時,外鍵表的記錄同步刪除或更新;
SET NULL: 刪除刪除或更新參照表的參照字段時,外鍵表的外鍵設(shè)為NULL (此時外鍵不能設(shè)置為NOT NULL)。

(2)[主鍵約束]?(Primay Key Coustraint)
1.主鍵的注意事項:主鍵默認非空,默認唯一性約束,只有主鍵可以設(shè)置自動增長(主鍵不一定自增,自增一定是主鍵)。
2.設(shè)置主鍵的方式:

①:在定義列時設(shè)置:id ?? ?INT UNSIGNED PRIMARY KEY。
②:在列定義完成后設(shè)置:PRIMARY KEY(id)。

其他約束沒有特殊要求因此不做解釋。

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機構(gòu)!

    1. 主站蜘蛛池模板: 林州市| 阿坝| 新闻| 友谊县| 灵台县| 承德市| 乐至县| 白玉县| 通山县| 黄大仙区| 胶州市| 桦南县| 社旗县| 古田县| 达尔| 肥西县| 鞍山市| 开江县| 南和县| 都江堰市| 濉溪县| 重庆市| 嘉祥县| 蒙自县| 澎湖县| 苏尼特右旗| 广宁县| 会东县| 张掖市| 吉木萨尔县| 新龙县| 黔西县| 宜川县| 新和县| 安康市| 宁津县| 聂荣县| 衡水市| 平原县| 乐业县| 蓬安县|