MySQL學習筆記(11) 關係

2021-08-20 13:08:37 字數 1515 閱讀 6883

一對一:一張表的一條記錄一定只能與另外一張表的一條記錄進行對應,反之亦然。

學生表:姓名,性別,年齡,身高,體重,婚姻狀況,籍貫,家庭住址,緊急聯絡人

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堆疊。主機是...