mysql - telefono - Representación ilimitada en la base de datos con tipos de datos enteros
tipos de datos en mysql workbench (5)
Tengo una tabla que guarda algunos límites de cuenta como usuarios. Para la mayoría de las filas, este valor será un número entero. Sin embargo, también necesitaré admitir almacenamiento ilimitado (infinito) como valor. Esto puede parecer tonto, pero ¿hay un valor entero común que represente ilimitado (infinito)? Me gustaría seguir almacenando los valores como enteros.
Bueno, si está accediendo a su base de datos desde .NET, los tipos enteros tienen miembros constantes MaxValue y MinValue. A veces los usamos para representar el infinito. Por supuesto, estos valores no tienen ningún significado especial en su RDBMS ...
Como un entero, el infinito será difícil. Algunas opciones:
1) -1, con la correspondiente lógica de programa que lo trata como infinito (y suponiendo que los valores negativos no son realmente válidos).
2) Una columna adicional que sostiene una bandera que indica finito / infinito.
Realmente no se puede tener un número infinito de cuentas, ya que no hay un número infinito de personas. De hecho, realmente está limitado en la cantidad de cuentas que puede tener (si elige almacenar el valor en una sola columna de base de datos), ya que cualquier mecanismo de almacenamiento finito para elementos contables tiene un límite. Sugeriría, con @Tor Haugen, que la mejor manera de hacerlo es usar el límite impuesto por el sistema (el máximo entero o largo que proporcione su idioma). De esta forma, no tendrá que preocuparse por ningún caso especial para sus comparaciones. Además, usaría una restricción de base de datos para evitar almacenar valores negativos en el campo. Un entero de 64 bits seguramente tendrá un número lo suficientemente grande como para ser prácticamente ilimitado para su aplicación.
- usar cero
- usa 1
- usar nulo
Prefiero nulo, a menos que el campo no sea nulo, entonces prefiero cero, a menos que cero sea un límite válido, entonces prefiero -1, a menos que -1 sea un valor válido, en cuyo caso necesita otro campo (por ejemplo, un campo de bit) ) para significar ''ilimitado''.
No creo que haya una solución perfecta. Así que aquí va mi sugerencia:
Cree constantes que representen los valores máximos que se pueden almacenar en su base de datos y considérelos como "Infinito".
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html#integer-types