Ir para conteúdo

Arquivado

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

patricias

na modelagem do Banco

Recommended Posts

Fabyo, conforme topico anterior...

 

 

 

Meu banco, portal, tem as tabelas, noticias/imagem/setor/categoria/usuario (essa ultima não é de muita importancia). qual o objetivo?

ter um sistema de noticia, onde eu possa cadastrar a noticia e dizer a que setor pertence, e qual sua categoria, ou seja, na pagina principal, terei os campos destaque (para um quadro maior) e os destaques menores, que vai ser uma tabela com 4 celulas...ok?

No momento em que eu clicar em uma das noticias, eu vou cair na pagina do setor responsavel por essa noticia, fui clara?

 

Fiz o banco, com as tabelas, fiz um form, porem, nao to conseguindo inserir os dados corretamente, a insercao vai somente para a tabela noticia, nao to sabendo como sair disso....

 

help-me please!! http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif http://forum.imasters.com.br/public/style_emoticons/default/upset.gif :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom pra começar ai no seu caso ja cabe uma tabela de junções e um FOREIGN KEY

 

dai criaremos mais uma tabela chamada noticias_setores

 

com id_noticia e id_setor

 

noticias_setores

id_noticia -

id_setor -

 

estrutura

CREATE TABLE noticias_setores (
id_noticia int(11) unsigned NOT NULL,
id_setor int(11) unsigned NOT NULL,
PRIMARY KEY  (id_noticia, id_setor)
) TYPE = innodb;

 

os 2 ids chaves primarias

 

que mais vai ter na tabela noticias?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom,

nas tabelas eu tenho os seguintes campos:

 

 

Noticias

not_id

not_titulo

not_conteudo

not_data

not_fonte

not_status

not_img_id

not_setor_id

not_cat_id

not_usuario_id

 

categoria

cat_id

cat_destaq

cat_quad1

cat_quad2

cat_quad3

cat_quad4

 

 

imagem

id

imagem

 

setor

set_id

set_adm

set_ci

set_edu

set_espl

set_fin

set_gp

set_gm

set_ma

set_obras

set_plan

set_ps

set_saude

set_tur

 

 

usuarios

id

nome

email

senha

data

 

 

O meu formulario esta assim:

 

<?php require_once('../Connections/ConnNoticias.php'); ?>

<?php

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")

{

$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

 

switch ($theType) {

case "text":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "long":

case "int":

$theValue = ($theValue != "") ? intval($theValue) : "NULL";

break;

case "double":

$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";

break;

case "date":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "defined":

$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;

break;

}

return $theValue;

}

 

$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];

if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {

$editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];

}

 

if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {

$insertSQL = sprintf("INSERT INTO noticias (not_titulo, not_conteudo, not_data, not_img_id, not_cat_id, not_set_id) VALUES (%s, %s, %s, %s, %s, %s)",

GetSQLValueString($HTTP_POST_VARS['not_titulo'], "text"),

GetSQLValueString($HTTP_POST_VARS['not_conteudo'], "text"),

GetSQLValueString($HTTP_POST_VARS['not_data'], "date"),

GetSQLValueString($HTTP_POST_VARS['not_img_id'], "int"),

GetSQLValueString($HTTP_POST_VARS['not_cat_id'], "int"),

GetSQLValueString($HTTP_POST_VARS['not_set_id'], "int"));

 

mysql_select_db($database_ConnNoticias, $ConnNoticias);

$Result1 = mysql_query($insertSQL, $ConnNoticias) or die(mysql_error());

 

$insertGoTo = "sucesso.php";

if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {

$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";

$insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];

}

header(sprintf("Location: %s", $insertGoTo));

}

?>

<form method="post" name="form1" action="<?php echo $editFormAction; ?>">

<table border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">

<tr>

<td><table align="center" cellpadding="1">

<tr valign="baseline" bgcolor="#FFFFFF">

<td align="right" nowrap><font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Título:</strong></font></td>

<td>

<input type="text" name="not_titulo" value="" size="32"></td>

</tr>

<tr valign="baseline" bgcolor="#FFFFFF">

<td align="right" nowrap><font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Conteúdo:</strong></font></td>

<td rowspan="2">

<textarea name="not_conteudo" cols="32" rows="10"></textarea></td>

