Sono molto confuso tra questi due. Sono uguali o diversi? Alcuni libri o persone dicono che sono uguali e altri dicono che sono diversi. Ho provato ma non ho trovato nessuna risposta autentica.
Per favore, ragazzi, risolvitelo.Qual è la differenza tra chiave esterna e chiave di riferimento?
risposta
"Chiave di riferimento" non è un termine tecnico normale nella modellazione relazionale o nell'implementazione SQL nell'inglese americano.
Una chiave esterna "fa riferimento" a una chiave in un'altra tabella; potrebbe essere da dove viene la confusione?
Non avete davvero qualcosa chiami una chiave di riferimento ... Sono la stessa cosa ... si potrebbe vedere la parola riferimenti utilizzato ad esempio in SQLite: si potrebbe utilizzare la sintassi come questo per avviare un db di autori e libri. Questo ti consente di mostrare che un autore può avere molti libri. Questo dice il db che il books.author_id
(definito un paio di righe su) fa riferimento a author.id
CREATE TABLE 'author' (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
firstname varchar(255)
lastname varchar(255)
);
CREATE TABLE 'books' (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
author_id INTEGER,
title varchar(255),
published date,
FOREIGN KEY(author_id) REFERENCES author(id)
);
Forse si sta utilizzando la "chiave di riferimento" termine un po 'vagamente?
Un valore di chiave esterna in una riga è detto "riferimento" alla riga che contiene il valore della chiave corrispondente. Nota che la parola "riferimento" nella frase precedente è un verbo, quindi potremmo dire che abbiamo un valore di chiave esterna di riferimento e un valore di chiave di riferimento.
Sebbene siano i valori della chiave, piuttosto che il vincolo della chiave della tabella, a cui viene fatto riferimento, suppongo che parlando liberamente potremmo dire "chiave di riferimento" per indicare le righe che comprendono i valori che potrebbero potenzialmente essere referenziati. Vedo quindi come "chiave di riferimento" potrebbe diventare "chiave di riferimento", ma non smentire la sua origine.
Suppongo che si stia parlando dell'uso di in cui non viene utilizzata la parola chiave FOREIGN KEY
, ad es.
author_id INTEGER REFERENCES author(id)
... invece di ...
author_id INTEGER,
FOREIGN KEY(author_id) REFERENCES author(id)
La risposta è, che è semplicemente la sintassi abbreviata per la stessa cosa. La preoccupazione principale quando si alterna tra i due dovrebbe essere la leggibilità.
Una chiave esterna "fa riferimento" a una chiave in un'altra tabella. Quella chiave in qualche altra tabella è chiamata chiave di riferimento. Probabilmente sentirai molto su questo se stai usando la funzione grafica su phpmyadmin.
Ci sono 2 modi per dichiarare una chiave esterna (s):
se la chiave esterna è un attributo SINGLE:
RIFERIMENTI()se le chiavi esterne sono un elenco di attributi
FOREIGN KEY() RIFERIMENTI
L'unica e più importante differenza tra le due parole chiave "FOREIGN KEY" e "REFERENCES" delle due parole chiave è che entrambi rendono i dati come dati secondari della tabella padre, il "FOREIGN KEY" viene utilizzato per creare un livello tabella vincolo mentre la parola chiave REFERENCES può essere utilizzata solo per creare un vincolo a livello di colonna. I vincoli a livello di colonna possono essere creati solo durante la creazione della sola tabella. Ma i vincoli a livello di tabella possono essere aggiunti utilizzando il comando ALTER TABLE.
Una chiave esterna deve essere fare riferimento a una chiave primaria. Quando si utilizza il vincolo REFERENCES semplicemente, non è necessario che la chiave di riferimento sia una chiave primaria.
- 1. differenze tra "chiave esterna" e "chiave esterna vincolo"
- 2. qual è la differenza tra UNICO INDICE e UNICO CHIAVE?
- 3. Qual è la differenza tra una chiave e un KeySpec?
- 4. Qual è la differenza tra la chiave primaria e il vincolo di chiave univoco?
- 5. Qual è la differenza tra un indice e una chiave esterna?
- 6. Differenza tra vincoli di chiave esterna e riferimenti in Rails
- 7. Chiave primaria composta, chiave esterna. Riferimento a oggetto o chiave?
- 8. Qual è la differenza tra Session.Add ("chiave", valore) e Sessione ["chiave"] = valore?
- 9. Differenza tra chiave primaria, chiave univoca e chiave candidata
- 10. Qual è la differenza tra giunzione interna e giunzione esterna
- 11. Chiave esterna per chiave composta
- 12. chiave esterna cakephp non la chiave primaria
- 13. C'è differenza tra la chiave surrogata, la chiave sintetica e la chiave artificiale?
- 14. Differenza tra x: Chiave e x: Nome
- 15. Qual è la differenza tra i parametri di chiusura e la parola chiave 'use'?
- 16. Qual è la differenza tra la parola chiave join e la parola chiave inner join in oracle sql?
- 17. Qual è il significato della chiave esterna autoreferenziale?
- 18. Qual è la differenza tra un codice di chiave fisica SDL e un codice di chiave virtuale SDL?
- 19. Qual è la differenza tra un riferimento __weak e __block?
- 20. Qual è la differenza in ECore tra contenimento e riferimento?
- 21. Qual è la differenza tra oggetto e riferimento?
- 22. Qual è la differenza tra typecasting normale e l'utilizzo di “AS” parola chiave
- 23. Qual è la differenza tra le parole chiave di Sunspot e il testo completo
- 24. la chiave esterna può fare riferimento alla chiave primaria nella stessa tabella?
- 25. straniero: rimuovere la chiave esterna
- 26. Qual è la chiave = lambda
- 27. Chiave esterna PostgreSQL condizionale
- 28. Qual è la differenza tra argomenti con valori predefiniti e argomenti-parola chiave?
- 29. In un database, qual è la differenza tra una chiave e un indice?
- 30. Qual è la differenza tra `global-set-key` e` definire-chiave global-map` in Emacs
Anche se il primo funzionerà senza abilitare chiavi esterne e il secondo non funzionerà. Il secondo modo non è più utilizzato? – schwiz
È importante anche se si tenta di utilizzare il reverse engineering per creare diagrammi dal database in MySQL Workbench. Se si è utilizzata l'opzione firs durante la creazione del database, lo strumento non sarà in grado di creare connessioni tra gli elementi del diagramma. –