Представление неограниченного количества в базе данных с целым типом данных
У меня есть таблица, которая сохраняет некоторые ограничения учетной записи, такие как пользователи. Для большинства строк это значение будет целым числом. Однако мне также необходимо поддерживать сохранение неограниченного (бесконечного) значения. Это может показаться глупым, но есть ли общее целочисленное значение, которое представляет неограниченное (бесконечное)? Я бы хотел сохранить значения как целые числа.
Ответы
Ответ 1
- использовать нуль
- использовать -1
- использовать null
Я предпочитаю null, если поле не равно NULL, тогда я предпочитаю нуль, если только ноль не является допустимым пределом, тогда я предпочитаю -1, если значение -1 не является допустимым, и в этом случае вам нужно другое поле (скажем, бит поле), чтобы обозначить "неограниченное".
Ответ 2
У вас не может быть бесконечного количества учетных записей, так как нет бесконечного числа людей. Фактически, вы действительно ограничены количеством учетных записей, которые у вас есть (если вы решите сохранить значение в одном столбце базы данных), так как любой механизм конечного хранения для счетных вещей имеет предел. Я бы предложил, с @Tor Haugen, что лучший способ сделать это - использовать ограничение, налагаемое системой (независимо от того, какое максимальное целое или длиннее ваш язык). Таким образом, вам не придется беспокоиться о каких-либо особых случаях для ваших сравнений. Кроме того, я бы использовал ограничение базы данных, чтобы предотвратить сохранение отрицательных значений в поле. 64-битное целое число, безусловно, будет содержать число, достаточно большое, чтобы быть практически неограниченным для вашего приложения.
Ответ 3
Хорошо, если вы обращаетесь к своей базе данных из .NET, у целочисленных типов есть постоянные члены MaxValue и MinValue. Иногда мы используем их для представления бесконечности. Конечно, эти значения не имеют особого значения в вашей РСУБД...
Ответ 4
Как целое число, бесконечность будет сложной. Несколько вариантов:
1) -1, с соответствующей программной логикой, которая рассматривает ее как бесконечную (и считая, что отрицательные значения фактически не действительны).
2) Дополнительный столбец с флагом, обозначающим конечный/бесконечный.
Ответ 5
Я не думаю, что там идеальное решение. Итак, вот мое предложение:
Создайте константы, которые представляют максимальные значения, которые могут быть сохранены в вашей базе данных и считать их "Бесконечность".
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html#integer-types