MySQL多對多關系通常需要使用三張表來實現,以確保數據的一致性和可維護性。一個典型的多對多關系可以用三張表來表示:一個存儲基本數據的表,一個存儲第一個表和第二個表的外鍵的關聯表,以及另一個存儲第二個表的數據的表。下面我們就來詳細介紹一下這三張表的設計和實現。
首先是基本數據表,我們可以創建一張名為“book”的表來存儲圖書的信息,它包括“id”(自增長的主鍵)、“title”(文本類型的標題)、“author”(文本類型的作者)和“published_date”(Date類型的發行日期)等字段。
CREATE TABLE book ( id INT PRIMARY KEY AUTO_INCREMENT, title TEXT NOT NULL, author TEXT NOT NULL, published_date DATE NOT NULL );
接下來是關聯表,我們可以創建一張名為“book_author”的表來存儲“book”的id和“author”的id之間的關系。它包括“book_id”(與“book”表中的“id”字段對應的外鍵)和“author_id”(與“author”表中的“id”字段對應的外鍵)等字段。
CREATE TABLE book_author ( book_id INT NOT NULL, author_id INT NOT NULL, PRIMARY KEY (book_id, author_id), CONSTRAINT fk_book_author_book FOREIGN KEY (book_id) REFERENCES book(id) ON DELETE CASCADE, CONSTRAINT fk_book_author_author FOREIGN KEY (author_id) REFERENCES author(id) ON DELETE CASCADE );
最后是作者表,我們可以創建一張名為“author”的表來存儲作者的信息,它包括“id”(自增長的主鍵)和“name”(文本類型的姓名)等字段。
CREATE TABLE author ( id INT PRIMARY KEY AUTO_INCREMENT, name TEXT NOT NULL );
這樣,我們就成功地創建了三張表,可以實現圖書與作者之間的多對多關系。在實際應用中,我們可以使用SELECT語句和JOIN子句來查詢關聯表中的數據,并根據需要對其進行更改或刪除。
上一篇mysql多實例的優點