[Cascavel-pm] Dúvida em implementação de BD. Opiniões?

Sandro Vitenti sandro em webengines.com.br
Terça Março 9 21:36:13 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á. :)
>
>Bom, feita a apresentação, minha dúvida:
>
>Estou desenvolvendo uma ferramenta para administração de conteúdo em
>diversos sites e me surgiu uma dúvida. A questão em si é simples, mas
>prefiro ouvir o que os monges tem para me dizer.
>
>Ao adicionar uma entrada ao banco de dados, pode-se escolher em quais
>sites esta entrada estará disponível (o sistema permitirá administrar
>vários sites, desde que na mesma máquina).
>  
>
  Bem, pelo q pude entender a solucao (c) seria a mais apropriada, mas 
com uma 'pequena' modificacao
algo assim

CREATE TABLE sites(
  id int not null auto_increment (mysql)OU id serial (postgres),
  name varchar(60) NOT NULL,
  PRIMARY KEY(id)
)

CREATE TABLE conteudo(
  id int not null auto_increment (mysql)OU id serial (postgres),
  ...
  PRIMARY KEY (id)
)

CREATE TABLE site_conteudo(
  site_id INT NOT NULL (so pra postgres) REFERENCES sites (id),
  conteudo_id INT NOT NULL (so pra postgres) REFERENCES conteudo (id)
)


Se eu entendi bem seu problema, acho q essa seria uma boa solucao, e 
melhor se for com
postgres pois vc teria algum controle de chave.

para pegar todo conteudo de todos sites simplesmente
SELECT * FROM conteudo;

para pegar todo conteudo do site 'www.blaha.com.br'

SELECT * FROM conteudo,sites,site_conteudo
WHERE conteudo.id=site_conteudo.conteudo_id AND
              site_conteudo.site_id=sites.id AND
              sites.name = 'www.blaha.com.br'

ou se ja tiver o id do site, 2 por exemplo

SELECT * FROM conteudo,site_conteudo
WHERE conteudo.id=site_conteudo.conteudo_id AND
              site_conteudo.site_id=2


Ah, e se usar o postgres talves seja uma boa ideia criar index nas 
colunas com referencias

Espero que ajude...

Sandro Vitenti




Mais detalhes sobre a lista de discussão Cascavel-pm