Esta publicación corresponde a una respuesta que he dado via chat en el grupo de ayuda PosgreSQL en Español en Telegram.
Un usuario tiene una tabla con dos columnas: tipo_objeto
e id_objeto
. Los objetos se almacenan en otras tablas, pero la tabla en la cual se almacena el objeto depende del tipo de objeto. En algunos contextos esto se denomina relaciones polimórficas.
Por ejemplo, se puede tener una tabla de recursos en la cual se almacena una lista de recursos por departamento. Los recursos pueden ser humanos o materiales. Tendríamos la tabla humanos, materiales y recursos. Lo interesante es que en la de recursos tendríamos los campos siguientes: fk_depto_id
, tipo_recurso
, recurso_id
. Este último campo es un identificador que se encuentra en la tabla humanos o materiales según lo que indique tipo_recurso
.
¿Cómo hacer un LEFT JOIN
entre la tabla que almacena la relación y las tablas con los objetos?