Foros del Web » Programando para Internet » PHP »

Relacionar comentarios con noticias

Estas en el tema de Relacionar comentarios con noticias en el foro de PHP en Foros del Web. Hola a todos. Supongamos que tengo un sistema de noticias, o sea, una base de datos que almacena mis noticias. ¿Cómo haría un sistema de ...
  #1 (permalink)  
Antiguo 24/11/2004, 21:01
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Relacionar comentarios con noticias

Hola a todos.

Supongamos que tengo un sistema de noticias, o sea, una base de datos que almacena mis noticias.

¿Cómo haría un sistema de comentarios de tal forma que se pueda comentar cada noticia?...

Si crease una tabla solo para comentarios... tendría que tener un campo identificador que relacionara los comentarios con las noticias ¿cierto?...

¿Qué otra estructura podría aplicar?... un saludo!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #2 (permalink)  
Antiguo 25/11/2004, 06:25
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 20 años, 1 mes
Puntos: 0
La estructura mas correcta, es tener una tabla noticias, identificada cada una de las almacenadas por un campo idNoticia, por ejemplo. Y necesitaras crear otra tabla (comentarios, por ejemplo), con los campos idComentario (identificador, unico, de cada comentario dentro de la tabla), idNoticia (identificador, foreign key, de una noticia q indexara ambas tablas, noticias y comentarios), y el resto de campos q estimes oportunos.

De esta forma, cuando muestres una noticia, mediante su idNoticia, recorres la tabla comentarios, buscando y mostrando todos aquellos que tengan en su campo idNoticia, la misma q la buscada.

"select * from comentarios where idNoticia=".$idNoticia
  #3 (permalink)  
Antiguo 25/11/2004, 20:17
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Ok, ¿Y cómo haría para que mi campo idNoticia de la tabla "comentarios" sea FOREIGN KEY?

¿Al ser FOREIGN KEY automáticamente crea la indexación de ambas tablas?

NOTA: Uso phpMyAdmin.
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #4 (permalink)  
Antiguo 25/11/2004, 20:46
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Ya convertí mis tabla a InnoDB, ¿ahora como hago el enlace FORANEO entre ambas con phpMyAdmin?
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #5 (permalink)  
Antiguo 25/11/2004, 20:53
Avatar de macabro  
Fecha de Ingreso: enero-2003
Ubicación: venus >> ((_\
Mensajes: 254
Antigüedad: 21 años, 3 meses
Puntos: 1
yo lo crearia asi la tablas
Código:
CREATE TABLE `comentarios` (
  `id` int(7) unsigned NOT NULL auto_increment,
  `idcomen` int(10) unsigned NOT NULL default '0',
  `nombre` varchar(40) NOT NULL default '',
  `email` varchar(255) NOT NULL default '',
  `mensaje` longtext NOT NULL,
  `fecha` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;
  #6 (permalink)  
Antiguo 26/11/2004, 03:31
 
Fecha de Ingreso: marzo-2004
Ubicación: Extremadura
Mensajes: 206
Antigüedad: 20 años, 1 mes
Puntos: 0
yo lo haria de la siguiente forma, introduciendo SQL en el phpMyAdmin, si es lo que estas usando:

Código PHP:
create table noticias
(
        
idNoticia    int(5auto_increment primary key not null,
        
campo1        tipoDatos siNotNull,
        
campo2        tipoDatos,
        
etc etc
)TYPE=INNODB;

create table comentarios
(
        
idComentario int(5auto_increment not null,
        
idNoticia    int(5),
        
campo1        tipoDatos siNotNull,
        
campo2        tipoDatos,
        
etc etc
        index 
(idNoticia),
        
foreign key (idNoticiareferences noticias (idNoticiaon delete cascade
)TYPE=INNODB
y ya solo te faltaria definir el resto de campos que contenga la informacion que quieras guardar sobre las noticias o comentarios, con sus caracteristicas: not null, default, etc
  #7 (permalink)  
Antiguo 26/11/2004, 06:20
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
¿Y no es más sencillo en lugar de crear InnoDB y claves foraneas... hacer un simple SELECT de este tipo?:

SELECT * FROM comentarios WHERE idNoticia='$idDElaNOTICIAmostrada'

Me parece mucho más sencillo hacerlo asi... ¿Qué opinan?
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #8 (permalink)  
Antiguo 26/11/2004, 07:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. justamente tal vez para esta aplicación en concreto Takitei no te interese en tu caso respetar la "integridad" a nivel de SQL con las ventajas que ello aporta:

* Evitar borrar registros relacionados de alguna tabla "actidentalmente" ..
* facilitar los borrados/actualizaciones de registros en cadena (los relacionados por esas claves foráneas ..) y sobre todo seguros .. no dependiendo de programación extra (del lenguaje que se use ..)
* Por ende .. facildad para "migrar" sistemas que usen ese tipo de BD y tablas en otros lenguajes ..

No la uses .. pero deberia-mos todos usar ese tipo de tablas (de Msyql . por qué otros motores RDBMS la "integridad referencial" .. las calves foráneas y demás son -obligatorias- en la mayoría de casos).

Tampoco todo "bonito" si se usan tablas Innodb para Mysql .. estás tienen sus limitaciones con respectos a las "MyISAM" y otras de Mysql .. Siempre hay que evaluar el proyecto para decidirse por una u otro tipo.

Un saludo,
  #9 (permalink)  
Antiguo 05/12/2004, 20:48
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Mil gracias por la ayuda a todos. Entonces me decanto por usar MyISAM y no usaré InnoDB.

Gracias nuevamente.
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:58.