valor tipo inicializar hacer forma estados enumerado enumeraciones enumeracion enum definir declarar dato cuál correcta como clave database nhibernate enums fluent

database - tipo - La mejor manera de almacenar valores de enumeración en la base de datos-String o Int



java enum string (2)

Tengo una serie de enumeraciones en mi aplicación que se utilizan como tipo de propiedad en algunas clases.

¿Cuál es la mejor manera de almacenar estos valores en la base de datos, como String o Int?

Para su información, también mapearé estos tipos de atributos usando Nhibernate fluido.

Código de muestra:

public enum ReportOutputFormat { DOCX, PDF, HTML } public enum ReportOutputMethod { Save, Email, SaveAndEmail } public class ReportRequest { public Int32 TemplateId { get { return templateId; } set { templateId = value; } } public ReportOutputFormat OutputFormat { get { return outputFormat; } set { outputFormat = value; } } public ReportOutputMethod OutputMethod { get { return outputMethod; } set { outputMethod = value; } } }


Ambos tienen ventajas. Si los almacena por su valor Integer, debe tener cuidado al editar su enumeración más adelante en su proyecto. Si de alguna manera se redefinen los valores enteros para los elementos de enumeración, todos sus datos se corromperán. Pero será el tipo de datos más rápido / más pequeño de usar.

Si usa la representación de cadena, no tendrá el problema del valor redefinido mientras no cambie el nombre de los elementos en la enumeración. Sin embargo, las cadenas ocupan más espacio en su base de datos y su uso es probablemente un poco más costoso.

Al final, no hay un ganador definitivo, supongo.

Editar

Usar el valor Integer podría ser la mejor manera. Puede superar el problema del ''valor redefinido'' para los elementos de enumeración, configurando el valor para cada elemento usted mismo. De hecho, una buena sugerencia de Kevin.


La implementación es fácil en ambos casos, y las diferencias de rendimiento deben ser menores.

Por lo tanto, busque el significado: las cadenas son más significativas que los números , así que use la cadena.