資料庫的三大特性是:實體屬性和關係。
實體:表; 屬性:表中的資料(字段); 關係:表與表之間的關係;
資料庫設計三大正規化(重點):
第一正規化(1nf):資料表中的每一列(每個字段)必須是不可拆分的最小單元,也就是確保每一列的原子性;
例如:userinfo:山東省煙台市 131777368781 userads:山東0省煙台市 usertel:131777368781
第二正規化(2nf):滿足1nf後,要求表中的所有列,都必須依賴於主鍵,而不能有任何一列與主鍵沒有關係,也就是說乙個表只描述一件事情;
產品表只描述產品相關的資訊,所以所有欄位都必須與產品id相 關;
因此不能在一張表中同時出現訂單資訊與產品資訊;如下圖所示(1張表拆成2張表):
例如:訂單表中需要有客戶相關資訊,在分離出客戶表之後,訂單表中只需要有乙個使用者id即可(外來鍵),而不能有其他的客戶資訊。因為其他的客戶資訊直接關聯於使用者id,而不是直接與訂單id直接相關。
【如何更好的區分三大正規化】
第 一正規化和第二正規化在於有沒有分出兩張表,第二正規化是說一張表中包含了多種不同的實體屬性,那麼要必須分成多張表, 第三正規化是要求已經分成了多張表,那麼一張表中只能有另一張表中的id(主鍵),而不能有其他的任何資訊(其他的資訊一律用主鍵在另一表查詢)。
總結:第1正規化:每個表中都有1列,並且該列是不可拆分的最小單元
第2正規化:1張表只描述一件事情
第3正規化:用外來鍵做表的關聯
【資料庫五大約束】
1.primary key:設定主鍵約束;
2.unique:設定唯一性約束,不能有重複值;
3.default 預設值約束,height double(3,2)default 1.2 height不輸入是預設為1,2
4.not null:設定非空約束,該欄位不能為空;
5.foreign key :設定外來鍵約束。
【主鍵】
1.主鍵的注意事項?
主鍵預設非空,預設唯一性約束,只有主鍵才能設定自動增長,自動增長一定是主鍵,主鍵不一定需要自動增長;
2.設定主鍵的方式?
在定義列時設定:id int primary key
在列定義完之後設定:primary key(id)
【外來鍵】
1.設定外來鍵的注意事項:
只有innodb的資料庫引擎支援外來鍵,修改my.ini檔案設定default-storage-engine=innodb 外來鍵必須與參照列的資料型別必須相同(數值型要求長度和無符號都相同,字串要求型別相同,長度可以不同)。
2設定外來鍵的語法:
constraint 外鍵名 foreign key (外來鍵字段)references 參照表 (參照字段) on delete set null on update cascade 設定參照完整性
3.外來鍵約束的參照操作?
參照表的完整性操作:當對參照表的參照字段進行刪除或更新時,外來鍵表中的外來鍵如何應對;
參照操作可選值:
restrict拒絕參照表刪除或更新參照字段;
restrict和no action相同,但這個指令只在mysql生效;
cascade刪除或更新參照表的參照欄位時,外來鍵表的記錄同步刪除更新;
set null 刪除或更新參照表的參照欄位時,外來鍵表的外來鍵設為null;
資料庫 3大正規化
1 第一正規化 確保每列保持原子性 必須不包含重複組的關係,即每一列都是不可拆分的原子項。2 第二正規化 確保表中的每列都和主鍵相關 關係模式必須滿足第一正規化,並且所有非主屬性都完全依賴於主碼。注意,符合第二正規化的關係模型可能還存在資料冗餘 更新異常等問題。3 第三正規化 確保每列都和主鍵列直接...
資料庫3正規化
定義 在r u 中,如果x y,對於x的任意乙個真子集x 都有x 不能決定y,則稱y對x完全函式依賴,記為xy 例 s cn g 定義 在r u 中,如果x y,但y不完全函式依賴於x,則稱y對x部分函式依賴。定義 在r u 中,當且僅當x y,y z時,稱z對x傳遞函式依賴。例 描述學生 s 班級...
資料庫設計三大正規化資料庫設計三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...