Представление неограниченного в базе данных с целочисленным типом данных - PullRequest
17 голосов
/ 06 ноября 2008

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

Ответы [ 5 ]

28 голосов
/ 06 ноября 2008
  • используйте ноль
  • используйте -1
  • использовать ноль

Я предпочитаю ноль, если поле не имеет значения NULL, то я предпочитаю ноль, если ноль не является допустимым пределом, тогда я предпочитаю -1, если -1 не является допустимым значением, в этом случае вам нужно другое поле (скажем, битовое поле) для обозначения «неограниченно».

5 голосов
/ 11 января 2009

Вы не можете иметь бесконечное количество учетных записей, так как не существует бесконечного количества людей. Фактически, вы действительно ограничены в количестве учетных записей, которые у вас могут быть (если вы решите хранить значение в одном столбце базы данных), поскольку любой конечный механизм хранения для исчисляемых вещей имеет ограничение. Я бы предложил, с @Tor Haugen, что лучший способ сделать это - использовать ограничение, наложенное системой (независимо от того, какое максимальное или целое число обеспечивает ваш язык). Таким образом, вам не придется беспокоиться о каких-либо особых случаях для ваших сравнений. Кроме того, я бы использовал ограничение базы данных, чтобы предотвратить сохранение отрицательных значений в поле. 64-разрядное целое число будет содержать достаточно большое число, чтобы быть практически неограниченным для вашего приложения.

4 голосов
/ 06 ноября 2008

Хорошо, если вы обращаетесь к своей базе данных из .NET, целочисленные типы имеют постоянные члены MaxValue и MinValue. Мы иногда используем их для представления бесконечности. Конечно, эти значения не имеют особого значения в вашей РСУБД ...

3 голосов
/ 06 ноября 2008

Как целое число, бесконечность будет сложной. Несколько вариантов:

1) -1, с соответствующей программной логикой, которая рассматривает ее как бесконечную (и предполагая, что отрицательные значения на самом деле не действительны).

2) Дополнительный столбец, содержащий флаг, указывающий конечный / бесконечный.

0 голосов
/ 27 августа 2012

Я не думаю, что есть идеальное решение. Итак, вот мое предложение:

Создайте константы, представляющие максимальные значения, которые можно сохранить в вашей базе данных, и рассматривайте их как «Бесконечность».

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html#integer-types

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