Le chiavi straniere sono così preziose e rinomate che sono classificate come livello 3 nelle fasi di normalizzazione del database. In 3NF, tutti gli attributi (colonne) in una tabella dipendono direttamente dalla chiave primaria di quella tabella e non ci sono dipendenze transitive.
L'introduzione delle chiavi estere può aiutare a mantenere i requisiti di 3NF assicurando che i valori in una colonna di chiave esterna esistano solo nella chiave primaria di riferimento.
L'obiettivo di questo tutorial è mostrarti come creare e utilizzare una chiave straniera in un database Oracle. Questo tutorial è orientato verso i principianti e non copriamo come implementare le chiavi estere nelle normalizzazioni del database.
Crea una dichiarazione chiave estera
Possiamo creare una chiave esterna durante la creazione di tabelle usando la dichiarazione della tabella Crea e la clausola chiave estera.
Possiamo esprimere la sintassi come mostrato nel seguente:
Crea table table_name (
Tipo di dati column1,
Tipo di dati colonnello2,
..
Chiave straniera (colonna1, colonna2,…)
Riferimenti Altro_table_name (Altro_column1, altro_column2,…)
);
Il table_name si riferisce alla tabella che si desidera creare nel database. Definiamo anche le colonne della tabella, il loro tipo di dati corrispondente e vari vincoli.
Infine, chiamiamo la clausola chiave estera per specificare la colonna o le colonne che desideriamo compensare i riferimenti a chiave straniera.
Per illustrare al meglio l'uso di chiavi straniere, prendiamo due tabelle come mostrato nelle seguenti dichiarazioni:
Crea database di tabelle
(
numero ID generato per impostazione predefinita su null come identità,
Nome varchar2 (50) non null,
Numero Default_Port,
ultimo_version varchar2 (20) non null,
digitare varchar2 (20) non null,
lingua varchar2 (20) non null,
Chiave estera (ID)
Riferimenti size_stats (database_id)
);
Tavolo 2:
Crea table size_stats (
Database_id Numero chiave primaria,
Numero size_on_disk non null,
Numero size_compresso
);
Nella prima clausola, creiamo una tabella per archiviare le informazioni sul database come il nome del database, la porta predefinita, la versione più recente del database, il tipo di database e la lingua.
Inoltre, includiamo la clausola chiave estera che definisce una nuova chiave esterna sulla colonna ID della tabella del database. Questa chiave esterna fa riferimento al database_id nella tabella size_stats. Pertanto, è bene assicurarsi che la tabella size_stats esista prima di creare la tabella dei database.
Una volta impostata le tabelle di esempio, inseriamo i dati di esempio nella tabella per la dimostrazione.
Inserisci in size_stats (database_id, size_on_disk, size_compressed) valori (1, 100.45, 94.55);
Inserisci in size_stats (database_id, size_on_disk, size_compressed) valori (2, 567.67, 344.43);
Inserisci in size_stats (database_id, size_on_disk, size_compressed) valori (3, 649.30, 500.13);
Inserisci in size_stats (database_id, size_on_disk, size_compressed) valori (4, 45.62, 39.96);
Inserisci in size_stats (database_id, size_on_disk, size_compressed) valori (5, 1000.12, 986.43);
Quindi, aggiungi i dati alla tabella dei database come mostrato nella seguente:
Inserisci i database (nome, default_port, ultimo_version, tipo, lingua)
Valori ('Oracle', 1521, '19C', 'Relational', 'SQL');
Inserisci i database (nome, default_port, ultimo_version, tipo, lingua)
Valori ('mysql', 3306, '8.0 ',' relazionale ',' sql ');
Inserisci i database (nome, default_port, ultimo_version, tipo, lingua)
Valori ('postgresql', 5432, '13', 'relazionale', 'sql');
Inserisci i database (nome, default_port, ultimo_version, tipo, lingua)
Valori ('MongoDB', 27017, '4.4 ',' non relazionale ',' javascript ');
Inserisci i database (nome, default_port, ultimo_version, tipo, lingua)
Valori ('Microsoft SQL Server', 1433, '2017', 'Relational', 'T-SQL');
Le prime dichiarazioni di inserto dovrebbero darci una tabella che contiene le statistiche delle dimensioni del database come mostrato da segue:
La seconda tabella contiene le informazioni sul database come mostrato da segue:
Una volta applicata la chiave esterna, garantisce che i dati forniti siano intatti e che non vengano aggiunti dati non validi.
Ad esempio, se tentiamo di aggiungere un nuovo database con un ID che non esiste nella tabella delle statistiche, dovrebbe restituire un errore come segue:
Inserisci i database (nome, default_port, ultimo_version, tipo, lingua)
Valori ('sqlite', null, '3.34 ',' relazionale ',' c ');
Errore risultante:
[23000] [2291] ORA-02291: vincolo di integrità (HR.Sys_c007781) violato - chiave genitore non trovata
Lancia un vincolo estero
È possibile rimuovere un nome di vincolo estero esistente usando il comando della tabella Alter come mostrato nel seguente:
Alter Tale Table_name
Drop vincimento straniero_key_name;
Abilita/disabilita una chiave estera
Possiamo anche disabilitare o abilitare una chiave esterna senza rimuoverla dalla tabella come mostrato nei seguenti comandi:
Alter table table_name
Disabilitare il vincolo straniero_key_name;
Per abilitare una chiave esterna, utilizzare il seguente comando:
Alter table table_name
Abilita vincolo straniero_key_name;
Conclusione
In questo tutorial, hai imparato a utilizzare le chiavi estere nelle tabelle Oracle per migliorare e fornire integrità dei dati.