ricevo
Buongiorno,
leggo dalle dispense che per "chiave primaria"
si intende una chiave su cui non ammettiamo valori null; tale
definizione mi fa sorgere alcuni dubbi:
Esiste
una sola chiave primaria per ogni relazione? Dalle sue
presentazioni-video sembrerebbe di no, in quanto è affermato che la
chiave primaria è generalmente unica. Tale concetto sembra essere ripreso a pagina 31 nella dispensa sulla parte 3, in cui la relazione professor ha come attributi (ProfId, Social security number, ...), dove la sottolineatura staccata indica due chiavi primarie differenti; tuttavia, nella stessa pagina scrive Furthermore ProfId is the primary key of Professor.
A questo punto mi chiedo: Social security number non è più una chiave
primaria? Oppure rimane anch'essa una chiave primaria ma siccome non è
coinvolta in nessun vincolo di integrità referenziale semplicemente non
l'ha menzionata? Mi verrebbe da dire che quest'ultimo sia lo scenario
corretto, anche perché facendo alcune prove su MYSQL Workbench è
perfettamente possibile avere due chiavi primarie in una tabella e far
sì che un vincolo di integrità referenziale con un'altra tabella
riguardi solo una delle due chiavi.
rispondo
ha ragione lei. la definizione di chiave primaria è una delle chiavi della relazione scelta tra quelle che non hanno valori nulli. l'esigenza di non avere valori nulli nasce dal fatto che la chiave scelta come primaria deve poter identificare univocamente tutte le tuple, anche perchè questo è il requisito di poter accederne al contentuo. per cui se lei ha matriclae codice fiscale come chiavi di studente, e matricola è sempre non null e CF è qualche volta null, allora la scelta della chiave primaria è univoca, ma se tutti e due, a seguitro delle transazioni di creazione non hanno valori nulli, allora entrmabe possono erssere scelte come chiave primaria. la chiacve primariaq è unica? direi di non è una questione di convnezione e di linguaggio, se non ricordo male in SQL DDL lei può eleggere una sola chiave come chiave primaria, ma anche le altre che non hanno valori nulli sono in linea di principio chiavi primarie, perchè anche esse hanno la capacità di identifificare univocamente tutte le istanze della relazione cui fanno riferimento, proprio perchè sicuramente sempre specificate
cbatini