Grazie ad entrambi per le risposte. Prima di porvi ulteriori domande circa quello che avete detto e come mi avete giustamente richiesto, cercherò di spiegarmi meglio, anche con delle immagini.
Ho cercato di essere meno prolisso possibile.
Il DB serve per la classificazione (sistematica) di alcune famiglie di coleotteri. In biologia, tutti gli esseri viventi vengono classificati con delle categorie "tassonomiche" partendo dalla più generale sino ad arrivare a quella più particolare, ossia la specie ed in certi casi ancora più in basso sino alla sottospecie.
Io ho scelto di partire, non dalla prima categoria tassonomica, ma da una intermedia: la "famiglia" e da questa scendere sino all'ultima, ossia la "sottospecie".
Le categorie che quindi prendo in considerazione sono: la famiglia, la sottofamiglia, la tribù, il genere, il sottogenere, la specie e la sottospecie.
Per fare un es., la nostra specie "uomo" (nome volgare), partendo dalla famiglia, è così classificata:
Famiglia: Hominidae
Sottofamiglia: Homininae
Tribù: Hominini
Genere: Homo
Sottogenere: NON C'E' (credo) - come per molti coleotteri - che poi è il mio problema
Specie: Sapiens
Sottospecie: Sapiens
Ogni categoria ha un suo scopritore che si chiama autore (author nel mio DB).
E dopo questa lezione di "sistematica" spero non troppo noiosa e spero soprattutto chiara, vengo al database. L'ho strutturato con 7 tabelle che corrispondono alle 7 categorie (Family, Subfamily etc.) ed ogni tabella ha, il campo della categoria ad es. Family contenente le varie famiglie oltre al campo author con i nomi di tutti gli studiosi che hanno identificato quella famiglia. Stessa cosa con le altre categorie.
Nel campo delle categorie (Family, Subfamily etc.), il quale è univoco (non ci possono essere due famiglie con lo stesso nome) ho messo la chiave primaria che ho usato come campo di relazione con la tabella sottostante fino alla tabella Subspecies. Naturalmente in ogni tabella (a parte la prima cioè la tabella Family) ho dovuto mettere una chiave esterna (si chiama così?) nella tabella sottostante per collegarle.
Il problema, come avevo cercato di spiegare, sta nel fatto che la tabella "Subgenus", spesso, non ha un sottogenere (come nel caso sopra detto dell'Homo sapiens per cui, in questi casi, si interrompono le relazioni alla tabella "Genus".
L'unica soluzione che mi viene in mente è creare per tutte e 7 le tabelle, un altro campo numerico tipo "IDFamily" - "IDsubfamily" etc. - dare a questi la chiave primaria usandola anche per mettere in relazione le tabelle. In questo modo potrò lasciare in bianco (null) i campi "Subgenus" che non hanno un genere e così facendo potrò mantenere il collegamento tra tutte le tabelle incluse "Genus", "Subgenus", "Species" e "Subspecies". Devo provare però, voi che ne dite ?
Le immagini serviranno a chiarificare quanto sopra detto:
Allegati: