MySQL表關係的理解

kasauce發表於2020-09-27

關係型資料庫表之間存在各種各樣的聯絡,及一對多,多對一,多對多。這裡主要講下一對多,為什麼要建立表之間的關聯(為什麼要建立另一張表)。

一對多的定義:

一對多關係  : 一對多關係是關聯式資料庫中兩個表之間的一種關係,該關係中第一個表中的單個行可以與第二個表中的一個或多個行相關,但第二個表中的一個行只可以與第一個表中的一個行相關。

一對多關係,一般是一個表的主鍵對應另一個表的非主鍵,主鍵的值是不能重複的,而非主鍵值是可以重複的,一個主鍵值對應另一個表的非主鍵的值,那麼就只有一個值對一個值或一個值對多個值兩種可能,故稱一對多。

 

思考一下,單獨的商品表、訂單表、酒店表無法記錄這條資訊嗎?

商品表:一個蘋果手機,有土豪金,暗夜灰兩種規格。

訂單表:一個訂單,購買了臉盆、電腦兩個商品。

酒店表: 一個酒店,有商務房、總統套房。

 

舉個? :需要記錄商品蘋果手機,有兩種型號,土豪金 1499、暗夜灰 1899。

可以通過兩種方式:

1.建立商品,新增規格欄位,來記錄商品有哪些規格[xx,xx,xx],這種方式雖然單表可以一條記錄包括所有資訊,但是資料量過多會導致查詢緩慢。

2.新建規格表,為需要新增規格商品建立規格記錄,及goods_uuid=我們要新增規格的商品uuid。查詢時通過goods_uuid到對應欄位及可查詢。 

 

總結:

1.單表可以存放一條記錄的完整資訊,但是不符合規範。

2.因為單表我們建立一條記錄無法表達這條記錄的完整性, 所以需要建立另一張表來完善這條記錄的完整性。

 

相關文章