SQL Server - хранение нескольких десятичных значений в столбце? - PullRequest
0 голосов
/ 19 мая 2010

Я знаю, как хранить несколько значений в столбце. Не очень хорошая идея.

Это нарушает первую нормальную форму --- которая не содержит многозначных атрибутов. Нормализовать период ...

Я использую SQL Server 2005

У меня есть таблица, в которой требуется хранить нижний предел и верхний предел для измерения, думать о нем как о минимальном и максимальном ограничении скорости ... единственная проблема - только 2% от массы, мне нужен верхний предел. У меня будут только данные для нижнего предела.

Я думал сохранить оба значения в столбце (редкий столбец введен в 2008 году, поэтому не для меня)

Есть ли способ ...? Не уверен насчет XML ..

Ответы [ 3 ]

2 голосов
/ 19 мая 2010

Чтобы ответить на ваш вопрос, вы можете сохранить его в виде строки с определенным форматом, который вы знаете, как анализировать (например, «low: high»).

Но ... это действительно не очень хорошая идея.

Работа с 98% строк, имеющих значение NULL для верхнего предела, вполне подходит ИМХО. Держите его в чистоте, и вы не пожалеете об этом позже.

2 голосов
/ 19 мая 2010

Вы должны хранить безумное количество строк, чтобы это даже имело значение. Цена 1 терабайтного диска теперь составляет 60 долларов!

Два числа с плавающей запятой занимают 8 байтов; XML-строка будет использовать кратное этого только для хранения одного числа с плавающей запятой. Поэтому, хотя XML будет хранить только один столбец вместо двух, он все равно будет занимать больше места.

Просто используйте обнуляемый столбец.

1 голос
/ 19 мая 2010

Несмотря на это, я согласен с Андомаром. Используйте два столбца, нижний предел и верхний предел. Если какое-либо значение может быть неизвестно, сделайте эти столбцы обнуляемыми.

В качестве альтернативы, укажите произвольные минимальные и максимальные значения по умолчанию и используйте эти значения вместо нулей. (Выполнение этого означает, что вам никогда не придется связываться с триальной логикой, например, нужно обернуть все с помощью ISNULL или COALESCE.)

После того, как вы определили свою схему, есть несколько приемов, которые вы можете использовать для уменьшения пространства хранения (например, столбцы сжатия и разрежения).

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