Per come la vedo io esiste una sola tabella "PERSONE" (tutti noi abbiamo un padre e una madre...tranne adamo ed eva forse) ed un'altra tabella per rappresentare le relazioni di PARENTELA:
codice:
CREATE TABLE persona (
idpersona INT(11) NOT NULL auto_increment,
nome VARCHAR(64) NOT NULL,
cognome VARCHAR(64) NOT NULL,
codicefiscale VARCHAR(15) NOT NULL,
sesso ENUM('M', 'F') NOT NULL,
...,
PRIMARY KEY idpersona,
UNIQUE codicefiscale
);
CREATE TABLE parentela (
idpersona INT(11),
idgenitore INT(11),
PRIMARY KEY (idpersona, idgenitore),
FOREIGN KEY idpersona REFERENCES persona(idpersona),
FOREIGN KEY idgenitore REFERENCES persona(idpersona)
);
poi potresti aggiungere una CHECK su "idgenitore" della tabella "parentela" per assicurarti che "idgenitore" ed "idpersona" nella tabella "parentela" siano diversi.
E se proprio vogliamo puoi creare un ulteriore che ad ogni inserimento nella tabella parentela verifica che non esista già un "idgenitore" dello stesso sesso di quello che stai inserendo (non puoi avere due genitori maschi o due femmine).
Spero di aver centrato il tuo problema