mysql - tablas - ¿Cómo hacer modelos de herencia en bases de datos relacionales?
herencia en mysql (5)
Mi pregunta es sobre el modelado de herencia en sistemas de bases de datos relacionales. Tengo un modelo de datos canónicos y tengo algunos campos relacionados con el precio del producto que hereda ciertos atributos de la tabla de productos y quiero modelar esta herencia en la base de datos relacional de MySQL y, entonces,
"¿Cómo podemos hacer modelos de herencia en bases de datos relacionales?"
Gracias.
El capítulo 6 de "Problemas prácticos en la gestión de bases de datos" es probablemente una lectura interesante para usted.
Como todos los otros capítulos, probablemente, pero esos no se relacionan directamente con su pregunta.
Las bases de datos relacionales no se ocupan de los objetos (y, por lo tanto, de la herencia); se ocupan de las relaciones. Lo que realmente está preguntando es cómo asignar su estructura de objetos a su base de datos, y la respuesta a eso es "depende de su capa ORM".
Eche un vistazo a Mapping Objects to Relational Databases: O / R Mapping In Detail artículo para más detalles. Si nos dice qué paquete de software está utilizando, es probable que obtenga una respuesta más al punto.
Martin Fowler discute esto ampliamente en su libro Patterns of Enterprise Application Architecture book. Obtenga este libro y busque en:
El sitio web debería darte una idea. También es posible que desee leer la sección sobre mapeadores de herencia . Cada uno de los diferentes enfoques tiene sus pros y sus contras para elegir sabiamente.
Mire estos artículos para algunas ideas:
Si solo desea ver algunos artículos web en lugar de leer un libro, puede encontrar algunos artículos buenos en Google en:
Generalization Specialization Relational Modeling
El patrón gen-spec cubre una gran parte del mismo terreno que la herencia en entornos OOP.
Si googleas en
Generalization Specialization Object Modeling
obtendrá un lote completo de artículos, la mayoría de los cuales mencionan la herencia explícitamente.
Existe una técnica de diseño que se resume en la siguiente etiqueta class-table-inheritance bajo la etiqueta de información. Esto le permite usar tablas de subclase para "extender" una tabla de clase, si permite un uso extraño de la palabra "extender". Hay un poco de trabajo involucrado, pero vale la pena.