La cardinalità di una join tra due tabelle è la relazione numerica tra le righe di una tabella e le righe dell’altra. Le cardinalità comuni includono uno-a-uno, uno-a-molti e molti-a-molti.
Per esempio, considerate un database di cartelle cliniche elettroniche. Un tale database potrebbe contenere tabelle come le seguenti:
- Una tabella
doctor
con informazioni sui medici. - Una tabella
patient
per i soggetti medici in trattamento. - Una tabella
encounter
con una voce per ogni visita in ospedale.
Esistono relazioni naturali tra queste entità, come un incontro che coinvolge molti medici. C’è una relazione molti-a-molti tra i record in doctor
e i record in patient
perché i medici hanno molti pazienti e i pazienti possono vedere molti medici. C’è una relazione uno-a-molti tra i record in patient
e i record in encounter
perché i pazienti possono avere molti incontri e ogni incontro coinvolge un solo paziente.
Una relazione “uno-a-uno” è per lo più usata per dividere una tabella in due per fornire informazioni in modo conciso e renderle più comprensibili. Nell’esempio dell’ospedale, una tale relazione potrebbe essere usata per tenere separate le informazioni professionali uniche dei medici dai dettagli amministrativi.
Nella modellazione dei dati, le collezioni di elementi di dati sono raggruppate in “tabelle di dati” che contengono gruppi di nomi di campi di dati chiamati “attributi del database”. Le tabelle sono collegate da “campi chiave”. Una “chiave primaria” assegna un campo alla sua “tabella di ordine speciale”. Per esempio, il campo “Doctor Last Name” potrebbe essere assegnato come chiave primaria della tabella Doctor con tutte le persone che hanno lo stesso cognome organizzate alfabeticamente secondo le prime tre lettere del loro nome. Una tabella può anche avere una chiave esterna che indica che il campo è collegato alla chiave primaria di un’altra tabella.
Un modello di dati complesso può coinvolgere centinaia di tabelle correlate. L’informatico Edgar F. Codd ha creato un metodo sistematico per scomporre e organizzare i database relazionali. I passi di Codd per organizzare le tabelle del database e le loro chiavi sono chiamati normalizzazione del database, che evita certi errori nascosti di progettazione del database (anomalie di cancellazione o di aggiornamento). Nella vita reale il processo di normalizzazione del database finisce per rompere le tabelle in un numero maggiore di tabelle più piccole.
Nel mondo reale, la modellazione dei dati è critica perché quando i dati diventano voluminosi, le tabelle collegate da chiavi devono essere usate per accelerare il recupero programmato dei dati. Se un modello di dati è realizzato male, anche un sistema di applicazioni informatiche con solo un milione di record darà agli utenti finali ritardi di risposta inaccettabili. Per questo motivo, la modellazione dei dati è una chiave di volta nelle competenze necessarie a uno sviluppatore di software moderno.