在設計一個數據庫表結構時,合理地設計表間關系是非常重要的。在 MySQL 中,常見的表間關系有一對一、一對多和多對多。以下是介紹如何使用四張表設計一個合理的數據庫表結構。
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `email` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
首先,我們需要創建一個用戶表,用于存儲用戶的信息。該表包含了用戶的 ID、用戶名和郵箱。
CREATE TABLE `post` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `content` text NOT NULL, `user_id` int(11) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `post_user_fk` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8
然后,我們創建了文章表,并在文章表中添加了用戶 ID 外鍵。這樣,我們就能夠輕松獲取該文章是由哪個用戶創建的。
CREATE TABLE `category` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
接著,我們創建了一個類別表,用于存儲文章所屬的類別。該表包含了類別的 ID 和名稱。
CREATE TABLE `post_category` ( `id` int(11) NOT NULL AUTO_INCREMENT, `post_id` int(11) NOT NULL, `category_id` int(11) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `post_category_post_fk` FOREIGN KEY (`post_id`) REFERENCES `post` (`id`) ON DELETE CASCADE, CONSTRAINT `post_category_category_fk` FOREIGN KEY (`category_id`) REFERENCES `category` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8
最后,我們創建了一個表用于存儲文章和類別之間的關聯關系。在該表中,我們添加了文章 ID 和類別 ID 兩個外鍵,以便于獲取某篇文章屬于哪個類別等相關信息。
使用上述四張表結構的優點是簡單而直觀,同時具備了足夠的擴展能力,可以適應大多數應用場景。
上一篇dockerwarm