Basi di dati
Dato un database ho molta difficoltà a riconoscere chiave primaria,superchiave,....
C'è qualcuno che potrebbe spiegarmi come riconoscerle?
Ve ne sarei grato.
C'è qualcuno che potrebbe spiegarmi come riconoscerle?
Ve ne sarei grato.
Risposte
Premetto che, dato uno schema di relazione, in generale non esiste una sola superchiave o una sola chiave, ma ce ne possono essere diverse.
Ora cercherò di spiegare a parole cosa si intende per chiave e superchiave...
Un sottoinsieme di attributi è detto superchiave per uno schema di relazione se, per ogni coppia di tuple distinte, i valori assunti dalle tuple in corrispondenza di quel sottoinsieme non sono tutti uguali.
Una chiave è una superchiave minimale, cioè è una superchiave alla quale, tolto un qualunque attributo, non è più superchiave. Ovviamente ogni chiave è anche superchiave, mentre non vale il viceversa in generale.
Ora cercherò di spiegare a parole cosa si intende per chiave e superchiave...
Un sottoinsieme di attributi è detto superchiave per uno schema di relazione se, per ogni coppia di tuple distinte, i valori assunti dalle tuple in corrispondenza di quel sottoinsieme non sono tutti uguali.
Una chiave è una superchiave minimale, cioè è una superchiave alla quale, tolto un qualunque attributo, non è più superchiave. Ovviamente ogni chiave è anche superchiave, mentre non vale il viceversa in generale.
supponiamo che tu voglia costruire un database della tua classe : per evitare di spacciare una persona per un'altra generalmente cercheresti di "prendere più informazioni possibili" ossia di ogni singolo studente registresti, chessò : nome-cognome-data di nascita-luogo di nascita-codice fiscale.
Questo insieme di attributi è detto SUPERCHIAVE in quanto non è possibile che due stessi studenti abbiano lo stesso valore di tutti gli attributi (per questo esempio sii labile,supponiamo che sia impossibile che esistano due paolo rossi nati stesso giorno nello stesso posto e con stesso codice fiscale!!).
Ora una chiave (primaria) è definita come una SUPERCHIAVE MINIMALE, che vuol dire?
se dall'insieme precedente iniziassimo a toglire campi p.e nome-cognome-data di nascita-luogo di nascita (lasciando quindi come solo attributo il codice fiscale) risulterebbe ancora impossibile che 2 studenti abbiano lo stesso codice fiscale e che quindi sia ancora possibile identificare univocamente "lo studente con quel codice fiscale" (formalmente si dice che la scelta del codice fiscale come chiave primaria di una relazione non viola il vincolo di integrità referenziale).
Generalmente nella costruzione di database si utilizza un campo contatore come chiave primaria in modo da togliere qualsiasi dubbio. (p.e in università la matricola è univoca per ogni studente e identifica senza possibilità di errore lo studente a cui fa riferimento).
Se ti interessa approfondire il tema ti posso proporre di andare alla mia pagina personale
http://www.esnips.com/web/marvin
in cui ho caricato un database che ho sviluppato per un esame con la documentazione e lo schema ER.
Spero di esserti stato d'aiuto,
Marvin
Questo insieme di attributi è detto SUPERCHIAVE in quanto non è possibile che due stessi studenti abbiano lo stesso valore di tutti gli attributi (per questo esempio sii labile,supponiamo che sia impossibile che esistano due paolo rossi nati stesso giorno nello stesso posto e con stesso codice fiscale!!).
Ora una chiave (primaria) è definita come una SUPERCHIAVE MINIMALE, che vuol dire?
se dall'insieme precedente iniziassimo a toglire campi p.e nome-cognome-data di nascita-luogo di nascita (lasciando quindi come solo attributo il codice fiscale) risulterebbe ancora impossibile che 2 studenti abbiano lo stesso codice fiscale e che quindi sia ancora possibile identificare univocamente "lo studente con quel codice fiscale" (formalmente si dice che la scelta del codice fiscale come chiave primaria di una relazione non viola il vincolo di integrità referenziale).
Generalmente nella costruzione di database si utilizza un campo contatore come chiave primaria in modo da togliere qualsiasi dubbio. (p.e in università la matricola è univoca per ogni studente e identifica senza possibilità di errore lo studente a cui fa riferimento).
Se ti interessa approfondire il tema ti posso proporre di andare alla mia pagina personale
http://www.esnips.com/web/marvin
in cui ho caricato un database che ho sviluppato per un esame con la documentazione e lo schema ER.
Spero di esserti stato d'aiuto,
Marvin
Quindi l'insieme di tutti gli attributti è sempre una superchiave?
sono entrato sul tuo sito ma non ho trovato il database di cui parli
"ENEA84":
Quindi l'insieme di tutti gli attributti è sempre una superchiave?
Credo di si
"ENEA84":
sono entrato sul tuo sito ma non ho trovato il database di cui parli
E' lo .zip "TCK Order Board"
Marvin
Forse una superchiave è il numero di attributi minimi che identificano univocamente un'entità?
Ma che senso ha allora strutturare le tabelle entità con un autoincrementante per avere una chiave primaria che sia unica?
Ma che senso ha allora strutturare le tabelle entità con un autoincrementante per avere una chiave primaria che sia unica?
Forse una superchiave è il numero di attributi minimi che identificano univocamente un'entità?
Ma che senso ha allora strutturare le tabelle entità con un autoincrementante per avere una chiave primaria che sia unica?
Una superchiave è una qualsiasi combinazione di campi che possa identificare univocamente le tuple di una relazione:
se non è possibile definire nessuna chiave candidata, sia essa semplice o composta, si ricorre tipicamente ad un progressivo, generato per lo più automaticamente dal DBMS.