Ver Mensaje Individual
  #2  
Antiguo 21-07-2007
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Reputación: 22
TJose Va por buen camino
Código SQL [-]
create table Tabla1(
   Id dId,
   Apellido dApellido,
   ...   
   IdEtapa dId,
   ...
);

create table Etapas(
   Id dId,
   Etapa dTexto30
);

...

alter table Tabla1 add constraint pk_Tabla1 primary key (Id);
alter table Etapas add constraint pk_Etapas primary key (Id);

...

alter table Tabla1 add constraint fk_Tabla1_01 foreign key (IdEtapa) references Etapas(Id);

en la última sentencia
Código SQL [-]
alter table Tabla1 add constraint fk_Tabla1_01 foreign key (IdEtapa) references Etapas(Id);
obliga a que cuando se setee un valor a idetapa en la tabla Tabla1, este valor exista en la tabla Etapas (campo id)
se podrían según el caso y las necesidades aplicar variaciones, como por ejemplo que cuando se borre un registro de Etapas, borre todos los registros de Tabla1 donde el IdEtapa corresponde a Id de la tabla Etapas. Esto se denomina borrado en cascada. También se puede definir una actualización en cascada

También a través de dominios puede implementarse algún tipo de validación y mantención de la integridad de los datos. Por ejemplo:
Código SQL [-]
create domain dSexo as
char(1)
not null
check (value in ('M','F'));

Saludos
TJose
Responder Con Cita