2016-09-23 2 views
0

Я нахожусь в виде выбора типа данных в таблице ниже в sqlite. Столбцы, выделенные желтым цветом, представляют собой пользовательские входы, а остальные - вычисленные поля. Скриншот отображает таблицу, а не таблицу sqlite! enter image description hereЛучший тип DataType для моей таблицы в SQLite

Из полученных знаний сказано, что выбор типа данных (в измеримой степени) влияет на значения вычисленных полей.

Например, я делаю таблицу sqlite ELZ_A, где все поля ввода, кроме DATE, влево & все вычисленные поля вправо. Если затем добавить triggers

UPDATE ELZ_A SET CURRENT_DENSITY = ROUND((LOAD/2.721), 2); 
UPDATE ELZ_A SET VOLTS_AVG = ROUND((VOLTS_T/ELEMENTS), 2); 
UPDATE ELZ_A SET VOLTS_STNDR = ROUND(2.4 + ((12.75/2.721) * ((VOLTS_AVG - 2.4)/CURRENT_DENSITY) - ((90 - CATHOLYTE_TEMP) * 0.01) + ((32 - CATHOLYTE_CONC) * 0.02)), 4); 
UPDATE ELZ_A SET KF_FACTOR = ROUND(((VOLTS_AVG - (90 - CATHOLYTE_TEMP) * 0.016 * ((LOAD/2.721)/5)) + ((32 - CATHOLYTE_CONC) * 0.033 * ((LOAD/2.721)/5) - 2.4))/(LOAD/2.721), 4); 

Как можно видеть вычисляемое поле VOLTS_STNDR далее используется для расчета KF_FACTOR также я округление первые два результата до 2 мест, в то время как последний ДО 4 ... Так как я могу заверить, используя данные -тип лучше всего подходит для отображаемых данных, чтобы получить точные расчетные ответы родственных, что EXCEL вычисляет


проблемы пояснено @SQLite Студия v3.0.6 @Debian x32

Все мои столбцы содержат десятичные знаки, кроме Элементов (которые являются целыми числами), поэтому я использую ... до EFFICIENCY являются входными данными пользователя, далее вычисляются столбцы. enter image description here

Теперь я с этой проблемой enter image description here Как можно наблюдать, где EFFICIENCY представляет собой целое число производств становится равным нулю ?? Так почему же эта проблема. Проблема смягчается настройки Datatypes такие как enter image description here enter image description here ... но это еще сбивает с толку, так как я не могу понять действительную причину

+0

SQL-представление может вычислять вычисленные данные, действуя как обычная таблица. Когда вы храните вычисляемые значения в реальных таблицах, вы рискуете, что ваши вычисленные данные не соответствуют исходным данным. –

+0

..не сопоставление исходных данных, это невозможно, если ваш запрос не закончил с поврежденным .db – nightcrawler

+0

Уверен, что это возможно: 'INSERT INTO some_table (x, x_plus_two) VALUES (15, 16); UPDATE some_table SET x = 3 WHERE x = 5/* oops забыл обновить x_plus_two * /; ' –

ответ

0

SQLite использует dynamic typing, поэтому какой тип данных вы объявляете не имеет значения для самой БД ,

В Excel числа всегда сохраняются с максимальной точностью; настройки форматирования влияют только на то, как они отображаются. Чтобы получить максимальную точность, отбросьте все вызовы ROUND() и измените код, отображающий данные.

И рассчитанные поля лучше всего реализовать с видом.