Que es herencia en base de datos
Base de datos relacional heredada
Contenidos
La herencia de tabla única es una forma de emular la herencia orientada a objetos en una base de datos relacional. Al mapear desde una tabla de la base de datos a un objeto en un lenguaje orientado a objetos, un campo de la base de datos identifica a qué clase de la jerarquía pertenece el objeto[1] Todos los campos de todas las clases se almacenan en la misma tabla, de ahí el nombre de “herencia de tabla única”. En Ruby on Rails el campo de la tabla llamado ‘type’ identifica el nombre de la clase. En Hibernate (Java) y Entity Framework este patrón se denomina Tabla-Por-Clase-Herarquía y Tabla-Por-Herarquía (TPH) respectivamente,[2][3] y la columna que contiene el nombre de la clase se llama columna Discriminador.
¿Qué es la herencia en los SGBD con un ejemplo?
La herencia es una característica importante de la generalización y la especialización. Permite que las entidades de nivel inferior hereden los atributos de las entidades de nivel superior. Por ejemplo, los atributos de una clase Persona, como el nombre, la edad y el sexo, pueden ser heredados por entidades de nivel inferior, como Estudiante o Profesor.
¿Qué es la herencia SQL?
1 Acerca de la herencia en los tipos de objetos SQL. La herencia es el mecanismo que conecta los subtipos de una jerarquía con sus supertipos. Los subtipos heredan automáticamente los atributos y métodos de su tipo padre.
¿Por qué utilizamos la herencia?
La herencia es uno de los conceptos centrales de la orientación a objetos
orientados a objetos (OOP). Se trata de un mecanismo que permite derivar una clase de otra clase para crear una jerarquía de clases que comparten un conjunto de atributos y métodos.
Herencia de la tabla de clases
El modelo ER tiene el poder de expresar las entidades de la base de datos de forma jerárquica conceptual. A medida que se asciende en la jerarquía, se generaliza la visión de las entidades, y a medida que se profundiza en la jerarquía, se obtiene el detalle de cada entidad incluida.
El ascenso en esta estructura se denomina generalización, ya que las entidades se agrupan para representar una visión más generalizada. Por ejemplo, una estudiante particular llamada Mira puede ser generalizada junto con todos los estudiantes. La entidad será un estudiante, y además, el estudiante es una persona. Lo contrario se llama especialización, donde una persona es un estudiante, y ese estudiante es Mira.
Como se ha mencionado anteriormente, el proceso de generalización de entidades, donde las entidades generalizadas contienen las propiedades de todas las entidades generalizadas, se llama generalización. En la generalización, una serie de entidades se reúnen en una entidad generalizada basándose en sus características similares. Por ejemplo, la paloma, el gorrión, el cuervo y la paloma pueden generalizarse como aves.
Herencia Sql
La herencia es una de las características de la programación orientada a objetos. Se utiliza para definir la relación “es-un” entre los objetos. Sin embargo, las bases de datos relacionales no soportan la herencia. Por lo tanto, cuando hacemos el diseño de la base de datos en primer lugar, podemos acabar diseñando tablas sin tener en cuenta su herencia. Veamos un ejemplo.
Tengo que almacenar la información de dos tipos de extractos, como el de la cuenta bancaria y el de la tarjeta de crédito de un usuario. Puedo crear una tabla para cada tipo de extracto que tendrá todos los atributos relacionados con él. Así, puedo crear dos tablas – AccountStatement y CreditCardStatement – como se muestra en la Figura 1 (sólo se añaden unas pocas columnas para simplificar).
El diseño de la base de datos para estas tablas no utiliza la herencia. Sin embargo, cuando cree el modelo de dominio, en lugar de crear dos clases no relacionadas AccountStatement y CreditCardStatement, crearía una clase abstracta Statement como clase base para estas dos clases, como se muestra en la Figura 2. De esta manera, estaría utilizando la estrategia de Herencia de Tabla Concreta o Tabla por Clase Concreta de JPA 2.0.
Herencia oop
Consideremos una simple base de datos utilizada por una empresa de mensajería. Contiene información de registro para tres tipos de vehículos: camiones, coches y bicicletas. Para cada tipo de vehículo, su aplicación requiere la siguiente información:
Si estos son todos los atributos compartidos por todos los vehículos de la aplicación, entonces estos atributos deben aparecer todos en la superclase, Vehículo. A continuación, puedes construir subclases para cada uno de los tipos de vehículos que reflejen sus diferencias. Por ejemplo, la clase Camión puede tener un atributo que indique si el departamento de transporte local lo considera un vehículo comercial (NumAxles), la clase Coche puede requerir un atributo NumPass (número de pasajeros), y la clase Bicicleta, en virtud de su alcance más limitado, puede requerir un atributo Ubicación. A través de la herencia, cada vehículo hereda automáticamente la información básica del vehículo, pero al ser subclases separadas, también tienen características únicas.
Si su base de datos ya representa los objetos de la jerarquía de herencia de esta manera, puede asignar los objetos y las relaciones sin modificar las tablas. Sin embargo, lo más eficiente es representar todas las clases de una determinada jerarquía de herencia en una sola tabla, ya que reduce sustancialmente el número de lecturas de la tabla y elimina las uniones al consultar los objetos de la jerarquía.