Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

patricias

na modelagem do Banco

Recommended Posts

vlw aí Adailton e Fabyo.. só pra completar... eu fui um que sempre fiz as referenciações através de script PHP.. pois até ontem eu não sabia que dava pra criar foreign key.. e se eu fosse apagar um campo que estava referenciando outro..eu fazia tipo..delete from produtos where id = $id...delete from planilhas where id_prod = $id..e assim por diante.. acho que também ficava organizado e possível..né?vou me aprofundar nessas chaves aí agora.. valeu!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza yetiH, mas o servidor controlando é bem melhor porque ele nao deixa você apagar um campo referenciado mesmo que você queira nao da, só se você antes tirar a referencia do campo e efeito cascade é legal tbm que se você deleta um registro que esta relacionado em varios lugares o sistema pode deletar tudo na seguencia por isso o efeito cascata

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK!

Fabyo.. acho melhor você responder a patricias ali encima.. senão ela ainda vai ficar braba comigo! ;P hehe

vou esperar você explicar melhor esses efeitos.. cascade.. ao final dessa discussão...

e por sorte já tenho um projeto que eu estava fazendo.. e já vou utilizar a chave estrangeira!

vlw

 

[editando] -- achei um tópico ali no MySQL interessante tb

http://forum.imasters.com.br/index.php?showtopic=100466

 

e acho que com isso e mais umas pesquisadas já consigo entender certinho esses efeitos!

vlw galera!

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK!Fabyo.. acho melhor você responder a patricias ali encima.. senão ela ainda vai ficar braba comigo! ;P hehevou esperar você explicar melhor esses efeitos.. cascade.. ao final dessa discussão... e por sorte já tenho um projeto que eu estava fazendo.. e já vou utilizar a chave estrangeira!vlw[editando] -- achei um tópico ali no MySQL interessante tbhttp://forum.imasters.com.br/index.php?showtopic=100466e acho que com isso e mais umas pesquisadas já consigo entender certinho esses efeitos!vlw galera!

yetiH rs rs , vou mesmo!!!! http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif q nada, sei que muitos poderão tirar proveito desse topico!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é interessante referenciar usuario...(quem esta postando a notícia)?

 

 

 

Titulo

Conteudo

Foto

Data

Fonte

Tipo (se é destaque ou não) enum ("s","n")

Setor (qual setor pertence) fazer uma junção aqui nao precisa referenciar ele na tabela

Uma unica pessoa ficará encarregada de cadastrar as noticias que lhes serão enviada, essa pessoa tera um usuario e senha de admin para tal função

Compartilhar este post


Link para o post
Compartilhar em outros sites

por isso a maior parte do tempo vai no planejamento... ;PFabyo.. fiquei com dúvida agora em uma coisa..você falou que monta as tabelas no notepad..e você as executa aonde? em script PHP?tem como fazer isso no DOS?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é se o caso for ter varios usuario vamos colocar logo, um banco nao pode ficar sendo custurado tem que modelar e nao mecher mais

Uma unica pessoa ficará encarregada de cadastrar as noticias que lhes serão enviada, essa pessoa tera um usuario e senha de admin para tal função. Não sei até que ponto será necessário cadastrar mais usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem sim faz via prompt, mas eu testo depois no MySQLQueryBrowser e

as vezes eu monto as tabelas no MySQL Administrator

 

o que o Prog falou é verdade, mas ate o momento nao anuciaram nenhuma mudança quanto a licença, espero que continue free

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entenda... quando você modela a base de dados, tem por obrigação pensar nas atualizações que o programa possa a vir ter..Pensando assim, mesmo que no momento, somente uma pessoa ira cadastrar as noticias, é interessante ja deixar a modelagem dos dados prontas para Multi-User...em determinadomomento, se você,ou seu cliente decidir colocar mais pessoas escrevendo e publicando matérias não será necessário mexer no banco e fazer remendos...

 

 

 

é se o caso for ter varios usuario vamos colocar logo, um banco nao pode ficar sendo custurado tem que modelar e nao mecher mais

Uma unica pessoa ficará encarregada de cadastrar as noticias que lhes serão enviada, essa pessoa tera um usuario e senha de admin para tal função. Não sei até que ponto será necessário cadastrar mais usuário.

 

