首页 > 解决方案 > 在 MySQL 的列中插入多个值

问题描述

我正在做一个图书馆管理系统,我创建了一个名为 BOOK 的表,其中包含“GENRE”列。

一本书可能有多种类型。例如小说、爱情、悬疑。

将这个多重标签插入一本书的最佳方法是什么?我是否应该将整行与其他列(如标题、作者、出版商...)一起插入?

谢了。

标签: mysql

解决方案


您正在描述一个多值属性。也就是说,一本书可以有多种类型。

在 MySQL 等关系数据库中执行此操作的方法是创建另一个表。例如,我们可以称它为BOOK_GENRE

CREATE TABLE BOOK_GENRE (
  book_id INT NOT NULL,
  genre_id INT NOT NULL,
  PRIMARY KEY (book_id, genre_id),
  FOREIGN KEY (book_id) REFERENCES BOOK(book_id),
  FOREIGN KEY (genre_id) REFERENCES GENRE(genre_id)
);

对于每一本书,这个新表中可能有一行或多行。每行有一对书,其中一种类型。

这允许您插入任意数量的类型。它允许您搜索具有特定类型的书籍。以及许多其他类型的查询。

这是关系数据库的最大优势:数据由行集表示,您可以不断添加行。

这比尝试将许多值塞入一列要好得多!

您可能还喜欢我对在数据库列中存储分隔列表真的有那么糟糕的回答吗?


推荐阅读