[Cascavel-pm] Dúvida em implementação de BD. Opiniões?
Luis Campos de Carvalho
lechamps em terra.com.br
Terça Março 9 07:06:31 CST 2004
Francisco Lopes wrote:
> Olá Perl Monges,
>
> Mexo com Perl há alguns anos já, leio a lista desde o início, mas não
> participo muito. Fico apenas no modo "lurker". Alguns me conhecem, aos
> outros olá. :)
Oies!! Zuzu legal?
> O que vocês acham melhor:
>
> a) Criar um campo na tabela onde eu armazeno os IDs dos sites a que
> esta entrada deverá estar disponível, separados por vírgulas. Exemplo:
> na tabela "conteúdo", o valor do campo "sites" seria "1,2,4,6,7" (IDs
> de sites). O contra desta solução é que não poderei selecionar de uma
> maneira fácil (e que eu conheça) apenas as entradas do site ID 2, por
> exemplo.
Não vou nem comentar. Isto usa campos "multivalorados", coisa que a
ANSI SQL/97 aboliu na década de 1990 (ou antes). Não parece uma solução,
parece um pesadelo de manutenção.
> b) Criar entradas semelhantes separadas para cada site. É óbvio que o
> contra desta solução é o tamanho do banco de dados, que será bem maior
> do que o necessário.
De acordo. Isto é impraticável.
> c) Criar uma outra tabela so para armazenar os IDs dos conteúdos que
> cada site tem. Por exemplo: na tabela "distribuicao", o valor do campo
> "ids" para site X seria "1,2,3,4,5,6,7,8,9,10" (IDs de conteúdo). O
> contra desta solução é que ainda sim não poderei fazer uma seleção
> fácil na tabela de conteúdo, e a dificuldade de adicionar/remover os
> IDs do campo.
Desculpe, mas isto também depende de campos "multivalorados".
Desconfio que é a mesma idéia expressa em (a), mas alocada em outra
tabela.
> Não sei, a questão parece ser simples, acho que eu é que não estou
> conseguindo pensar "out-of-the-box". Opiniões? Aceito soluções
> diferentes das 3 mencionadas.
Tente
d) Criar uma tabela para relacionar website <--> conteudo, um para N.
Desta forma, sempre que você quiser saber quais conteúdos um website
tem, realiza uma varredura nesta tabela, e busca pelo campo "website",
obtendo uma lista de conteúdos. Não reclame da performance, a não ser
que você seja o IG ou o Terra, seu MySQL não vai precisar nem de tuning.
Se, ao contrário, você desejar saber quais websites tem conteúdo X,
basta SELECT DISTINCT( Site_ID, Content ) FROM web_x_content WHERE
Content = 'X'.
> Desculpa logo o meu primeiro email ser tão longo... tentei me
> expressar da melhor maneira possível, e ainda sim não tenho certeza se
> fui claro o bastante. :) Ah, o banco de dados é MySQL.
Foi mais ou menos.
Acho que você poderia ter fornecido um trecho maior do seu modelo de
dados existente. Isso teria facilitado bastante a minha vida, e talvez
alguma sugestão mais interessante aparecesse... (:
Se isso for suficiente, feliz implementação.
Se você precisar de mais alguma coisa, por favor não fique só
olhando! Pergunte à vontade!
Putamplexos!
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Luis Campos de Carvalho is BSc in Comp Science,
PerlMonk [SiteDocClan], Cascavel-pm Moderator,
Unix Sys Admin && Certified Oracle DBA
http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Mais detalhes sobre a lista de discussão Cascavel-pm