關係分為三種:一對一 ,一對多(多對一)和多對多
一對一:一張表的一條記錄一定只能與另外一張表的一條記錄進行匹配
一對多:一張表的一條記錄對應另外一張表的多條記錄,但另外一張表的一條記錄只能對應第一張表一條記錄
多對多:表a中的一條記錄能對應表b中多條記錄,表b中一條記錄能對應表a中多條記錄;不符合表設計規範,增加一張新錶,專門維護兩張表之間的關係;
正規化:normal format是為了解決一種資料的儲存與優化問題,儲存資料的儲存之後,凡是能通過關係找出來的資料,堅決不再重複儲存,終極目標是為了減少資料的冗餘
六層正規化 1nf,2nf,3nf,.....6nf
1nf:第一正規化要求欄位的資料具有原子性,不可再分
2nf:第二正規化在資料表設計過程中,如果有復合主鍵,且表中有字段不是由整個主鍵來確定,而是依賴主鍵中某個字段,存在字段依賴主鍵的部分的問題,稱之為部分依賴;第二正規化就是要解決表設計不允許出現部分依賴
解決方案:取消復合主鍵,採用邏輯主鍵
3nf:第三正規化指理論上一張表中所有字段應該直接依賴主鍵,如果一張表中存在乙個字段,並不直接依賴主鍵,而是通過某個非主鍵字段依賴,最終實現傳遞依賴,稱之為傳遞依賴。
資料高階操作
主鍵操作:當主鍵存在衝突,duplicate key,可以選擇性處理:更新和替換
更新操作:
insert into 表名 [(字段列表:包含主鍵)] values (值列表) on duplicate key update 字段=新值;
替換操作:
replace into 表名 [(字段列表:包含主鍵)] values(值列表);
C 學習歷程10 函式高階
int func int a,int b 10,int c 10 1.如果某個位置引數有預設值,那麼從這個位置往後,從左向右,必須都要有預設值 2.如果函式宣告有預設值,函式實現的時候就不能有預設引數 int func2 int a 10,int b 10 int func2 int a,int b...
Mysql學習歷程基本語法(1)
一.概述 1.資料庫基於儲存介質不同,分為兩類 關係型資料庫sql和非關係型資料庫nosql 2.關係型資料庫 如oracle,db2,sqlserver mysql,access 儲存和處理資料介質為磁碟,非關係型資料庫 如mongodb,redis 為記憶體 3.兩者區別 關係型資料庫安全,儲存...
Mysql學習歷程(13) 外來鍵
外來鍵 foreign key 如果一張表中有乙個字段,非主鍵指向另一張表的主鍵,那麼將該字段稱為外來鍵 增加外來鍵 在建立表的時候或者建立表之後增加 但要考慮資料的問題 建立表的時候增加外來鍵,在所有表字段之後,使用foreign key 外來鍵字段 references 外部表 主鍵字段 cre...