Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 以标准化方式表示尺寸单位_Database_Standards_Units Of Measurement - Fatal编程技术网

Database 以标准化方式表示尺寸单位

Database 以标准化方式表示尺寸单位,database,standards,units-of-measurement,Database,Standards,Units Of Measurement,假设你想在数据库中写入一个30米长,或50英尺,或温度是50开尔文,速度是每小时50公里的东西。 你如何代表这些单位 为了澄清这一点,有两点: 任何类型的单元,而不是预定义的、定义良好的单元子集 我的问题更多的是关于单位本体论的存在。我以数据库为例,因为这是我第一次想到的,但类似于用XML或JSON表示单元的场景也同样可能出现 您是否有特定的理由以不同类型的单位存储数量,而不是转换为某些“标准”单位(例如公制)?插入数据时,需要将输入数量转换为标准单位。在读取数据时,您可以将其转换为所需的任何

假设你想在数据库中写入一个30米长,或50英尺,或温度是50开尔文,速度是每小时50公里的东西。 你如何代表这些单位

为了澄清这一点,有两点:

  • 任何类型的单元,而不是预定义的、定义良好的单元子集
  • 我的问题更多的是关于单位本体论的存在。我以数据库为例,因为这是我第一次想到的,但类似于用XML或JSON表示单元的场景也同样可能出现

您是否有特定的理由以不同类型的单位存储数量,而不是转换为某些“标准”单位(例如公制)?插入数据时,需要将输入数量转换为标准单位。在读取数据时,您可以将其转换为所需的任何输出单位


这种方法在许多方面比以不同的单位存储数据更简单,但是您会丢失指定数据的原始单位的信息。

我会在列名中包含这些单位(例如,长度表、权重表、InfishSlapsPerSecond等),然后只在列中存储这些数字

理想情况下,能够将单元定义为列的(适当的)属性会很好,但我不知道有任何数据库允许这样做。由于列名中包含了单元,未来的开发人员很难对此感到困惑


我遇到过在第二列中包含单位的DB解决方案,但由于没有标准化的表示单位的方法,因此它要么是一个值为“ft.”、“feet”“feet”等的文本字段,要么是一个存储可能单位的表的FK(也是文本)。无论哪种方式,运行SUM或AVG查询(或任何计算)都会成为一场噩梦,特别是如果您允许在同一列中存储具有不同单位的值。

关系数据库设计的基本概念之一是,给定列中的所有值都应表示某种逻辑兼容类型的数据。形式上,一个列只有一个类型,并且一个类型中的任何两个值都可以在相等谓词中相互比较。这是类型理论的关键部分

因此,如果测量值不可比较,即长度与温度,则不应将它们存储在同一列中

您可能想看看“信息处理-表示” 在具有有限字符集的系统中使用SI和其他单位。”


另请参见“,”第4章,量表和测量。

关系理论认为,每个relvar(“表”)都有一个关联谓词,用于定义其中元组的含义。该谓词应该是数据库正式文档的一部分,这样,任何实际查阅文档的人都没有理由“误解了什么”(当然,除非文档不完整)

在该谓词中包含单位的定义(例如,“人的长度……是英尺”,“测量的温度……开尔文”,…)实现了这种完整性,并且避免了使用那些相当难看的属性(“列”)名称

我不明白为什么“仅仅存储数字”(在所有用户都同意的标准单元中)会“不容易”

如果食量是作为一个单位存在的,并且有人提出了一个新的单位fluffyperception,那么有人首先必须正式确定食量和fluffyperception的数量之间的对应关系,否则任何人都不会理解他所说的

编辑

我看到他补充道: “我需要保留有关原始单元的信息。”


没有什么能阻止你那样做。“规范化”值旁边的两个额外列(原始数量和原始单位名称)。您可以根据需要将“原始单元名称”约束为强约束或宽松约束。

这就是问题所在。我需要保留有关原始单元的信息。这与如何比较?对问题进行了澄清。这几乎是重复的,但答案描述了维度分解。也许我的问题不清楚,但我要求的更多是通用单元的标准化表示,而不是它在数据库中的存储策略。换句话说,如果你碰巧将“Foobaricity”定义为一个表达编程语言之美的单元,那么你需要一个本体论表达式,我想,从目前为止的答案来看,遵循已经存在的东西的轨迹。这并不容易,因为用户可以定义任意单元。我认为我的问题归结为单位本体论的存在(或缺乏)。有趣。非常有趣。谢谢