Хранение в базе данных значений долготы / широты в SQL Server : decimal (2,?)

В определении таблицы, которое я увидел:

Latitude     ->    varchar(50)
Longitude    ->    nvarchar(50)

Сразу же, очевидно, я подверг сомнению мышление, стоящее за этим - будучи абсолютно уверенным, что эти значения по своей природе числовые. Короче говоря: я предположил, что они будут числовыми, фактически десятичными, и мы бы отбросили философию «мышления в струнах».

Теперь, что касается рогов моей дилеммы, я просто пошел вперед и набрал:

Latitude    ->    decimal(2, 4)

Но подождите секунду, 4 не так ли? Правильно. Так что я подумал, что подниму порог, прежде чем пойму (за доли секунды могу добавить), что 6 или 8 тоже не могут его сократить. Итак, обо всем по порядку ...

Правильно ли я настаиваю на том, чтобы мы даже поступили таким образом? И если так...

С какой точностью должны храниться эти значения, чтобы гарантировать, что мы сможем сохранить все значение, которое нужно вставить? Например, есть ли что-то предопределенное спецификацией?

Я не хочу просто использовать что-то вроде Latitude -> decimal (2, 16) просто для того, чтобы это было так же ошибочно, как десятичный (2, 2) в принципе. Аналогичный вопрос возникает специально для долготы, но я предполагаю, что ответа на один будет достаточно для другого, то есть decimal (3, answer) .

Мы используем MSSQL Server 2005.

Кажется, я обучаюсь работе с SQL Server вручную, и поэтому часть этого вопроса не имеет отношения к делу: я могу использовать только decimal (x, max (x)) , а не decimal (x, y) в любом случае! Оставим вопрос как есть для ввода.

6
задан Grant Thomas 2 September 2011 в 13:29
поделиться