我将在我正在开发的当前网站上创建比赛。每场比赛都不会相同,并且可能有不同数量的输入字段,用户必须输入这些字段才能成为比赛的一部分,例如。
比赛 1 可能只需要名字
比赛 2 可能需要名字、姓氏和电子邮件地址。
我还将构建一个工具来观察这些条目,以便我可以查看每个单独的条目。
我的问题是存储任意数量的字段的最佳方法是什么?我在考虑两个选项,一个是将每个条目写入一个包含所有竞赛条目的 CSV 文件,另一个是在数据库中有一个带有 varchar 字段的 db 表,该表仅将整个条目存储为文本。这两种方法看起来都很乱,这种任务有什么常见的做法吗?
理论上,我可以为每个可能的字段创建一个包含一列的数据库表,但是当比赛有特定要求时,例如“用 100 个字告诉我们为什么……”或“输入你最喜欢的 5 件事”,它就行不通了。 。”
回答:
我决定使用下面描述的方法,其中有多个通用列可用于每次比赛的不同目的。
最初我打算使用 EAV,但我仍然认为它可能更适合这种特定场景。但一般不推荐,因为它的可扩展性差,查询复杂,我不想养成使用它的习惯。在我的测试中,这两个答案都非常有效。