Ir para conteúdo

POWERED BY:

Arquivado

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

patricias

na modelagem do Banco

Recommended Posts

Bem legal, to gostando da explicacao!!!

To conseguindo entender mais....

essa referencia como será feita?

 

 

da uma estudada na tabela noticias que eu vou postar mas só pra você ter uma ideia de relacionamentos, nao vai funcionar ainda porque pra fazer referencia numa tabela ela precisa existir

 

CREATE TABLE noticias (	id_noticia int(11) NOT NULL auto_increment,	titulo varchar(100) NOT NULL,	conteudo text NOT NULL,	data date NOT NULL,	status enum('D','L') NOT NULL default 'D',	fonte text NOT NULL,	fk_imagem int(11) unsigned NOT NULL,	FOREIGN KEY (fk_imagem)	REFERENCES imagens(id_imagem),	fk_usuario int(11) unsigned NOT NULL,	FOREIGN KEY (fk_usuario)	REFERENCES usuarios(id_usuario),	fk_categoria int(11) unsigned NOT NULL,	FOREIGN KEY (fk_categoria)	REFERENCES categorias(id_categoria),			PRIMARY KEY (id_noticias)) TYPE = innodb;
nao se preoculpe com a demora um sistema bem feito se gasta 60% ou ate 70% ou mais com analise do que programando

 

e um banco bem modelado tbm é pra se pensar bem, definir tudo antes e o tempo gasto na modelagem é para o bem do sistema

Compartilhar este post


Link para o post
Compartilhar em outros sites

é do jeito que eu passei mesmo, mas vai dar erro se nao existir as outras tabelas entendeu?

 

entao tem ordem pra você criar as tabelas

 

exemplo

 

REFERENCES imagens(id_imagem),

 

vai dar erro se a tabela imagens e o campo id_imagem nao existir

Compartilhar este post


Link para o post
Compartilhar em outros sites

é do jeito que eu passei mesmo, mas vai dar erro se nao existir as outras tabelas entendeu?entao tem ordem pra você criar as tabelasexemploREFERENCES imagens(id_imagem),vai dar erro se a tabela imagens e o campo id_imagem nao existir

ta, mas em que momento vou utilizar esse comando REFERENCES? e qual a sintaxe correta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

a sintaxe correta é essa mesmoe você vai usar pra criar o banco de dadose seguindo a ordem de criação das tabelas

