具有多个值的 MySQL 数据库列

标签 mysql database relational-database

我对我的实现想法是否易于使用/编写查询有疑问。

我目前有一个包含多列的数据库。大多数列都是相同的东西(项目,但分为项目 1、项目 2、项目 3 等)。

所以我目前在我的数据库中有 ID、名称、项目 1、项目 2 ..... 项目 10。

我想把它压缩成 ID, Name, Item.

但我希望 item 具有的是将多个值存储为不同的行。 IE。

ID = One  Name = Hello   Item = This
                              That
                              There

有点像它看起来的格式。这是个好主意吗?我该怎么做呢?我不会在数据库中使用任何数字,所有信息都是静态的,永远不会改变。

我可以使用 1 个数据库表来执行此操作吗(将一个 ID 的项目与另一个 ID 匹配会很容易),还是我需要创建 2 个表并将它们链接起来?

如果是这样,我将如何创建 2 个表并将它们关联起来?

关于如何实现这个的任何想法?谢谢!

最佳答案

这是一种经典类型的非规范化数据库。非规范化有时会提高某些操作的效率,但更多时候会导致效率低下。 (例如,如果您的一个写入查询是更改与 id 关联的名称,则您将不得不更改许多行而不是单个行。)非规范化应该仅在之后出于特定原因进行设计了一个完全规范化的数据库。在您的示例中,规范化的数据库设计将是:

表_1:ID(键),名称
table_2:ID(外键映射到table_1.ID),Item

关于具有多个值的 MySQL 数据库列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5629916/

相关文章:

mysql - 是否有理由将数据库事务用于只读 sql 语句?

Django 模型中的多态性

PHP - 如何打印我的数据库表?

.net - 像 MySQL 这样的开源数据库可以支持我网站的负载吗?

database - 如何将数据从 CRM 4.0 数据库传输到另一个 CRM 4.0 数据库?

php - 只允许从表单访问 PHP 脚本,而不是直接访问

java - Oracle 中的批处理失败。找出批处理中的哪个语句导致它

javascript - 获取 MySql 数据到 PHP 数组并转换为 Javascript 数组

mysql - 在 mysql 中将日期转换为 varchar 会引发语法错误

具有双连接和条件的 MySQL BEFORE DELETE 触发器