Pregunta

Estoy usando el concepto de single table inheritance debido a las consideraciones de OOP, por supuesto.
Por ejemplo, PostLike y TopicLike heredado de la clase de Like.
Veo dos problemas con esta metodología:

  1. en lugar de dos mesas (entrelazaras y topics como "una mesa grande" de los gustos.
  2. Esta tabla tiene una columna adicional llamada DTYPE que permite la identificación de registros (es decir, tipo de como).A largo plazo, podría ser un enorme residuo del espacio en disco.¿No es así?

    No soy un experto en DB y, debido a eso, quería obtener sus ideas sobre este diseño de la base de datos y si es crucial, esos dos problemas son o no.

¿Fue útil?

Solución

Si solo tiene una tabla en lugar de dos, las lecturas serán más rápidas, porque evitará "uniones". Pero usará más espacio porque tendrá una columna adicional "DTYPE", y algunas columnas vacías.

Vamos a obtener un ejemplo.Aquí está el modelo (sin las anotaciones JPA):

public abstract class Like {
    public Long id;

    public String foo;
}

public class PostLike extends Like {

    public String post;
}


public class TopicLike extends Like {

    public String topic;
}

obtendrás la tabla Like:

----------------------------------
|dtype | id | foo | topic | post |
----------------------------------
|post  |  1 |   a |  NULL |   p1 |
|topic |  2 |   b |    t1 | NULL |
----------------------------------

y como puede ver, para un elemento "postlike", tendrá un valor nulo "tema".

Pero hoy en día, el espacio en disco, si no es un problema real.

El único defecto que veo con la herencia de una sola tabla es el número de columnas que pueden ser enormes si tiene muchas propiedades, y es más difícil agregar una nueva propiedad / columna en su modelo (si tiene que aplicar unDb evolution).

y afaik, EBEAN SOLO SOLICIENTE "HERIDA DE LA TABLA SOLA".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top