我正在创建一个博客,其中帖子具有可变数量的文本字段。因此,它可能有1个甚至30。问题是我不确定设置数据库的最佳实践是什么。为了解决这个问题,我正在使用一对多的关系。
这就是我当前的数据库结构现在的样子:
帖子表:
posts
- id
- title
发布文本表:
post_text
- id
- post_id
- text
和我的枢轴表:
post_text
- post_id
- post_text_id
这就是我能想到的。另一种方法是将后表列出到文本的最大列数。但这将导致很多空列,因为它们不会全部使用。但是我发现我使用的方法有点复杂?
有什么想法?
您必须在MySQL中具有可变数量的列数,因为您必须事先定义该模式,该模式无法以后更改。
如果您不使用MySQL,则可以尝试一些NOSQL DB,例如MongoDB,非常适合您的用例。
如果您的帖子需要多个文本条目是必不可少的,那么一对多关系是解决问题的正确方法。我为您提供的唯一建议是,您的桌子名称可以改进到更有指示的内容。
作为一个例子:
posts post_text_fields text_fields_in_post
虽然此方法可能看起来"过于复杂",但在使用mySQL建立一对多关系时,实际上是最简单的解决方案。
或MySQL是@demolisher在答案中提到的NOSQL解决方案,这些解决方案往往会围绕更可用的桌子结构(例如JSON(进行定向,并且可能更适合需要弱模式的应用程序。在这个领域,我也会推荐MongoDB
mySQL 5.7支持JSON数据类型,因此您现在可以存储半结构化数据以及常规架构。
,但我不明白你的问题。如果您之间的帖子和post_test之间有一对多的关系,那么您不需要多个文本列,您只需要为每个帖子存储多个行,每行一个文本。<<<<<<<<<</p>
我不知道你的第三张桌子是用什么。它具有与post_text相同的名称,并且您不需要一对多的关系。您可能需要它以进行多一关系。