一對一:一張表的一條記錄一定只能與另外一張表的一條記錄進行對應,反之亦然。
學生表:姓名,性別,年齡,身高,體重,婚姻狀況,籍貫,家庭住址,緊急聯絡人
id(p)
姓名性別
年齡體重
身高婚姻
籍貫住址
聯絡人表設計成以上這種形式,符合要求,其中姓名,性別,年齡,身高,體重屬於常用資料,但是婚姻,籍貫,住址和聯絡人屬於不常用資料。如果每次查詢都是查詢所有資料,不常用的資料就會影響效率,實際又不用。
解決方案:將常用的和不常用的資訊分離儲存,分成兩張表
常用資訊表
id(p)
姓名性別
年齡體重身高1
不常用資訊表:保證不常用資訊與常用資訊一定能夠對應上:找乙個具有唯一性(確定記錄)的字段來共同連線兩張表。
id(p)
婚姻籍貫
住址聯絡人21
乙個常用表中的一條記錄:永遠只能再一張不常用表中匹配一條記錄,反過來,乙個不常用表中的一條記錄在常用表中也只能匹配一條記錄:一對一的關係。
一對多:一張表中有一條記錄可以對應另外一張表中的多條記錄;但是反過來,另外一張表中的一條記錄只能對應第一張表的一條記錄,這種關係就是一對多或者多對一。
母親與孩子的關係:母親,孩子兩個實體
媽媽表id(p)
名字年齡
性別孩子表
id(p)
名字年齡
性別以上關係:乙個媽媽可以在孩子表中找到多條記錄(也有可能是一條);但是乙個孩子只能找到乙個媽媽:是一種典型的一對多的關係。
但是以上設計:解決了實體的設計表問題,但是沒有解決關係問題:孩子找不到媽,媽也找不到孩子。
解決方案:在某一張表中增加乙個字段,能夠找到另外一張表中的記錄:應該在孩子表中增加乙個字段指向媽媽表:因為孩子表的記錄只能匹配到一條媽媽表的記錄。
媽媽表id(p)
名字年齡
性別孩子表
id(p)
名字年齡
性別媽媽id
媽媽表主鍵
多對多:一張表中(a)的一條記錄能夠對應另外一張表(b)中的多條記錄,同時b表中的一條記錄也能對應a表中的多條記錄:多對多的關係
老師教學:老師和學生
老師表t_id(p)
姓名性別1a
男2b女
學生表s_id(p)
姓名性別1張三
男2李四女
以上設計方案:實現了實體的設計,但是沒有維護實體的關係。
乙個來說教過多個學生,乙個學生也被多個老師教過。
中間關係表:老師與學生的關係
idt_id(老師)
s_id(學生)11
1212
3214
增加中間表之後:中間表與老師表形成了一對多的關係:而且中間表是多表,維護了能夠唯一找到一表的關係;同樣的,學生表與中間表也是乙個一對多的關係:一對多的關係可以匹配到關聯表之間的資料。
學生找老師:找出學生id->中間表尋找匹配記錄(多條)->老師表匹配(一條)
老師找學生:找出老師id->中間表尋找匹配記錄(多條)->學生表匹配(一條)
MySQL學習筆記(11) 外來鍵
foreign key,外面的鍵 鍵不在自己表中 如果a表中有乙個字段 非主鍵 指向b表的主鍵,那麼將該子段稱之為外來鍵。a表被稱為從表,b表被稱為主表。1.建立表的時候增加外來鍵 constraint 外鍵名 foreign key 外來鍵字段 references 主表 主鍵 例項 create...
學習筆記1 1
1.virtual修飾符會被 繼承的。private 也被整合,只事派生類沒有訪問許可權而已。virtual可加可不加。子類的空間裡有父類的所有變數 static除外 同乙個函式只存在乙個實體 inline除外 子類覆蓋它的函式不加virtual 也能實現多型。在子類的空間裡,有父類的私有變數。私有...
學習筆記 11
tcp ip 是網際網路的基礎。tcp代表傳輸控制協議。ip代表網際網路協議。目前有兩個版本的ip,即ipv4和ipv6。ipv4使用32位位址,ipv6則使用128位位址。本節圍繞ipv4進行討論,它仍然是目前使用最多的ip版本。tcp ip的組織結構分為幾個層級,通常稱為tcp ip堆疊。主機是...