</tr>

<tr valign="baseline" bgcolor="#FFFFFF">

<td align="right" nowrap><font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif"> </font></td>

</tr>

<tr valign="baseline" bgcolor="#FFFFFF">

<td align="right" nowrap><font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Data:</strong></font></td>

<td>

<input type="text" name="not_data" value="<?php echo date('d/m/Y'); ?>" size="32"></td>

</tr>

<tr valign="baseline" bgcolor="#FFFFFF">

<td align="right" nowrap><font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Image:</strong></font></td>

<td>

<input type="file" name="not_img_id" value="" size="32"></td>

</tr>

<tr valign="baseline" bgcolor="#FFFFFF">

<td align="right" nowrap><font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Categoria</strong></font></td>

<td>

<select name="not_cat_id" >

<option value="cat_destaq">Destaque</option>

<option value="cat_quad1">quadro1</option>

<option value="cat_quad2">quadro2</option>

<option value="cat_quad3">quadro3</option>

</select></td>

</tr>

<tr valign="baseline" bgcolor="#FFFFFF">

<td align="right" nowrap><font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Setor:</strong></font></td>

<td>

<select name="not_id_setor" >

<option value="set_adm">Administração</option>

<option value="set_ci">Controle_Interno</option>

<option value="set_edu">Educação</option>

<option value="set_espl">Esporte_Lazer</option>

<option value="set_fin">Finanças</option>

<option value="set_gp">Gabinete_do_Prefeito</option>

<option value="set_gm">Guarda_Municipal</option>

<option value="set_ma">Meio_Ambiente</option>

<option value="set_obras">Obras</option>

<option value="set_plan">Planejamento</option>

<option value="set_ps">Promoção_Social</option>

<option value="set_saude">Saúde</option>

<option value="set_tur">Turísmo </option>

</select></td>

</tr>

<tr valign="baseline" bgcolor="#FFFFFF">

<td align="right" nowrap><font color="#006699" size="2" face="Verdana, Arial, Helvetica, sans-serif"> </font></td>

<td>

<input name="submit" type="submit" value="Inserir registro"></td>

</tr>

</table></td>

</tr>

</table>

<input type="hidden" name="MM_insert" value="form1">

</form>

<p> </p>

:rolleyes: http://forum.imasters.com.br/public/style_emoticons/default/upset.gif :unsure: :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

da uma olhada como ta ficando e eu apontei umas duvidas e uns erros

 

noticias

id_noticia

titulo

conteudo

data

fonte

status

fk_imagem

fk_categoria

fk_usuario

 

categoria

id_categoria

destaque

erro:

cat_quad1

cat_quad2

cat_quad3

cat_quad4

 

 

imagem

id_imagem

imagem

 

setores

id_setor

adm ?

ci ?

edu ?

espl ?

fin ?

gp ?

gm ?

ma ?

obras

plan ?

ps ?

saude ?

tur ?

 

como eu falei no outro topico nao precisa abreviar tanto só quem faz entende esse banco

exemplo o que é tur? turma, turno ? entendeu ?, nao fica claro

Compartilhar este post


Link para o post
Compartilhar em outros sites

da uma olhada como ta ficando e eu apontei umas duvidas e uns erros

noticias

id_noticia

titulo

conteudo

data

fonte

status

fk_imagem

fk_categoria

fk_usuario

 

categoria

id_categoria

destaque

Aqui entao posso colocar oq? ou não preciso de outra categoria?

seria quadro1 / quadro2 / quadro3 e quadro4.

erro:

cat_quad1

cat_quad2

cat_quad3

cat_quad4

 

OK

imagem

id_imagem

imagem

 

correções em vermelho

 

setores

id_setor

adm ? Administração

ci ? Controle Interno

edu ? Educação

espl ? Esporte e Lazer

fin ? Finanças

gp ? Gabinete do Prefeito

gm ? Guarda Municipal

ma ? Meio Ambiente

obras Obras

plan ? Planejamento

ps ? Promoção Social

saude ? Saúde

tur ? Turismo

Compartilhar este post


Link para o post
Compartilhar em outros sites

sobre a parte em vermelho o que seria esses quadros no sistema?

 

porque um banco bem modelado você nao pode limitar tipo quadro1, quadro2 etc... fazendo assim você ta errando, só me explica o que seria esses quadros

 

