史上最簡單的 MySQL 教程(十八) 關係

2021-09-11 13:42:22 字數 2349 閱讀 8186

在資料庫中,將實體與實體的關係反應到表的設計上來,可以細分為 3 種,分別為:一對一(1:1),一對多(1:n)(或多對一(n:1))和多對多(n:n)

在此,所有的關係都是指表與表之間的關係。

一對一,即一張表的一條記錄只能與另外一張表的一條記錄相對應,反之亦然

例如,咱們設計一張「個人資訊表」,其欄位包含:姓名、性別、年齡、身高、體重、籍貫和居住地等。

id姓名

性別年齡

身高體重

籍貫居住地

1charies男18

18275

中國北京

2swift女18

17250

美國紐約

如上表所示,基本滿足咱們的要求,其中姓名、性別和年齡屬於常用資料,但是身高、體重、籍貫和居住地為不常用資料。如果每次查詢都要查詢所有資料的話,那麼不常用資料就會影響效率,而且又不常用。因此,咱們可以將常用的資料和不常用的資料分離儲存,即分為兩張表,例如:

表 1:常用資料

id姓名

性別年齡

1charies男18

2swift女18

表 2:不常用資料

id身高

體重籍貫

居住地1

18275

中國北京

2172

50美國

紐約如上面表1表2所示,通過字段id表1中的一條記錄只能匹配表2中的一條記錄,反之亦然,這就是一對一的關係。

一對多,即一張表中的記錄可以對應另外一張表中的多條記錄,但是反過來,另外一張表中的一條記錄只能對應第一張表中的一條記錄

例如,咱們設計「國家城市表」,其包含兩個實體,即國家和城市。

表 3:國家表

country_id

國家位置1中國

亞洲2美國北美洲

3俄羅斯

亞洲和歐洲

表 4:城市表

city_id

城市國家1北京

中國2深圳中國3紐約

美國4莫斯科俄羅斯

如上面表3表4所示,通過字段國家表3中的一條記錄可以匹配表4中的多條記錄,但反過來,表4中的一條記錄只能匹配表3中的一條記錄,這就是典型的一對多的關係。

多對多,即一張表中的記錄可以對應另外一張表中的多條記錄,反過來,另外一張表中的一條記錄也可以對應第一張表中的多條記錄

例如,咱們設計「教師學生表」,其包含兩個實體,即教師和學生。

表 5:教師表

tea_id

姓名性別1劉濤

女2劉亦菲女

3劉德華

表 6:學生表

stu_id

姓名性別1齊嶽

男2杜康男

觀察上面的表5表6,咱們會發現:表5表6的設計滿足了實體的屬性,但沒有維護實體之間的關係,即乙個老師教過多個學生,乙個學生也被多個老師教過。但是無論咱們在表5中還是在表6中增加字段,都會出現乙個問題,那就是:該字段要儲存多個資料,並且還是與其他表有關係的字段,不符合設計規範。因此,咱們可以再設計一張「中間表」,專門用來維護表5表6的關係。

表 7:中間表

idtea_id

stu_id11

1212

3214

32觀察上面的表5表6表7,咱們會發現增加表7之後,咱們維護表5表6的關係更加方便啦!無論是想從表5通過表7查到表6,還是想從表6通過表7查到表5,都非常容易啦!這就是典型的多對多的關係。

史上最簡單的 MySQL 教程(十八) 關係

在資料庫中,將實體與實體的關係反應到表的設計上來,可以細分為 3 種,分別為 一對一 1 1 一對多 1 n 或多對一 n 1 和多對多 n n 在此,所有的關係都是指表與表之間的關係。一對一,即一張表的一條記錄只能與另外一張表的一條記錄相對應,反之亦然。例如,咱們設計一張 個人資訊表 其欄位包含 ...

史上最簡單的 MySQL 教程(十七) 索引

索引 系統根據某種演算法,將已有的資料 未來可能新增的資料 單獨建立乙個檔案,這個檔案能夠實現快速匹配資料,並且能夠快速的找到對應的記錄,幾乎所有的索引都是建立在字段之上的。索引的意義 但是增加索引是有前提條件的,這是因為索引本身會產生索引檔案 有的時候可能會比資料本身都大 因此非常耗費磁碟空間。m...

史上最簡單的 MySQL 教程(三十七)

基礎概念 為什麼要進行資料的備份與還原?資料備份與還原的方式有很多種,具體可以分為 資料表備份 單錶資料備份 sql備份和增量備份。sql 備份,備份的是 sql 語句。在進行 sql 備份的時候,系統會對錶結構以及資料進行處理,變成相應的 sql 語句,然後執行備份。在還原的時候,只要執行備份的 ...