Hola ebeltete.
Declarar la relación en la creación de la tabla sería algo como:
Código SQL
[-]
CREATE TABLE DETALLE(
DETALLE_ID INTEGER DEFAULT 1 NOT NULL,
CAMPO1 CHAR(6) NOT NULL,
CAMPO2 VARCHAR(30) NOT NULL,
...
REFMAESTRO INTEGER NOT NULL,
CONSTRAINT DETALLE_PK PRIMARY KEY(DETALLE_ID),
FOREIGN KEY(REFMAESTRO) REFERENCES MAESTRO(MAESTRO_ID)
ON DELETE SET NULL
ON UPDATE CASCADE
);
Estas son las acciones referenciales:
NO ACTION: No hará nada.
CASCADE : Realizará la misma acción en las tablas relacionadas.
SET NULL : Pondrá NULL en las columnas de las tablas relacionadas.
SET DEFAULT : Pondrá el valor definido por defecto en las columnas de las tablas relacionadas.
Ahora desde Delphi, un ejemplo con los componentes IBX.
Teniendo dos
TIBDataSet , llamemoslos: tbMaestro y tbDetalle, los cuáles tienen sus respectivos
TDataSources: dsMaestro y dsDetalle.
Los cambios se harán sobre tbDetalle y son:
A la propiedad
DataSource de tbDetalle tenés que asignarle dsMaestro y en su propiedad
SelectSQL, algo como:
Código SQL
[-]
SELECT * FROM DETALLE
WHERE REFMAESTRO = :MAESTRO_ID
Los nombres de tabla y campos deberás cambiarlos por los que vos pusiste.
Saludos.