关系数据库中的动态和多个值

时间:2017-05-11 09:12:37

标签: sql mongodb

在我的关系数据库中,我想存储有关用户的详细信息(firstNamelastNameemail ...)。所以这意味着我有一个Users表。

这些字段将来可能会发生变化(可以添加/删除),并非所有用户都有相同的详细信息 - 例如某些用户可能没有email。)

这些数据是在用户提交某种表格时在不同场合收集的。

我希望能够存储,例如,用户输入其名字的所有表格(" Mike","迈克","迈克尔&#34 ;," michael"等),以及他们以这种方式进入的次数。

选项:

  1. 在我的Users表中,有多个列/字段,每个字段/字段存储一个字符串编码的JSON对象(例如{"Mike": 5, "Michael": 3}。由于显而易见的原因,这很糟糕。
  2. 添加另一个包含一对多的表,其中每个记录包含userId作为外键和一个键入的firstName。这很糟糕,因为这意味着为每个字段创建(或删除)表。
  3. 添加一个包含所有可能字段/列的表,其中的每条记录都将userId存储为外键和为该用户输入的数据。
  4. 我试图了解在关系数据库中是否有更好的方法来实现这一目标,或者可能是切换到非关系型数据库的转折点。

1 个答案:

答案 0 :(得分:1)

如果您对关系数据库有一些限制,那么您可以创建一个BLOB/CLOB列,它可以存储JSON,以便您可以管理数据库中的动态更改,如您所述。 但根据您所描述的情况,非关系型数据库是您需求的最佳选择。您可以根据需要添加或删除任意数量的列。