e sobre o setor entao é

 

setores

id_setor

setor

 

o resto é tudo conteudo do setor, dai o combo do seu formulario vai ser populado por ele

Compartilhar este post


Link para o post
Compartilhar em outros sites

sobre a parte em vermelho o que seria esses quadros no sistema?porque um banco bem modelado você nao pode limitar tipo quadro1, quadro2 etc... fazendo assim você ta errando, só me explica o que seria esses quadrose sobre o setor entao ésetoresid_setorsetoro resto é tudo conteudo do setor, dai o combo do seu formulario vai ser populado por ele

Os quadros, ou outro nome que possamos dar, seriam os destaques menores, tipo, assim:

<link href="/classic.css" rel="stylesheet" type="text/css"> <table width="480" border="0" cellpadding="0" cellspacing="0" class="tab1"> <tr> <td align="center" valign="top" class="tab1"> <table width="460" border="0" cellpadding="0" cellspacing="0" class="tab1"> <tr class="tab1"> <td colspan="2" class="tab1"><img src="/paginas/imagens/foto_principal.jpg" width="215" height="161" border="0"></td> <td colspan="2" class="tab1"> <table width="215" cellspacing="0" cellpadding="0"> <tr> <th class="tab1"> </th> </tr> <tr> <td class="tab1"><a href="http://">Pensando no desenvolvimento de nossa cidade a prefeitura com muito esforço, vem realizando obras de recuperação e conservação na estrada, atendendo as necessidades e reivindicações da população paratiense e incrementando o turismo.</a></td> </tr> <tr> <td>data: agosto/2005</td> </tr> </table> </td> </tr> <tr class="tab1odd"> <td width="115" class="tab1odd"><img src="/paginas/imagens/foto_1.jpg" width="110" height="82" border="0"></td> <td width="115" class="tab1odd"> <p>Retirada das barracas do estacionamento<br> <a href="http://">leia mais...</a></p> </td> <td width="115" class="tab1odd"><img src="/paginas/imagens/foto_2.jpg" width="110" height="82" border="0"></td> <td width="115" class="tab1odd">Lançamento da Pedra Fundamental do Jardim Botânico de <br> <a href="http://">leia mais...</a></td> </tr> <tr class="tab1"> <td width="115" class="tab1"><img src="/paginas/imagens/foto_3.jpg" width="110" height="82" border="0"></td> <td width="115" class="tab1"> Mais um compro-misso de campanha da prefeitura! <br> <a href="http://">leia mais...</a></td> <td width="115" class="tab1"><img src="/paginas/imagens/foto_4.jpg" width="110" height="82" border="0"></td> <td width="115" class="tab1">Saúde: Fachada Do Hospital, PSF e Centro Cirúrgico <br> <a href="http://">leia mais...</a></td> </tr> <tr class="tab1odd"> <td colspan="4" class="tab1odd"> <ul> <li>Mais Notícias</li> </ul></td> </tr> </table> </tr></table>

a celula maior da tabela seria chamada de Destaque e as menores um outro nome qualquer, capice?

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao mas se é destaque porque ta na tabela categoria?

Foi o nome que me foi passado, na verdade me entregaram a criança e disseram, se vira.... cuide!! rs rs e cá estou...apenas trocando fraldas... :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, mas entao vamos dar uma faxina geral e alem de trocar as fraudas da um banho nos bebes = ) ,ta entendendo ate aqui ?

To sim, ja inclusive fiz a faxina, vou começar as tabelas do zero, ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, tenta seguir um padrao e dar uns nomes mais completos

por padrao eu uso nomes tudo em minusculo sem acentos espaços e se precisar eu uso _ mas isso é uma opção minha, você pode escolher outro jeito, mas pelo menos os nomes deixe mais simples

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, tenta seguir um padrao e dar uns nomes mais completos

por padrao eu uso nomes tudo em minusculo sem acentos espaços e se precisar eu uso _ mas isso é uma opção minha, você pode escolher outro jeito, mas pelo menos os nomes deixe mais simples

Mas por ex. na tabela setor, eu preciso colocar o nome dos setores? (sao 13 no total)

 

as tabelas seriam:

 

