我对我的实现想法是否易于使用/编写查询有疑问。
我目前有一个包含多列的数据库。大多数列都是相同的东西(项目,但分为项目 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/