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