I termini del database relazionale e relazionale descrivono il modo in cui i dati nelle tabelle sono collegati. Un database relazionale è costituito da una serie di due o più tabelle collegate da una chiave specifica. Un database relazionale è diverso dai database non strutturati, comuni nelle iniziative di big data. I database relazionali tendono a richiedere regole rigide su come vengono definite le tabelle e cosa costituisce una relazione valida tra le tabelle.
Tipi di relazioni con il database
Le relazioni ti consentono di descrivere le connessioni tra le tabelle del database in modi potenti. Queste relazioni possono quindi essere sfruttate per eseguire potenti query cross-table, note come JOIN.
Ci sono tre tipi di relazioni di database, ciascuna denominata in base al numero di righe di tabella coinvolte nella relazione. Ciascuno di questi tre tipi di relazione esiste tra due tabelle.
- Le relazioni uno-a-uno si verificano quando ogni voce nella prima tabella ha solo una controparte nella seconda tabella. Le relazioni uno-a-uno vengono utilizzate raramente perché spesso è più efficiente inserire tutte le informazioni in un'unica tabella. Alcuni progettisti di database sfruttano questa relazione creando tabelle che contengono un sottoinsieme dei dati di un' altra tabella.
- Le relazioni uno-a-molti sono il tipo più comune di relazione con il database. Si verificano quando ogni record nella Tabella A corrisponde a uno o più record nella Tabella B, ma ogni record nella Tabella B corrisponde a un solo record nella Tabella A. Ad esempio, la relazione tra una tabella Insegnanti e una tabella Studenti in una scuola elementare database sarebbe probabilmente una relazione uno-a-molti perché ogni studente ha un solo insegnante, ma ogni insegnante ha diversi studenti. Questo design uno a molti aiuta a eliminare i dati duplicati.
- Relazioni molti-a-molti si verificano quando ogni record nella tabella A corrisponde a uno o più record nella tabella B e ogni record nella tabella B corrisponde a uno o più record nella tabella A. Ad esempio, la relazione tra una tabella Insegnanti e una tabella Corsi sarebbe probabilmente molti-a-molti perché ogni insegnante può istruire più di un corso e ogni corso può avere più di un istruttore.
Linea inferiore
Le relazioni autoreferenziali si verificano quando è coinvolta una sola tabella. Un esempio comune è una tabella Impiegati che contiene informazioni sul supervisore di ciascun dipendente. Ogni supervisore è anche un dipendente e ha un supervisore. In questo caso, esiste una relazione uno-a-molti autoreferenziale, poiché ogni dipendente ha un supervisore, ma ogni supervisore può avere più di un dipendente.
Creare relazioni con chiavi esterne
Crea relazioni tra tabelle specificando una chiave esterna. Questa chiave indica al database relazionale come sono correlate le tabelle. In molti casi, una colonna nella tabella A contiene chiavi primarie a cui si fa riferimento dalla tabella B.
Considera l'esempio delle tabelle Insegnanti e Studenti. La tabella Insegnanti contiene un ID, un nome e una colonna del corso:
ID istruttore | Nome_insegnante | Corso |
001 | John Doe | Inglese |
002 | Jane Schmoe | Matematica |
La tabella Studenti include un ID, un nome e una colonna chiave esterna:
IDStudente | Nome_studente | Insegnante_FK |
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
La colonna Teacher_FK nella tabella Studenti fa riferimento al valore della chiave primaria di un istruttore nella tabella Insegnanti. Spesso, i progettisti di database utilizzano PK o FK nel nome della colonna per identificare una chiave primaria o una colonna di chiave esterna.
Queste due tabelle illustrano una relazione uno-a-molti tra insegnanti e studenti.
Relazioni e integrità referenziale
Dopo aver aggiunto una chiave esterna a una tabella, crea un vincolo di database che imponga l'integrità referenziale tra le due tabelle. Questo passaggio garantisce che le relazioni tra le tabelle rimangano coerenti. Quando una tabella ha una chiave esterna per un' altra tabella, l'integrità referenziale richiede che qualsiasi valore di chiave esterna nella tabella B deve fare riferimento a un record esistente nella tabella A.
Implementazione delle relazioni
A seconda del tuo database, implementerai le relazioni tra le tabelle in modi diversi. Microsoft Access fornisce una procedura guidata che consente di collegare le tabelle e anche di imporre l'integrità referenziale.
Se stai scrivendo SQL direttamente, crea prima la tabella Insegnanti, dichiarando una colonna ID come chiave primaria:
CREATE TABLE Insegnanti (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR(100), Course VARCHAR(100));
Quando crei la tabella Studenti, dichiari che la colonna Teacher_FK è una chiave esterna che fa riferimento alla colonna InstructorID nella tabella Teachers:
CREATE TABLE Studenti (StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR(100), Teacher_FK INT, FOREIGN KEY (Teacher_FK) REFERENCES Teachers(InstructorID)));
Utilizzare le relazioni per unire le tabelle
Dopo aver creato una o più relazioni nel database, sfrutta la loro potenza utilizzando le query SQL JOIN per combinare informazioni da più tabelle. Il tipo più comune di join è SQL INNER JOIN, che è un semplice join. Questo tipo di join restituisce tutti i record che soddisfano la condizione di join da una o più tabelle.
Ad esempio, questa condizione JOIN restituisce Nome_Studente, Nome_Insegnante e Corso, dove la chiave esterna nella tabella Studenti corrisponde alla chiave primaria nella tabella Insegnanti:
SELECT Students. Student_Name, Teachers. Teacher_Name, Teachers. Course
DA Studenti
INNER JOIN TeachersON Students. Teacher_FK=Teachers. InstructorID;
Questa istruzione produce una tabella simile a questa:
Nome_studente | Nome_insegnante | Corso |
Lowell Smith | John Doe | Inglese |
Brian Short | John Doe | Inglese |
Corky Mendez | Jane Schmoe | Matematica |
Monica Jones | John Doe | Inglese |