CREATE TABLE `noticias` (

`id_noticias` int(11) NOT NULL auto_increment,

`titulo` text NOT NULL,

`conteudo` longtext NOT NULL,

`data` timestamp(14) NOT NULL,

`status` char(3) NOT NULL default '',

`fonte` text NOT NULL,

`fk_imagem` int(11) NOT NULL default '0',

`fk_usuario` int(11) NOT NULL default '0',

`fk_categoria` int(11) NOT NULL default '0',

`fk_setor` int(11) NOT NULL default '0',

PRIMARY KEY (`id_noticias`)

) TYPE=MyISAM COMMENT='Notícias do site' AUTO_INCREMENT=3 ;

 

 

to no caminho certo?

 

CREATE TABLE `imagem` (

`id` int(11) NOT NULL auto_increment,

`imagem` blob NOT NULL,

PRIMARY KEY (`id`)

) TYPE=MyISAM AUTO_INCREMENT=6 ;

 

 

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 ;

 

CREATE TABLE `setores` (

`id_setores` int(10) NOT NULL auto_increment,

`setores` varchar(13) default NULL,

PRIMARY KEY (`id_setores`),

UNIQUE KEY `id` (`id_setores`)

) TYPE=MyISAM AUTO_INCREMENT=1 ;

 

 

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;

 

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;

 

CREATE TABLE `noticias_setores` (

`id_noticia` int(11) unsigned NOT NULL default '0',

`id_setores` int(11) unsigned NOT NULL default '0',

PRIMARY KEY (`id_noticia`,`id_setores`)

) TYPE=MyISAM;

 

 

 

É isso??

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao os setores sao conteudo da tabela, onde vai ser gravado e nao nomes de campos

 

* umas observação porque o titulo precisa de um campo text ? nao é apenas um titulo normal tipo o titulo do topico ?

 

* imagem blob, você nao prefere salvar a imagem numa pasta e gravar o link no banco?

 

* data você pode usar DATE melhor para manipular

* status de que ?

* conteudo longtext porque tudo isso ?

* tabela tipo errada, mas vamos por partes depois nos chega nela

* UNIQUE KEY id (id_setores) nao precisa, o que poderia é campo unico no setor e nao no id_setor

* noticias_tipo errado tbm depois nos chega nela

* noticias_imagem errado tbm depois nos chega nela

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao os setores sao conteudo da tabela, onde vai ser gravado e nao nomes de camposumas observação porque o titulo precisa de um campo text ? nao é apenas um titulo normal tipo o titulo do topico ?

É, o que seria entao?fiz em cima do curso do imaster (cd), devo mudar para qual?

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao os setores sao conteudo da tabela, onde vai ser gravado e nao nomes de campos

* umas observação porque o titulo precisa de um campo text ? nao é apenas um titulo normal tipo o titulo do topico ? Como falei , eu me baseei no curso do imasters.

 

* imagem blob, você nao prefere salvar a imagem numa pasta e gravar o link no banco? Com certeza, gostaria que fosse assim.

 

* data você pode usar DATE melhor para manipular É só alterar??

* status de que ? Esse status, no exemplo do imasters, seria pra dizer se a msg vai ficar ON ou OFF

 

* conteudo longtext porque tudo isso ? Aqui seria o conteudo da mensagem, nao seria um longtext? ou qual melhor campo utilizavel?

 

* tabela tipo errada, mas vamos por partes depois nos chega nela Errada em que sentido?

 

* UNIQUE KEY id (id_setores) nao precisa, o que poderia é campo unico no setor e nao no id_setor Não entendi!

 

* noticias_tipo errado tbm depois nos chega nela OK! vou aguardar

* noticias_imagem errado tbm depois nos chega nela OK! vou aguardar

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao o status você pode criar um campo enum D, L tipo desligado e ligado

 

conteudo pode usar text mesmo

 

tabela tipo ta errado a modelagem

 

UNIQUE KEY é para fazer que um campo seja unico e uma chave primaria ja tem esse atributo sendo auto incremento

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao o status você pode criar um campo enum D, L tipo desligado e ligadoconteudo pode usar text mesmotabela tipo ta errado a modelagemUNIQUE KEY é para fazer que um campo seja unico e uma chave primaria ja tem esse atributo sendo auto incremento

Entendi, o q mais precisa ser feito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

×

Informação importante

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