Skip to main content

Introduzione alle relazioni del database

9 Come creare il database Fatture in Access 2007 e 2010.Introduzione alle query del database (Potrebbe 2024)

9 Come creare il database Fatture in Access 2007 e 2010.Introduzione alle query del database (Potrebbe 2024)
Anonim

Il termine di database "relazionale" o "relazione" descrive il modo in cui i dati nelle tabelle sono collegati.

I nuovi arrivati ​​nel mondo dei database spesso hanno difficoltà a vedere la differenza tra un database e un foglio di calcolo. Vedono tabelle di dati e riconoscono che i database consentono di organizzare e interrogare i dati in modi nuovi, ma non riescono a cogliere il significato del relazioni tra i dati che dà il nome alla tecnologia di database relazionale.

Le relazioni consentono di descrivere le connessioni tra diverse tabelle del database in modo potente. Queste relazioni possono quindi essere sfruttate per eseguire potenti query tra tabelle, note come join.

Tipi di relazioni tra database

Esistono tre diversi tipi di relazioni tra database, ciascuna denominata in base al numero di righe della tabella che possono essere coinvolte nella relazione. Ciascuno di questi tre tipi di relazione esiste tra due tabelle.

  • Relazioni uno-a-uno si verificano quando ogni voce nella prima tabella ha una, e solo una, controparte nella seconda tabella. Le relazioni uno-a-uno sono usate raramente perché spesso è più efficiente mettere semplicemente tutte le informazioni in una singola tabella. Alcuni progettisti di database si avvalgono di questa relazione creando tabelle che contengono un sottoinsieme di dati da un'altra tabella.
  • Relazioni uno-a-molti sono il tipo più comune di relazione tra 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 il database sarebbe probabilmente una relazione uno-a-molti, perché ogni studente ha un solo insegnante, ma ogni insegnante ha più studenti. Questo design one-to-many aiuta ad 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 potrebbe essere molti- a molti perché ogni insegnante può istruire più di un corso e ogni corso può avere più di un istruttore.

Relazioni autoreferenziali: un caso speciale

Le relazioni autoreferenziali si verificano quando è coinvolta solo una tabella. Un esempio comune è una tabella Dipendenti che contiene informazioni sul supervisore di ciascun dipendente. Ogni supervisore è anche un dipendente e ha il proprio supervisore. In questo caso, esiste una relazione autoreferenziale uno-a-molti, poiché ciascun dipendente ha un supervisore, ma ciascun supervisore può avere più di un dipendente.

Creazione di relazioni con chiavi esterne

È possibile creare 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 fa riferimento la tabella B.

Considera di nuovo l'esempio delle tabelle Insegnanti e Studenti. La tabella Insegnanti contiene solo un ID, un nome e una colonna del corso:

Insegnanti
InstructorIDNome dell'insegnanteCorso
001John DoeInglese
002Jane SchmoeMatematica

La tabella Studenti include un ID, un nome e una colonna di chiave esterna:

Studenti
StudentIDNome dello studenteTeacher_FK
0200Lowell Smith001
0201Brian Short001
0202Corky Mendez002
0203Monica Jones001

La colonna Teacher_FK nella tabella Studenti fa riferimento al valore chiave principale di un istruttore nella tabella Insegnanti.

Spesso i progettisti di database utilizzano "PK" o "FK" nel nome della colonna per identificare facilmente una chiave primaria o una colonna di chiave esterna.

Si noti che queste due tabelle illustrano una relazione uno-a-molti tra gli insegnanti e gli studenti.

Relazioni e integrità referenziale

Dopo aver aggiunto una chiave esterna a una tabella, è possibile creare un vincolo del database che impone l'integrità referenziale tra le due tabelle. Ciò garantisce che le relazioni tra i tavoli rimangano coerenti. Quando una tabella ha una chiave esterna in un'altra tabella, il concetto di integrità referenziale afferma 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 database, si implementano le relazioni tra tabelle in diversi modi. Microsoft Access fornisce una procedura guidata che consente facilmente di collegare tabelle e anche di imporre l'integrità referenziale.

Se scrivi direttamente SQL, devi prima creare la tabella Insegnanti, dichiarando che una colonna ID è la chiave primaria:

CREATE TABLE Insegnanti (

InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR (100), Corso VARCHAR (100));

Quando crei la tabella Studenti, dichiari che la colonna Teacher_FK è una chiave esterna che fa riferimento alla colonna InstructorID nella tabella Insegnanti:

CREA TABELLA Studenti ( StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR (100), Teacher_FK INT, FOREIGN KEY (Teacher_FK) REFERENCES Insegnanti (InstructorID)));

Utilizzo delle relazioni per unire le tabelle

Dopo aver creato una o più relazioni nel database, è possibile sfruttare la loro potenza utilizzando le query SQL JOIN per combinare le informazioni da più tabelle. Il tipo più comune di join è SQL INNER JOIN o un join semplice. Questo tipo di join restituisce tutti i record che soddisfano la condizione di join da più tabelle.Ad esempio, questa condizione JOIN restituirà lo Student_Name, Teacher_Name e Course in cui la chiave esterna nella tabella Studenti corrisponde alla chiave primaria nella tabella Insegnanti:

SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.CourseDagli studentiINNER JOIN InsegnantiON Students.Teacher_FK = Teachers.InstructorID;

Questa affermazione produce una tabella simile a questa:

Tabella restituita dall'istruzione SQL Join

Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish