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.Representación ilimitada en la base de datos con tipo de datos enteros
Respuesta
- uso cero
- uso -1
- uso nula
prefiero nulo, a menos que el campo no es anulable, entonces prefieren cero, a menos que el cero es un límite válido, entonces yo prefiera -1, a menos que -1 sea un valor válido, en cuyo caso necesita otro campo (digamos, un campo de bit) para indicar 'ilimitado'.
Hm. Zero y -1 son miembros del conjunto de enteros. Y nulo (sin datos) puede ser un valor válido ya. La redefinición de los valores conocidos para tener nuevos significados especiales es confusa y, en general, no es sabia. –
no, puede tener sentido. obviamente, el rango normal del que estaría hablando no es el conjunto de enteros, sino el conjunto de enteros no negativos. dado que obviamente no puede establecer un límite de -1 usuarios, entonces es obvio que tiene un valor especial. este método también se usa en muchos lenguajes de programación. – nickf
@ [fixme.myopenid.com]: estuvo de acuerdo, pero supongo que en este caso no se usa el rango completo de valores enteros, ya que estamos hablando de límites de cuenta. En ese caso, querrías un valor centinela (http://en.wikipedia.org/wiki/Sentinel_value), que está bien. ¡Mientras esté documentado! –
Bueno, si usted está accediendo a la base de datos de .NET, los tipos enteros tienen constantes miembros MaxValue y MinValue. A veces los usamos para representar el infinito. Por supuesto, estos valores no tienen un significado especial en su RDBMS ...
"Redefiniendo bien- los valores conocidos que tienen nuevos significados especiales son confusos y, en general, no sabios ". ¿Quiere decir, como redefinir MinValue y MaxValue? Jaja! ;-) –
Creo que lo que se quiere decir es que MaxValue es realmente el límite práctico de todos modos, entonces ¿por qué no usarlo? – tvanfosson
como un entero, el infinito va a ser difícil. A algunas opciones:
1) -1, la lógica del programa correspondiente que lo trata como infinito (y suponiendo que los valores negativos en realidad no son válidos).
2) una columna adicional con 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.
No creo que haya una solución perfecta. Así que aquí va mi sugerencia:
Crear constantes que representan los valores máximos que se pueden almacenar en su base de datos y los consideran como "infinito".
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html#integer-types
Estaba pensando hacer lo mismo, pero es 2016, ¿no tenemos algo mejor aún? D –
- 1. formato de representación en la base de datos de web2py
- 2. Representación de recurrencia programada compleja en una base de datos
- 3. Representación de pedidos en una base de datos relacional
- 4. MySQL tipo de datos base de datos de
- 5. Haskell gráfico de tipo de datos de representación
- 6. ¿Vale la pena convertir las enumeraciones de cadena de la base de datos en enteros?
- 7. Representación de períodos de tiempo en la IU y la base de datos
- 8. Limitar longitudes de campo de tipo de datos enteros
- 9. Consultas de tipo de base de datos con Firebase
- 10. ¿Por qué Redis usa números de base de datos enteros?
- 11. Copia de datos relacionales de la base de datos a la base de datos
- 12. problema con conseguir los datos de la base de datos
- 13. Alterar el tipo de datos de columna en la base de datos de producción
- 14. Rieles: almacenamiento de datos cifrados en la base de datos
- 15. Representación de datos dispersos en PostgreSQL
- 16. Manejo de datos de jerarquía en la base de datos
- 17. Almacenamiento de tipo de datos desconocido en la base de datos del servidor MS SQL
- 18. ¿Dónde está la base de datos de tipo iPhone MIME?
- 19. ¿Qué tipo de datos es mejor para almacenar artículos en la base de datos SQL?
- 20. Tipo de base de datos personalizada en ActiveRecord
- 21. Representación de números enteros en dobles
- 22. insertar datos en la base de datos de MS Access con ADO a través de Python
- 23. Cifrado de datos para almacenamiento en la base de datos
- 24. Almacenamiento de ceros iniciales de números enteros en la base de datos MySQL como INTEGER
- 25. ¿Por qué falla la migración de la base de datos en caso de tipo de datos blob en rieles?
- 26. Modelo con base de datos en MVVM
- 27. Obteniendo datos almacenados de la base de datos en ListView.
- 28. Mostrar datos de la base de datos SQL en Gridview
- 29. Qué tipos de enteros usar para enteros de datos centrales
- 30. cómo almacenar datos en la base de datos en HTML5
límite será un número entero. ¿En qué rango? ¿Positivo? –
si realmente necesita ampliar este concepto (que probablemente no tenga), podría crear un ENUM para que el significado de cualquier valor especial sea obvio para cualquiera que se encuentre con él – ldgorman