caso tenha mais usuarios vou usar uma tabela de junções dai nao precisa mecher na tabela noticias

Compartilhar este post


Link para o post
Compartilhar em outros sites

da uma olhada :

 

CREATE TABLE imagens (
id_imagem INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
imagem VARCHAR( 64 ) NOT NULL
) TYPE = innodb;

CREATE TABLE  noticias (
id_noticia INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
titulo VARCHAR( 40 ) NOT NULL ,
fonte VARCHAR( 64 ) NOT NULL ,
conteudo VARCHAR( 250 ) NOT NULL ,
destaque ENUM( "s", "n" ) NOT NULL DEFAULT 'n',
fk_imagem int(11) unsigned NOT NULL, 
FOREIGN KEY (fk_imagem)
REFERENCES imagens(id_imagem)
ON UPDATE NO ACTION ON DELETE RESTRICT, 
data DATE NOT NULL,
UNIQUE KEY titulo (titulo)
) TYPE = innodb;

CREATE TABLE setores (
id_setor INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
setor VARCHAR( 64 ) NOT NULL
) TYPE = innodb;

CREATE TABLE noticias_setores (
id_noticia int(11) unsigned NOT NULL,
id_setor int(11) unsigned NOT NULL,
FOREIGN KEY (id_noticia)
REFERENCES noticias(id_noticia)
ON UPDATE NO ACTION ON DELETE CASCADE,
FOREIGN KEY (id_setor)
REFERENCES setores(id_setor)
ON UPDATE CASCADE ON DELETE RESTRICT, 
PRIMARY KEY  (id_noticia, id_setor)
) TYPE = innodb;   

CREATE TABLE usuarios (
id_usuario int(11) unsigned NOT NULL auto_increment,
nome varchar(40) NOT NULL,
login varchar(20) NOT NULL,
senha char(32) NOT NULL,
email varchar(64) default NULL,
PRIMARY KEY  (id_usuario),
UNIQUE KEY email (email)
) TYPE = innodb;

 

ate aqui ja da pra vcs verem uma coisa interessante nao da pra gravar na tabela imagens um id(fk_imagem) que nao existir cadastrado isso ja é de grande ajuda para o banco ter conteudo real e nao gravar a toa ou dados que nao existam, e outra coisa depois de gravado na tabela imagens e gravado na tabela noticias aquela imagem que ta relacionada no noticias nao pode ser apagada podem testar se quiser vai dar um erro 1451

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal, fiz o q você falou,

agora preciso tb da tabela setores, ou seja, a que setor pertence essa noticia.

 

 

Criei a tabela setores conforme você falou, e o q mais é preciso?

 

 

CREATE TABLE setores (

id_setor INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,

setor VARCHAR( 64 ) NOT NULL

) TYPE = innodb;

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja atualizei em cima a tabela setores ta la

 

entao junções é para referenciar muitos pra muitos, e a noticia tera apenas 1 imagem se no caso da tabela noticias precisa-se cadastrar mais imagens a gente criaria a junções

 

só exclarecendo a tabela noticias_setores nela sera gravado o id_noticia e o id_setor e o setor nao pode ser apagado se ele tiver referenciado na tabela de junções, e se você apagar uma noticia o sistema ira apagar automaticamente na junções beleza ate aqui ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja atualizei em cima a tabela setores ta laentao junções é para referenciar muitos pra muitos, e a noticia tera apenas 1 imagem se no caso da tabela noticias precisa-se cadastrar mais imagens a gente criaria a junçõessó exclarecendo a tabela noticias_setores nela sera gravado o id_noticia e o id_setor e o setor nao pode ser apagado se ele tiver referenciado na tabela de junções, e se você apagar uma noticia o sistema ira apagar automaticamente na junções beleza ate aqui ?

Po show de bola isso.Adorei!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

té... então uma dúvida...tenho a tabela imagens.. com o id_imagemdaí tenho a tabela notícias com a foreign key fk_imagem referenciada na imagens.id_imagem... e com o ON DELETE RESTRICT certo?daí o que eu não consigo fazer é deletar um registro da tabela imagens se o id_imagem está contido em um campo na noticias.fk_imagem ?é isso né ou o contrário? ou os dois?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.