Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/05/2006, 18:08
Avatar de Linterns
Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 5 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
** ***