Estoy tratando de crear una base de datos que contenga una lista de equipos. Todos los equipos tendrán ciertos atributos comunes (como fabricante, número de modelo, número de serie, etc.), luego hay otros atributos que son específicos de un determinado equipo (es decir, un módem tendrá un número de acceso, mientras que un panel solar tendrá una capacidad de salida). No estoy seguro de cómo representar estos atributos cambiantes con buenos principios de diseño de bases de datos, he intentado buscar en la web, pero no estoy seguro de qué buscar.Buen diseño de base de datos, número variable de atributos
que he llegado con las siguientes soluciones posibles y mis reflexiones iniciales sobre ellos:
Tiene una gran mesa con todos los atributos posibles y sólo hay que poner nula donde no es aplicable. Obviamente esto tiene algunos defectos.
Tenga una tabla separada para cada tipo de equipo. Parece que puede ser una pesadilla usar, si quiero imprimir una lista de todos los equipos, ¿cómo sé qué tablas buscar?
Tenga una tabla con los atributos comunes, y otras tablas para cada tipo de equipo al que se accede con una clave externa para almacenar los atributos adicionales. Probablemente podría hacer que esto funcione, pero sería engorroso y simplemente no parece una muy buena solución.
Modelo de tipo entidad-valor-atributo. Simplemente no parece una muy buena opción para lo que quiero hacer.
no tengo mucha experiencia con bases de datos, así que estoy aprendiendo sobre la marcha aquí, los enlaces relacionados con este problema o "lectura obligatoria" artículos sobre diseño de base de datos sería apreciada. ¡Gracias!
EDITAR: En primer lugar, descubrí que necesitaba Google "Mapeo de herencia", que podría ayudar a cualquier otra persona que tenga una pregunta similar. Para resolver el problema terminé usando un híbrido de # 2 y # 3. En realidad fue bastante fácil, funciona bien y resuelve el problema de agregar tipos de equipos adicionales sin la complejidad de EAV. Gracias por todos los comentarios y sugerencias!
verifique las respuestas en la siguiente publicación: http://stackoverflow.com/questions/870808/entity-attribute-value-database-vs-strict-relational-model-ecommerce-question –
Esta publicación contradice algunos otros artículos I leer diciendo EAV se debe evitar, ¿alguien pensamientos? – neurotik