Ta, entao no momento em que eu for criar o banco, utilizo esse comando , seguindo a ordem de criação, ou seja, imagem/noticias/noticias_imagem/noticias_setores/noticias_tipo/setores/tipo/usuariosficaria assim? :
-- phpMyAdmin SQL Dump-- version 2.6.2-pl1-- http://www.phpmyadmin.net-- -- Servidor: localhost-- Tempo de Geração: Jan 25, 2006 as 05:21 PM-- Versão do Servidor: 3.23.47-- Versão do PHP: 4.4.2-- -- Banco de Dados: `portal`-- -- ---------------------------------------------------------- -- Estrutura da tabela `noticias`-- CREATE TABLE noticias (	id_noticia int(11) NOT NULL auto_increment,	titulo varchar(100) NOT NULL,	conteudo text NOT NULL,	data date NOT NULL,	status enum('D','L') NOT NULL default 'D',	fonte text NOT NULL,	fk_imagem int(11) unsigned NOT NULL,	FOREIGN KEY (fk_imagem)	REFERENCES imagem(id_imagem),	fk_setores int(11) unsigned NOT NULL,	FOREIGN KEY (fk_setores)	REFERENCES setores(id_setores),	fk_usuario int(11) unsigned NOT NULL,	FOREIGN KEY (fk_usuario)	REFERENCES usuarios(id_usuario),	fk_tipo int(11) unsigned NOT NULL,	FOREIGN KEY (fk_tipo)	REFERENCES tipo(id_tipo),			PRIMARY KEY (id_noticias)) TYPE = innodb-- -- Extraindo dados da tabela `noticias`-- -- ---------------------------------------------------------- -- Estrutura da tabela `imagem`-- CREATE TABLE `imagem` (  `id` int(11) NOT NULL auto_increment,  `imagem` blob NOT NULL,  PRIMARY KEY  (`id`)) TYPE=MyISAM AUTO_INCREMENT=6;-- -- Extraindo dados da tabela `imagem`-- -- ---------------------------------------------------------- -- Estrutura da tabela `noticias_imagem`-- CREATE TABLE `noticias_imagem` (  `id_noticia` int(11) unsigned NOT NULL default '0',  `id_imagem` int(11) unsigned NOT NULL default '0',  PRIMARY KEY  (`id_noticia`,`id_imagem`)) TYPE=MyISAM;-- -- Extraindo dados da tabela `noticias_imagem`-- -- ---------------------------------------------------------- -- Estrutura da tabela `noticias_setores`-- CREATE TABLE `noticias_setores` (  `id_noticia` int(11) unsigned NOT NULL default '0',  `id_setor` int(11) unsigned NOT NULL default '0',  PRIMARY KEY  (`id_noticia`,`id_setor`)) TYPE=MyISAM;-- -- Extraindo dados da tabela `noticias_setores`-- -- ---------------------------------------------------------- -- Estrutura da tabela `noticias_tipo`-- CREATE TABLE `noticias_tipo` (  `id_noticia` int(11) unsigned NOT NULL default '0',  `id_tipo` int(11) unsigned NOT NULL default '0',  PRIMARY KEY  (`id_noticia`,`id_tipo`)) TYPE=MyISAM;-- -- Extraindo dados da tabela `noticias_tipo`-- -- ---------------------------------------------------------- -- Estrutura da tabela `setores`-- CREATE TABLE `setores` (  `id_setores` int(11) NOT NULL default '0',  `setores` varchar(20) NOT NULL default '',  PRIMARY KEY  (`id_setores`)) TYPE=MyISAM;-- -- Extraindo dados da tabela `setores`-- -- ---------------------------------------------------------- -- Estrutura da tabela `tipo`-- CREATE TABLE `tipo` (  `id_tipo` int(5) NOT NULL auto_increment,  `destaquemaior` varchar(30) NOT NULL default '',  `destaquemenor1` varchar(30) NOT NULL default '',  `destaquemenor2` varchar(50) NOT NULL default '',  `destaquemenor3` varchar(20) NOT NULL default '',  `destaquemenor4` varchar(20) NOT NULL default '',  PRIMARY KEY  (`id_tipo`)) TYPE=MyISAM AUTO_INCREMENT=1;-- -- Extraindo dados da tabela `tipo`-- -- ---------------------------------------------------------- -- Estrutura da tabela `usuarios`-- CREATE TABLE `usuarios` (  `id` int(11) NOT NULL auto_increment,  `nome` varchar(100) NOT NULL default '',  `email` varchar(64) NOT NULL default '',  `senha` varchar(32) NOT NULL default '',  `data` date NOT NULL default '0000-00-00',  PRIMARY KEY  (`id`)) TYPE=MyISAM COMMENT='Usuários que acessam a Área Administrativa' AUTO_INCREMENT=5;-- -- Extraindo dados da tabela `usuarios`--

Compartilhar este post


Link para o post
Compartilhar em outros sites

só um detalhe importante o tipo de tabela tem que ser innodb senao nao vai funcionar

De todas elas?? depois disso o que mais temos que fazer como o banco??

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso de todas, e agora precisamos rever as tabelas que nao estao bem modeladas

 

ve se a tabela noticias ta ok e nao falta nada:

 

CREATE TABLE noticias (

id_noticia int(11) NOT NULL auto_increment,

titulo varchar(100) NOT NULL,

conteudo text NOT NULL,

data date NOT NULL,

status enum('D','L') NOT NULL default 'D',

fonte text NOT NULL, -> -> confirma esse fonte o que seria

fk_imagem int(11) unsigned NOT NULL,

FOREIGN KEY (fk_imagem)

REFERENCES imagem(id_imagem),

fk_setores int(11) unsigned NOT NULL,

FOREIGN KEY (fk_setores)

REFERENCES setores(id_setores),

fk_usuario int(11) unsigned NOT NULL,

FOREIGN KEY (fk_usuario)

REFERENCES usuarios(id_usuario),

fk_tipo int(11) unsigned NOT NULL,

FOREIGN KEY (fk_tipo)

REFERENCES tipo(id_tipo),

PRIMARY KEY (id_noticia)

) TYPE = innodb

 

vamos definir uma tabela por vez pra acabar essa tabela

c precisa ver se o campo titulo pode ter um titulo repetido ou nao, isso é importante pra pesquisar se tiver repetido nao vai ser possivel você achar alguma noticia com precisao

e a noticia teria apenas uma imagem mesmo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso de todas, e agora precisamos rever as tabelas que nao estao bem modeladas

 

ve se a tabela noticias ta ok e nao falta nada:

 

 

CREATE TABLE noticias (

id_noticia int(11) NOT NULL auto_increment,

titulo varchar(100) NOT NULL,

conteudo text NOT NULL,

data date NOT NULL,

status enum('D','L') NOT NULL default 'D',

fonte text NOT NULL, -> -> confirma esse fonte o que seria

fk_imagem int(11) unsigned NOT NULL,

FOREIGN KEY (fk_imagem)

REFERENCES imagem(id_imagem),

fk_setores int(11) unsigned NOT NULL,

FOREIGN KEY (fk_setores)

REFERENCES setores(id_setores),

fk_usuario int(11) unsigned NOT NULL,

FOREIGN KEY (fk_usuario)

REFERENCES usuarios(id_usuario),

fk_tipo int(11) unsigned NOT NULL,

FOREIGN KEY (fk_tipo)

REFERENCES tipo(id_tipo),

PRIMARY KEY (id_noticia)

) TYPE = innodb

