一.資料庫中的正規化:
正規化, 英文名稱是 normal form,它是英國人 e.f.codd(關聯式資料庫的老祖宗)在上個世紀70年代提出關聯式資料庫模型後總結出來的,正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法,以下就是對這三個正規化的基本介紹:
第一正規化(1nf):
資料表中的每一列(字段),必須是不可拆分的最小單元,也就是確保每一列的原子性。
例如: userinfo: '山東省煙台市 1318162008' 依照第一正規化必須拆分成
userinfo: '山東省煙台市' usertel: '1318162008'兩個字段
第二正規化(2nf):
滿足1nf後要求表中的所有列,都必需依賴於主鍵,而不能有 任何一列與主鍵沒有關係(乙個表只描述一件事情)。
例如:訂單表只能描述訂單相關的資訊,所以所有的字段都必須與訂單id相關。
產品表只能描述產品相關的資訊,所以所有的字段都必須與產品id相關。
因此在同一張表中不能同時出現訂單資訊與產品資訊。
例如:訂單表中需要有客戶相關資訊,在分離出客戶表之後,訂單表中只需要有乙個使用者
id即可,而不能有其他的客戶資訊,因為其他的使用者資訊是直接關聯於使用者id,而不是關聯
於訂單id。
注意事項:
1.第二正規化與第三正規化的本質區別:在於有沒有分出兩張表。
第二正規化是說一張表中包含了多種不同實體的屬性,那麼必須要分成多張表,第三正規化是要求已經分好了多張表的話,一張表中只能有另一張標的id,而不能有其他任何資訊,(其他任何資訊,一律用主鍵在另一張表中查詢)。
2.必須先滿足第一正規化才能滿足第二正規化,必須同時滿足第一第二正規化才能滿足第三正規化。
二:資料庫中的五大約束:
資料庫中的五大約束包括:
1.主鍵約束(primay key coustraint) 唯一性,非空性;
2.唯一約束 (unique counstraint)唯一性,可以空,但只能有乙個;
3.預設約束 (default counstraint) 該資料的預設值;
4.外來鍵約束 (foreign key counstraint) 需要建立兩表間的關係;
5.非空約束(not null counstraint
):設定非空約束,該欄位不能為空。
詳細介紹:
(1)[外來鍵約束(foreign key counstraint) ]
1.設定外來鍵的注意事項:
①:只有innodb的資料庫引擎支援外來鍵,修改my.ini檔案設定default-storage-engine=innodb;
②:外來鍵與參照列的資料型別必須相同。(數值型要求長度和無符號都相同,字串要求型別相同,長度可以不同);
③:設定外來鍵的字段必須要有索引,如果沒有索引,設定外來鍵時會自動生成乙個索引;
2.設定外來鍵的語法:
[constraint 外鍵名] foreign key(外來鍵字段) references 參照表(參照字段);
[on delete set null on update cascade] -- 設定操作完整。
3、外來鍵約束的參照操作:
當對參照表的參照字段進行刪除或更新時,外來鍵表中的外來鍵如何應對。
參照操作可選值:
restrict: 拒絕對參照欄位的刪除或修改(預設);
no action:與restrict相同,但這個指令只在mysql生效;
cascade: 刪除或更新參照表的參照欄位時,外來鍵表的記錄同步刪除或更新;
set null: 刪除刪除或更新參照表的參照欄位時,外來鍵表的外來鍵設為null (此時外來鍵不能設定為not null)。
(2)[主鍵約束](primay key coustraint)
1.主鍵的注意事項:主鍵預設非空,預設唯一性約束,只有主鍵可以設定自動增長(主鍵不一定自增,自增一定是主鍵)。
2.設定主鍵的方式:
①:在定義列時設定:id int unsigned primary key。
②:在列定義完成後設定:primary key(id)。
其他約束沒有特殊要求因此不做解釋。
資料庫基礎知識 資料庫中的約束和三大正規化
一.資料庫中的正規化 正規化,英文名稱是 normal form,它是英國人 e.f.codd 關聯式資料庫的老祖宗 在上個世紀70年代提出關聯式資料庫模型後總結出來的,正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法,以下就是對這三個正規化的基本介紹 第一正規...
面試基礎知識 資料庫
事務是指作為單個邏輯工作單元執行的一系列操作,可以被看作乙個單元的一系列sql語句的集合。要麼完全地執行,要麼完全地不執行。如果不對資料庫進行併發控制,可能會產生 髒讀 非重複讀 幻像讀 丟失修改的異常情況。同一時間,只允許乙個事務請求同一資料,不同的事務之間彼此沒有任何干擾。比如a正在從一張銀行卡...
資料庫基礎知識 資料庫中的三大正規化
第一正規化 1nf 資料表中的每一列 字段 必須是不可拆分的最小單元,也就是確保每一列的原子性。第二正規化 2nf 確保表中的每列都和主鍵相關 直白的說就是 所有資料必須都要依賴於主鍵。理解 程式中必須設定主鍵,一對多關係必須差分開,多對多也是一樣。也就是說在乙個資料庫表中,只能有乙個主鍵,而且主鍵...