代码之家  ›  专栏  ›  技术社区  ›  twolfe18

如何处理一个表中的未知数据类型

  •  0
  • twolfe18  · 技术社区  · 16 年前

    在这种情况下,我需要在我的数据库中存储一个通用的数据块(可以是in t、float或string),但我不知道它会是什么。我需要一个表(或者更好的是表)来存储这个未知类型的数据。

    我想我要做的是为每种数据类型都有一个列,每个记录只使用一个列,而保留其他列。 NULL .这需要数据库上面的一些逻辑,但这并不是什么问题,因为无论如何我都要在模型中表示这些记录。

    基本上,有没有一种最佳实践方法可以做到这一点?我还没有想出比这更像是黑客的东西,但这似乎是一个常见的问题。事先谢谢。

    编辑:还有,这算是3nf吗?

    3 回复  |  直到 16 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    如果你 used SQLite 作为数据库后端:

    版本3数据库中的任何列(整数主键列除外)都可用于存储任何类型的值。

    对于其他RDBMS系统,我将使用 Philip 的解决方案。

    请注意,在我的软件系列(业务应用程序)中,我无法想到需要这种需求的任何情况(数据类型未知的值)。当然,除非领域模型有缺陷…我可以想象,其他软件可能会产生不同的实践,但我建议您考虑重新考虑您的总体设计。

        2
  •  1
  •   Philip Kelley    16 年前

    如果应用程序能够可靠地转换数据类型,则可以考虑基于可变长度二进制列的单列解决方案,第二列用于跟踪原始数据类型。(我以前做过一次基于此的非常小的例行程序,它运行得很好。)测试将显示转换在应用程序或数据库方面是否更有效地处理。

        3
  •  0
  •   rslite    16 年前

    如果要这样做,我将选择您的方法,或者将所有内容强制转换为字符串,只使用一列。当然,还有另一个具有类型的列(这可能对第一个方法也很有用)。

    为了更快的代码,我可能会使用您的方法。