vamos definir uma tabela por vez pra acabar essa tabela

c precisa ver se o campo titulo pode ter um titulo repetido ou nao, isso é importante pra pesquisar se tiver repetido nao vai ser possivel você achar alguma noticia com precisao

e a noticia teria apenas uma imagem mesmo ?

 

Bom, a tabela esta OK sim, o campo fonte seria a fonte de onde a noticia foi retirada. Não gostaria que tivesse titulo repetido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao o font pode ser um varchar mesmo

e colocaremos um unique no campo titulo

e a noticia tera apenas uma imagem ?

Sim, tera apenas uma imagem, de modo que na divulgacao da noticia a imagem seja pequena, e quando eu for "ler" a noticia inteira, se puder, aparecer a imagem maior, normalmente as imagens, disponibilizadas tem uma resolucao boa, não sei se isso importa.

 

Como seria esse campo unique, ou melhor, como você determina, que o campo sera unique?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao importa, mas sendo uma ta ok

 

para você entender melhjor como funciona cada tipo de campo e quando usar cada um medindo pelo tamanho do campo

 

e tbm sobre campos numericos, unsigned, textos etc...

 

http://dev.mysql.com/doc/refman/4.1/pt/column-types.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao precisa dessa tabela noticias_imagem porque a imagem ja esta relacionada na tabela noticias e você falou que era apenas 1 imagem

 

precisa rever essa tabela tipo

 

e a usuarios dar uma melhorada

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao precisa dessa tabela noticias_imagem porque a imagem ja esta relacionada na tabela noticias e você falou que era apenas 1 imagem

 

precisa rever essa tabela tipo

 

e a usuarios dar uma melhorada

O que precisa ser feito, a tabela noticias_imagem entao eu retiro? e a tipo, oq precisamos fazer? quanto a tabela de usuarios, oq precisa melhorar? na verdade, eu só queria fazer um painel de administracao para login e senha, sendo que essa, tb foi "ensinada" pelo cd, mas não funciona!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao vamos fazer um que funciona = )

 

o usuario tera login com niveis de acesso?

 

e a data na tabela usuarios é pra que salvar a data que o usuario foi cadastrado ? e vai querer salvar a data de aniversario tbm ?

 

e sobre a tabela tipo ela ta estranho nao pode fazer daquele jeito

um banco bem modelado nao pode existir campo1 campo2 etc... você nao pode limitar um banco desse jeito

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao vamos fazer um que funciona = )

 

o usuario tera login com niveis de acesso?

 

e a data na tabela usuarios é pra que salvar a data que o usuario foi cadastrado ? e vai querer salvar a data de aniversario tbm ?

 

e sobre a tabela tipo ela ta estranho nao pode fazer daquele jeito

um banco bem modelado nao pode existir campo1 campo2 etc... você nao pode limitar um banco desse jeito

 

Login simples, com usuario e senha, com cadastro simples, sim pode ter data de aniversário.

 

a tabela tipo, pode ser feita de uma forma melhor sim, eu sem experiencia acabei dando esses nomes1 nome 2....mas quero saber se precisamos ter uma tabela para determinar o tipo da noticia..., se ela será um link simples ou tera um destaque....enfim....

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpa me intrometer.. tá legal essa explicação.. acho que mais gente vai tirar proveito assim como eu..só uma pequena dúvida... o MySQL sempre aceitou chave estrangeira?ou a partir de qual versão?lógico que eu estava tentando do jeito errado.. mas já tinha tentado utilizar FOREIGN KEY e não tinha conseguido.. e tudo que é lugar onde eu perguntava diziam que o MySQL não suportava isso...vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

o mysql suporta desque a versao do mysql tenha o innodb porque se for tabela MyISAM o relacionamento nao funciona e antigamente o pessoal tinha que controlar a integridade referencial via script php ou muitos nem controlavam dai o banco ficava uma zona, imagina apagar campos que estao relacionados detona tudo

Compartilhar este post


Link para o post
Compartilhar em outros sites

-> Como ficam as outras tabelas?

-> O que vamos precisar alterar?

-> você tem alguma sugestão quanto a tabela tipo?

 

 

Na minha noticia eu preciso ter,

 

Titulo

Conteudo

Foto

Data

Fonte

Tipo (se é destaque ou não)

Setor (qual setor pertence)

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.