Hay dos tipos especialmente indicados para almacenar diccionarios como un todo:hstore
y json
- o el mayormente superior jsonb
en Postgres 9.4 o posterior.
Postgres también tiene un xml
dedicado
tipo de datos, pero prefiero elegir una de las tres opciones anteriores. XML es comparativamente detallado y más complejo (por no decir enrevesado) y puede ser excesivo para su propósito.
Si todo lo que desea de la base de datos es almacenar y recuperar todo el diccionario, estas son buenas opciones. Ver:
También encontrará una amplia discusión sobre los pros y los contras de eav (entidad-atributo-valor) almacenamiento en bases de datos relacionales.
Si desea otras cosas de la base de datos, como integridad referencial, claves externas u otras restricciones, fácil acceso a valores individuales, tamaño de almacenamiento mínimo, índices simples, etc. Sugiero una o más tablas con dedicado (normalizado ) columnas.
Diseño de mesa normalizado
Por lo que deduzco, "MyObject" (m
) contiene una colección de referencias a "OtroObjeto" (o
). Cada m
está relacionado con (24) o
y cada o
está relacionado con 0-n m
- que se puede implementar en una relación n:m clásica. Aquí hay instrucciones detalladas: