Nei miei oltre 10 anni di esperienza nel settore IT, non ho mai utilizzato chiavi esterne in nessuno dei miei progetti e non ne ho mai sentito il bisogno. Ho lavorato con database professionali che avevano vincoli di chiavi estranee.
Ora sono in una posizione in cui stiamo costruendo nuove applicazioni / database e penso che dovrei usare chiavi esterne o no? Questo sarà un prodotto professionale. Prenderò in considerazione l'implementazione di questo nei miei progetti esistenti se ottengo una risposta soddisfacente.
Questo articolo su perché utilizzare le chiavi esterne risolve esattamente le mie preoccupazioni . Il punto cruciale è
- Mantiene l'integrità referenziale (sì, ma può essere mantenuto anche senza)
- Lavoro investigativo più facile (ovviamente)
- Prestazioni migliori (non ne sono del tutto sicuro)
La mia domanda è se devo usare chiavi esterne o posso vivere senza di essa. Quali sono i pro e i pro forti di uno sviluppatore che ha lavorato in tali scenari.
Esempio: Ora una parte importante dell'uso di chiavi esterne è la complessità aggiunta alla progettazione. Ad esempio una semplice eliminazione potrebbe non funzionare, o potrebbe cancellare altri record di cui non sei a conoscenza. Consideriamo sencio in risposta alla mia domanda.
Ho un database con user
e user_comments
tabelle.
create table user(
user_id int not null identity,
user_name varchar(50),
...
)
create table user_comment(
comment_id int not nul identity,
user_id int,
CONSTRAINT FK_USER_USERID FOREIGN KEY (user_id)
REFERENCES user (user_id)
ON DELETE CASCADE
ON UPDATE CASCADE
)
Qui, se elimino un utente, tutti i suoi commenti verranno automaticamente cancellati. So che posso cambiare questo comportamento, ma la mia domanda è, sono le chiavi esterne che vale la pena utilizzare con la sua complessità aggiuntiva, che sono vantaggi e svantaggi degli utenti di SE.stackexchange . Sto forse guardando alcune storie dell'orrore? Qualcuno può commentare come migliora le prestazioni?