如何在同一SQL列中存储多个值

时间:2014-08-11 05:56:57

标签: mysql sql

我想创建一个问题和答案应用程序,如堆栈溢出。

我不知道如何在MySQL表格列中存储多个答案。

我想知道如何在sql表的同一行中存储问题和多个答案。

5 个答案:

答案 0 :(得分:2)

不......不要这样做。 非常糟糕的主意恕我直言任何搜索和东西都很难。 为什么我们仍然拥有Rship数据库模型是有原因的。

但是,如果你必须沿着这条路走下去,你总是可以把它存储为JSON或XML,也许将来某个地方,Oracle将提供在列中搜索JSON或XML的功能:)

答案 1 :(得分:1)

你可以创建一个对象(假设你想在同一列中保存firstname和lastname,例如),像这样(VB示例):

public class myClass
public property firstname
public property lastname
end class

然后创建一个实例并分配属性

dim cls as new myClass
cls.firstname= ...
cls.lastname = ...

然后使用JavaScriptSerializer将此对象转换为json字符串并将该字符串存储在列中。在回来的路上,使用JavaScriptSerializer来清除列中的值以获取myClass的实例。如果您需要有关如何使用JavaScriptSerializer的信息,请在此网站上搜索(这里已多次回答,因此,不再重复)。

如果使用SQL Server,您可能还有一列XML数据类型并在列中存储XML(而不是json)。您可以在SQL Server中使用XML进行搜索。见How can I query a value in SQL Server XML column。 MySQL更新版本还支持搜索以json格式存储的数据。

答案 2 :(得分:1)

创建两个表并使用外键关系连接它们是最好的解决方案之一。 因为在同一个表格中保留问题和答案可能不允许您针对相同的问题获得多个答案。如果您希望单个问题有多个答案,那么数据库的冗余肯定会增加。因此,请尝试正确使用DB-Relationship概念。

答案 3 :(得分:0)

如果您需要StackOverflow结构,则应创建两个表QuestionsAnswers,并将它们与Answers' to 'Questions

中的外键相关联

答案 4 :(得分:0)

通过阅读你的问题,从我的观点来看,我意识到你的技能可能不够好,无法理解你想做什么。

所以我建议你在YouTube上观看Bucky Roberts的this教程 并阅读this关于数据冗余的维基百科文章。

无论如何都要回答你的问题。

我不会将答案和问题全部存储在一个表格列中。 考虑创建一个名为“答案”的第二个表格,为答案提供一个ID,并将它们与表格“问题”联系起来。

这被称为外键概念。 你可以阅读它here