mysql - 在 MySQL 的列中插入多个值
问题描述
我正在做一个图书馆管理系统,我创建了一个名为 BOOK 的表,其中包含“GENRE”列。
一本书可能有多种类型。例如小说、爱情、悬疑。
将这个多重标签插入一本书的最佳方法是什么?我是否应该将整行与其他列(如标题、作者、出版商...)一起插入?
谢了。
解决方案
您正在描述一个多值属性。也就是说,一本书可以有多种类型。
在 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)
);
对于每一本书,这个新表中可能有一行或多行。每行有一对书,其中一种类型。
这允许您插入任意数量的类型。它允许您搜索具有特定类型的书籍。以及许多其他类型的查询。
这是关系数据库的最大优势:数据由行集表示,您可以不断添加行。
这比尝试将许多值塞入一列要好得多!
您可能还喜欢我对在数据库列中存储分隔列表真的有那么糟糕的回答吗?
推荐阅读
- java - Add Parameters to Google Cloud Tasks
- reactjs - 如果某些浏览器中的某些列是固定的,为什么 Ant 表中的表头和数据重叠?
- javascript - 使用 Date javascript 转换时间戳数组
- javascript - Javascript密码生成器如何确保密码符合标准
- javascript - 制作可使用 Google 表单更新的库存电子表格的最佳方法是什么?
- excel - 将一个单元格超链接到同一工作表中的另一个单元格
- php - 从数组数组中过滤唯一值
- r - 在 Formattable 表中显示替代 color_bar 值
- python - Django:获取正确对象的问题
- c# - Using XDocument.XPathSelectElement with multiple conditions