Usando UNIQUE (col1, col2) o usando una chiave primaria composta per una tabella delle relazioni in SQLite / SQL?

2

Sto lavorando a un progetto in cui sto usando SQLite e dove ho alcune tabelle di relazione simili a questa:

CREATE TABLE tag_entry_relation
(
id INTEGER PRIMARY KEY,
tag_id INTEGER REFERENCES tag(id),
entry_id INTEGER REFERENCES entry(id)
);

So che le due colonne "referencing" saranno univoche (quindi non ci saranno duplicati).

Sto valutando se utilizzare il vincolo UNIQUE o se è preferibile utilizzare una chiave primaria composita

Il motivo per cui vedo che usare una chiave primaria composita è semplicemente che richiede una colonna in meno rispetto all'altra opzione

Non vedo un motivo per utilizzare un vincolo UNIQUE tranne che sono più abituato a questo rispetto all'utilizzo di una chiave primaria composita, quindi sono preoccupato che potrebbe mancare qualcosa

Che cosa consiglieresti? Grato aiuto!

PS: Per quanto ne so, non c'è differenza tra SQL e SQLite in merito a questa domanda

    
posta sunyata 06.12.2018 - 22:57
fonte

1 risposta

2

Conosco due motivi per utilizzare una colonna id in quella situazione:

  • se hai una convenzione severa per assegnare a ogni tabella del tuo database una chiave primaria singola denominata id

  • se non puoi escludere la possibilità che tag_entry_relation possa essere referenziato da un'altra tabella in futuro (il che porterebbe a brutti riferimenti a chiavi esterne a due colonne combinate)

Se nessuno di questi due motivi si applica, vai avanti con la chiave primaria composta, altrimenti inserisci la colonna id .

    
risposta data 06.12.2018 - 23:11
fonte

Leggi altre domande sui tag