gpt4 book ai didi

database - 通用 Oracle 结果表

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:12 25 4
gpt4 key购买 nike

我正在设计一个新的实验室数据库。我想要一个表 (RESULTS) 中的所有原始结果(针对所有测试)。但是,数值在数量和精度上差异很大。例如,一些结果只是整数计数,而另一些结果则来自高度敏感的设备。

下面哪种情况是理想的(为什么)?

选项 1:将每个结果存储在 raw_result 列中,作为允许的最高精度的 NUMBER。

选项 2:创建 RESULTS 表和几个子表,每个子表代表相似数据类型的结果,并创建一个 raw_result 列作为具有该类型特定精度的 NUMBER . (即:1到1000的整数,小数到6位小数等)

此外,在相关帖子中 General Oracle Data Collection Storage ,我询问了在此数据库中存储原始信号的理想方式。

最佳答案

使用选项 1。无论精度和小数位数如何,NUMBER 都是 Oracle 内部的 NUMBER。

选项 2 从一开始就是一场可怕的维护噩梦,如果您决定更改其中一个值的精度,您会怎么做?

编辑:为了说明,请考虑:

    SQL> CREATE TABLE testing (n1 NUMBER(38,12), n2 NUMBER(5));

Table created
SQL> INSERT INTO testing VALUES (1, 1);

1 row inserted
SQL> INSERT INTO testing VALUES (990, 9900);

1 row inserted
SQL> INSERT INTO testing VALUES (1999999.999999, 1);

1 row inserted
SQL> SELECT n1, DUMP(n1) n1d, n2, DUMP(n2) n2d FROM testing;

N1 N1D N2 N2D
--------------------- ------------------------------ ------ --------------------
1.000000000000 Typ=2 Len=2: 193,2 1 Typ=2 Len=2: 193,2
990.000000000000 Typ=2 Len=3: 194,10,91 9900 Typ=2 Len=2: 194,100
1999999.999999000000 Typ=2 Len=8: 196,2,100,100,100 1 Typ=2 Len=2: 193,2
,100,100,100
SQL>

存储没有区别。存储的长度取决于数据,而不是列定义的精度/小数位数。

This link很好地解释了 NUMBER 类型的存储方式。这不像比较值来了解给定数字需要多少存储空间那么简单。例如,存储数字990需要3个字节,而存储9900只需要2个字节。

关于database - 通用 Oracle 结果表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1040805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com