Какой тип данных T-SQL вы бы обычно использовали для веса и длины? - PullRequest
4 голосов
/ 13 ноября 2009

Я создаю таблицу, в которой есть несколько полей, которые будут использоваться для записи веса и длины.
Примеры будут:
5 килограммов и 50 граммов будут храниться как 5,050.
2 метра 25 сантиметров будут храниться как 2,25.

Какой тип данных T-SQL лучше всего подходит для них?
Потребуются некоторые вычисления для этих полей, но использование десятичного числа по умолчанию (18,0) кажется излишним.

Ответы [ 4 ]

7 голосов
/ 13 ноября 2009

Не забудьте указать единицы измерения в названии столбца , например, WeightInKilos, LengthInMetres

7 голосов
/ 13 ноября 2009

Это действительно зависит от диапазона значений, которые вы намереваетесь поддерживать. Вы должны использовать десятичное значение, которое охватывает этот диапазон.

Например, для веса, похоже, вы хотите три знака после запятой. Скажем, вы хотите, чтобы максимальный вес составлял 1000 кг, тогда вам нужна точность в 7 цифр, 3 за запятой. Это дает вам десятичную (7,3)

2 голосов
/ 13 ноября 2009

Лучший тип данных зависит от диапазона и точности весов и длин, которые вы хотите сохранить. Для хранения веса людей это будет от 0,00 до 1000,00 кг. Таким образом, вам нужно больше 6 цифр (точность = 6), с 2 числами за точкой (шкала = 2). Это десятичное число :

weight decimal(6,2)

Для обычного (не научного) использования я бы избегал форматов приблизительного числа float и real. У них есть несколько удивительных ошибок, и конечным пользователям сложно воспроизвести результаты расчетов.

0 голосов
/ 13 ноября 2009

Вам нужно провести инвентаризацию того, что вы измеряете. Если они являются измерениями окон пользовательского интерфейса, то целые числа пикселей будут в порядке. Но это не сработало бы для измерения массы протона. Это старая сказка о масштабе и точности.

Самым простым решением может быть стандартизация их всех в одну единицу измерения. Как сказал Харриотт, вы можете добавить это к названию своей колонки. Я не большой поклонник этого из-за гибкости в рефакторинге позже, если требования или проекты меняются, но это вариант)

Если эти измерения являются широко открытыми и общими, так что вам нужно поддерживать очень большие или очень маленькие числа, возможно, измерение можно разделить на два столбца. Один для удержания величины и один для хранения единицы измерения. Одним из самых больших недостатков этого является сравнение значений, если вам нужно найти самые тяжелые объекты, и т. Д. Это можно сделать с помощью таблицы поиска, но, безусловно, добавляет уровень сложности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...