fechas - pivot sql server ejemplo
Base de datos de EAV Pros/contras y alternativas (4)
¿Existe un método de base de datos alternativo para permitir atributos / campos y valores definidos por el usuario?
Una alternativa es cambiar el esquema de la base de datos en función de la entrada del usuario: por ejemplo, cuando el usuario desea un nuevo campo, luego agregue una columna correspondiente a la base de datos.
He estado buscando una solución de base de datos para permitir campos y valores definidos por el usuario (permitiendo un número ilimitado). A primera vista, el EAV parecía el adecuado, pero después de leerlo ya no estoy seguro.
¿Cuáles son los pros y los contras de EAV?
¿Existe un método de base de datos alternativo para permitir atributos / campos y valores definidos por el usuario?
Eche un vistazo a posgtres hstore http://www.postgresql.org/docs/9.0/static/hstore.html esto hará exactamente lo que quiera sin la mayoría de las desventajas
Esto no debe considerarse una respuesta exhaustiva, sino solo unos pocos puntos sobre el tema.
Dado que la pregunta también está etiquetada con la etiqueta [sql]
, permítame decir que, en general, las bases de datos relacionales no son particularmente adecuadas para almacenar datos utilizando el modelo EAV . Aún puede diseñar un modelo de EAV en SQL, pero tendrá que sacrificar muchas ventajas que proporcionaría una base de datos relacional. No solo no podrá exigir integridad referencial, usará tipos de datos SQL para valores y exigirá atributos obligatorios, sino que incluso las consultas más básicas pueden ser difíciles de escribir. De hecho, para superar esta limitación, varias soluciones EAV se basan en la duplicación de datos, en lugar de unirse a las tablas relacionadas, que como se puede imaginar, tiene muchos inconvenientes.
Si realmente necesita un diseño sin esquema, "permitiendo un número ilimitado de atributos", la mejor opción es utilizar una solución NoSQL . Aunque las debilidades de EAV en relación con las bases de datos relacionales también se aplican a las alternativas NoSQL, se le ofrecerán características adicionales que son difíciles de lograr con las bases de datos SQL convencionales. Por ejemplo, generalmente las áreas de almacenamiento de datos NoSQL se pueden escalar mucho más fácilmente que las bases de datos relacionales, simplemente porque fueron diseñadas para resolver algún tipo de problema de escalabilidad, y eliminaron de manera intencional características que dificultan la escalabilidad.
Muchas plataformas de computación en la nube (como las ofrecidas por Amazon , Google y Microsoft ) presentan almacenes de datos basados en el modelo de EAV, donde se puede asociar un número arbitrario de atributos con una entidad determinada. Si está considerando implementar su aplicación en la nube, puede considerar esto como una ventaja comercial, así como técnica, porque la fuerte competencia entre los grandes proveedores está llevando la relación valor-costo a niveles muy altos, aumentando continuamente las características y reduciendo los costos financieros y de implementación.
La plataforma Streams propone la forma alternativa basada en las entidades Streams (en realidad, es el Modelo de dominio ), Campos y Asignaciones .