2014-12-10 23:45 GMT-02:00 Marcio A. Sepp <mar...@zyontecnologia.com.br>:
> Conforme sugerido num email anterior, estou abrindo este tópico para > deixar a lista mais organizada. > A pergunta eh simples: como vcs tratam tabelas de movimentação que contém > muitos registros e que são referenciadas por outros objetos (fks)? > Primeiro, creio que você esteja falando de "particionamento de tabelas", e não "replicação horizontal" (o último pode se confundir com outras técnicas). Quanto à sua dúvida. Uma prática comum é que a tabela pai fique *sempre* vazia, e coloca-se uma trigger BEFORE INSERT nesta para redirecionar as inserções da tabela pai para as tabelas filhas. Agora, para garantir FK, costuma-se usar um tabela *shadow* (sombra). Nesta tabela vai ter apenas uma cópia da chave primária da tabela sendo particionada (geralmente uma chave artificial int/bigint auto-incrementada), e esta também vai ser um chave primária dessa tabela, assim sendo, sempre que precisar de uma chave estrangeira para a tabela particionada, faz-se a chave para esta tabela *shadow*. Mesmo tendo muitos registros, eles são compostos apenas de uma coluna com um índice, logo a verificação costuma ser rápida o suficiente. Claro, você deve usar funções de gatilho para manter essa tabela sempre atualizada. Veja, é um pouco trabalhoso, mas funciona. Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral