Existem dois tipos especialmente adequados para armazenar dicionários como um todo:
hstore
e json
- ou o mais superior jsonb
no Postgres 9.4 ou posterior. O Postgres também tem um
xml
dedicado
tipo de dados, mas prefiro escolher uma das três opções anteriores. XML é comparativamente detalhado e mais complexo (para não dizer complicado) e pode ser um exagero para o seu propósito. Se tudo o que você deseja do banco de dados é armazenar e recuperar todo o dicionário, essas são boas opções. Ver:
Você também encontrará uma ampla discussão de prós e contras sobre eav (entity-attribute-value) armazenamento em bancos de dados relacionais.
Se você quiser outras coisas do banco de dados, como integridade referencial, chaves estrangeiras ou várias outras restrições, fácil acesso a valores individuais, tamanho mínimo de armazenamento, índices simples etc. Sugiro uma ou mais tabelas com dedicado (normalizado ) colunas.
Layout de tabela normalizado
Pelo que entendi, "MyObject" (
m
) contém uma coleção de referências a "OtherObject" (o
). Cada m
está relacionado a (24) o
e cada o
está relacionado a 0-n m
- que pode ser implementado em um relacionamento clássico n:m. Aqui estão as instruções detalhadas: