Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

ayuda con diseño: comunidades y paises

Estas en el tema de ayuda con diseño: comunidades y paises en el foro de Bases de Datos General en Foros del Web. buenas, hace tiempo que pregunté lo mismo pero me quedé sin solución, a ver si me podeis ayudar. Tengo un calendario de eventos deportivos. De ...
  #1 (permalink)  
Antiguo 04/05/2006, 16:31
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Antigüedad: 20 años, 2 meses
Puntos: 0
ayuda con diseño: comunidades y paises

buenas, hace tiempo que pregunté lo mismo pero me quedé sin solución, a ver si me podeis ayudar.

Tengo un calendario de eventos deportivos. De cada evento, además de otros datos, quiero almacenar donde se celebra, la localización: si el evento es internacional solo quiero saber el pais donde se celebra. Si el evento es en España quiero almacenar además la comunidad autónoma.

Lo unico que se me ocurre es añadir en la tabla de eventos un campo pais y otro comunidad:

TAB.EVENTO
------------
id_evento
nombre_even
id_pais
id_comunidad


TAB.PAIS
---------
id_pais
nombre_pais


TAB.COMUNIDAD
----------------
id_comunidad
nombre_com

Pero creo que no es la mejor solucion porque no se relaciona en ninguna parte las comunidades con los paises, no se refleja que las comunidades solo pueden ser de España. ¿Que otra forma de hacerlo se os ocurre?
  #2 (permalink)  
Antiguo 05/05/2006, 18:08
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
No se que Base de Datos estas ocupando asi que te lo explicare y luego te dejare la sintaxis para Oracle.... adecuala a tus necesidades de la BBDD que ocupas.

Creas una tabla PAIS con su ID, luego la tabla COMUNIDAD y a ella le das como llave Foranea el ID de pais y como llave primaria un identificador mas la llave foranea por lo que te quedara ID de la tabla mas ID de pais.

y para los EVENTOS simplemente pones la llave primaria de COMUNIDAD como llave foranea (recuerda que ahi ya va relacionado el pais) y creas un identificador.

Te quedaria algo mas o menos asi:

Código:
create table pais (
   pai_codigo           VARCHAR(3)                      not null,
   pai_nombre           VARCHAR2(100),
   constraint PK_PAIS primary key (pai_codigo)
);

create table comunidad (
   com_pais             VARCHAR(3)                      not null,
   com_id               VARCHAR2(5)                     not null,
   com_nombre           VARCHAR2(100),
   constraint PK_COMUNIDAD primary key (com_pais, com_id),
   constraint FK_COMUNIDA_REFERENCE_PAIS foreign key (com_pais)
         references pais (pai_codigo)
);

create table evento (
   eve_id               VARCHAR2(5)                     not null,
   eve_pais             VARCHAR(3),
   eve_comunidad        VARCHAR2(5),
   constraint PK_EVENTO primary key (eve_id),
   constraint FK_EVENTO_REFERENCE_COMUNIDA foreign key (eve_pais, eve_comunidad)
         references comunidad (com_pais, com_id)
)
Espero te sirva
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
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 15:45.