Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dilema entidad relacion (https://www.clubdelphi.com/foros/showthread.php?t=75278)

JAI_ME 10-08-2011 17:06:33

Dilema entidad relacion
 
Buenos días, tengo las siguientes tablas pais, departamento, municipio, noticias con la siguiente estructura.

pais
--------
idpais
nombre

departamento
---------------
iddepartamento
idpais
nombre

municipio
-----------
idmunicipio
iddepartamento
nombre

la idea es que los usuarios puedan crear noticias en cada cada nivel (pais, departamento, municipio) por ende la estructura de la tabla noticia es la siguiente

noticia
---------
idnoticia
titulo
texto


la cuestion es que no se como relacionar la tabla noticia con las tres tablas antes mencionadas.

Sera crear un campo tipo que me diga a que tabla pertenece la noticia, y un campo idregistro donde guarde el codigo de la tabla donde se guardo la noticia.

o que me recomiendan, mil gracias.

maeyanes 10-08-2011 17:14:39

Hola...

Yo lo haría:

Código:

noticia
----------
idnoticia
idmunicipio <--- desde el municipio se puede saber el departamento y el pais
nivel <--- aquí indico el nivel de la noticia
titulo
texto


Saludos...

oscarac 10-08-2011 17:25:58

iba a sugerir lo mismo, pero se me adelantaron :D

JAI_ME 10-08-2011 17:53:47

si estamos de acuerdo todos, pero el problema es que si la persona esta en el departamento y desea crear la noticia en ese nivel, sin tener la necesidad de llegar al municipio, que codigo guardo en el campo idmunicipio ?

o quizas el usuario va a crear una noticia en el nivel pais, sin necesidad de entrar al departamento ? que hago en ese caso.


lo que ustedes me dicen me funciona si el usuario siempre crea la noticia en el nivel municipio.

gracias.

oscarac 10-08-2011 18:04:13

mmm entonces se me ocurre una solucion...:rolleyes:

agrega un campo adicional a noticia para que identifique de donde viene si es Pais, departamento o municipio y un campos donde guardes la informacion del Pais, departamento o municipio

maeyanes 10-08-2011 18:12:50

Hola...

Si la noticia es del nivel país, en municipio guardas el primero que pertenezca a ese país, y lo mismo para el departamento. Y a la hora de hacer una consulta para las noticias de X país solo haces algo como:

Código SQL [-]
/* Mostrar noticias de X pais */
select p.nombre pais, n.titulo, n.texto from noticia n
join municipio m on m.idmunicipio = n.idmunicipio
join departamento d on d.iddepartamento = m.iddepartamento
join pais p on p.idpais = d.idpais
where n.nivel = 0 and /* pensando que 0 = pais, 1 = depto, 2 = municipio */
p.nombre = 'X'

/* Mostrar noticias de X departamento */
select d.nombre departamento, n.titulo, n.texto from noticia n
join municipio m on m.idmunicipio = n.idmunicipio
join departamento d on d.iddepartamento = m.iddepartamento
where n.nivel = 1 and
d.nombre = 'X'


Saludos...

JAI_ME 10-08-2011 18:12:53

el campo adicional lo puedo llamar idrelacion, y agrego un tipo para saber de que nivel viene ?

Es correcto ?

oscarac 10-08-2011 18:16:03

Cita:

Empezado por JAI_ME (Mensaje 409057)
el campo adicional lo puedo llamar idrelacion, y agrego un tipo para saber de que nivel viene ?

Es correcto ?

asi es...... siiiiii:D

JAI_ME 10-08-2011 19:00:37

muchísimas gracias me imagine que esa era la solución, pero pensé que había otra forma de hacerlo, de nuevo mil gracias.


La franja horaria es GMT +2. Ahora son las 23:24:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi