【问题标题】:How can I store data in a vertical table without losing precision?如何在不丢失精度的情况下将数据存储在垂直表中?
【发布时间】:2010-08-07 07:45:05
【问题描述】:

我想要一个能够存储标识字段、值和原始类型的垂直表(我知道,我知道......这几乎是不可避免的)。显然 value 字段需要是通用的,否则我将无法在其中存储各种不同类型的数据(varchar、text、int、decimal、bit 等)。

对于这种类型的设置,您有什么建议可以让我在提供灵活性和易用性的同时不会丢失数字数据类型的精度?

【问题讨论】:

  • 您是否考虑过添加“格式”字段以及字段/值/类型(同时将数字存储为字符串,按照格式字段格式化)?

标签: sql-server database-design


【解决方案1】:

你最好的选择绝对是一个 VARCHAR 列,因为有相当标准的机制可以将大多数类型转换为字符串。

请记住,每次有人制作这样的桌子时,都会有一只小猫死去。说真的,找到更好的方法。

【讨论】:

  • +1,因为人们需要知道他们对小猫做了什么
  • 稍微严肃一点,我想知道 varbinary(max) 是否会更好。不是所有东西都可以转换为二进制并返回而不会丢失吗?
  • 会,但是如果您需要将目光投向表格的内容,那将毫无意义。一点透明度通常值得多出几个字节。
【解决方案2】:

您将垂直存储数据,但在大多数情况下,您最终不会采用某些类型的值并将它们水平拆分吗?我见过有通用类型列的系统:varchar、int、float、date。

需要更多的编码来确定哪个列用于哪个字段;否则,您只需要处理转换为另一种格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多