Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

Chiave e SuperChiave


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 14 risposta/e

#1
Kinn

Kinn

    Advanced Member

  • Utente
  • StellaStellaStella
  • 227 Messaggi:
Qualcuno potrebbe specificare meglio la differenza tra questi due elementi? :)

Grazie in anticipo :)



#2
Mik99

Mik99

    Advanced Member

  • Utente
  • StellaStellaStella
  • 206 Messaggi:
per quello che ho capito,la chiave è un insieme di attributi che permette la distinzione di una tupla da un'altra..
una superchiave,invece,è una chiave a cui vengono aggiunti altri attributi..
è una ridondanza insomma..
No pain no gain

#3
Kinn

Kinn

    Advanced Member

  • Utente
  • StellaStellaStella
  • 227 Messaggi:
mmm puoi fare un esempio pratico?

#4
da`

da`

    Admin

  • Amministratore
  • 4109 Messaggi:
a mia memoria una superchiave è come dice Mik99, una chiave con più attributi.
Ad esempio consideriamo la tabella dei post su r0x, e la tabella degli utenti di r0x.
La tabella dei grazie è del tipo (user_id, post_id, data e ora)
la superchiave è user_id, post_id. Si poteva creare una nuova chiave tipo: grazie_id ma è solo uno spreco !

Ho finito l'Università, sono admin ad honorem, ma non gestisco più r0x. Per qualsiasi problema contattate un altro admin o la super associazione StudentIngegneria :)

 

Dario Palumbo


#5
Mik99

Mik99

    Advanced Member

  • Utente
  • StellaStellaStella
  • 206 Messaggi:
grazie dà..
ti faccio l'esempio visto a lezione:
Dato un DB di relazioni Studente,Corso ed Esame definisco Matricola come chiave e {Matricola,Nome} come superchiave..
nella superchiave si può notare che l'attributo nome è una ridondanza perchè ho già una chiave presente in esso(ossia Matricola)..
credo che la superchiave si possa vedere come una chiave nella chiave..
No pain no gain

#6
Kinn

Kinn

    Advanced Member

  • Utente
  • StellaStellaStella
  • 227 Messaggi:
Ok ma non ne capisco l'utilità onestamente... Se ho impostato come chiave matricola ho già un metodo per evitare duplicati.

#7
|system88|

|system88|

    Moderatore globale

  • Moderatore
  • 4133 Messaggi:
potrebbe servire per la normalizzazione.. ci sono metodi di normalizzazione, infatti, in cui introdurre alcune ridondanze paga!
Esistono solo due modi per scrivere un programma senza errori.
Ma e' solo il terzo modo quello che funziona realmente.

#8
Kinn

Kinn

    Advanced Member

  • Utente
  • StellaStellaStella
  • 227 Messaggi:
Sugli appunti che ho preso a lezione vedo che la chiave stessa è definita sia su un singolo attributo sia come insieme di attributi... quindi la differenza tra chiave semplice e superchiave non può essere sul numero di attributi!

Non capisco ._.

P.S.: Che significa la normalizzazione? Non ne abbiamo ancora parlato al corso.

#9
da`

da`

    Admin

  • Amministratore
  • 4109 Messaggi:
quindi stando a come dice Kinn, anche nell'esempio che ho fatto io (user_id, post_id) è una chiave "non super" ?

Ho finito l'Università, sono admin ad honorem, ma non gestisco più r0x. Per qualsiasi problema contattate un altro admin o la super associazione StudentIngegneria :)

 

Dario Palumbo


#10
qwerty1991

qwerty1991

    Advanced Member

  • Utente
  • StellaStellaStella
  • 612 Messaggi:
Una chiave è sempre una super chiave

Vaffanc**o Facebook,ha distrutto r0x...

 

Disco sucks


#11
Emma

Emma

    Advanced Member

  • Utente
  • StellaStellaStella
  • 407 Messaggi:
ok allora secondo me tu fai confusione dal concetto di chiave e superchiave minimale chiave primaria e superchiave
io parto dal presupposto che su una tabella di relazione può esserci almeno una chiave
sappiamo che una chiave è un sottoinsieme mediante cui è possibile identificare univocamente una tupla.
Una chiave (o chiave semplice come la intendi tu) se non contiene superchiavi è detta superchiave minimale.
E sappiamo anche che una superchiave è un insieme di attributi di relazione che compongono una chiave, una superchiave identifica univocamente una tupla cioè non solo non ammette valori nulli ma è l'insieme degli attributi di relazione che ti permette di definire una superchiave:
Per esempio:
Studente Matricola Nome Cognome Corso Nascita
1245 Paolo Rossi B.D. 24/2/1989
1458 Paolo Rossi B.D 5/8/1988
2548 Luca Bianchi B.D. 9/7/1990
4789 Mario Rossi ASD 24/2/1989

allora

Potremmo dire che Matricola è una superchiave minimale perchè non contiene superchiavi e perchè identifica univocamente le tuple.

Allo stesso tempo posso dire che anche Nome Cognome e Nascita sono una chiave ma una superchiave in quanto insieme identifica univocamente le tuple,
privare la superchiave dell'attributo nascita ad esempio significa non poter più identificare le tuple e quindi nessun insieme può andare a creare una superchiave.

Spero di aver capito bene io ma sopratutto sperò che la differenza sia +o- chiara!!!
" L'immaginazione è la derivata dell'intelligenza"

#12
Kinn

Kinn

    Advanced Member

  • Utente
  • StellaStellaStella
  • 227 Messaggi:

ok allora secondo me tu fai confusione dal concetto di chiave e superchiave minimale chiave primaria e superchiave
io parto dal presupposto che su una tabella di relazione può esserci almeno una chiave
sappiamo che una chiave è un sottoinsieme mediante cui è possibile identificare univocamente una tupla.
Una chiave (o chiave semplice come la intendi tu) se non contiene superchiavi è detta superchiave minimale.
E sappiamo anche che una superchiave è un insieme di attributi di relazione che compongono una chiave, una superchiave identifica univocamente una tupla cioè non solo non ammette valori nulli ma è l'insieme degli attributi di relazione che ti permette di definire una superchiave:
Per esempio:
Studente Matricola Nome Cognome Corso Nascita
1245 Paolo Rossi B.D. 24/2/1989
1458 Paolo Rossi B.D 5/8/1988
2548 Luca Bianchi B.D. 9/7/1990
4789 Mario Rossi ASD 24/2/1989

allora

Potremmo dire che Matricola è una superchiave minimale perchè non contiene superchiavi e perchè identifica univocamente le tuple.

Allo stesso tempo posso dire che anche Nome Cognome e Nascita sono una chiave ma una superchiave in quanto insieme identifica univocamente le tuple,
privare la superchiave dell'attributo nascita ad esempio significa non poter più identificare le tuple e quindi nessun insieme può andare a creare una superchiave.

Spero di aver capito bene io ma sopratutto sperò che la differenza sia +o- chiara!!!



Comincio a sentirmi un po stupido...

Per ora credo di aver capito che una superchiave sia qualcosa che in qualche modo è "interno" alla chiave stessa.

sul boldato mi chiedo... quella che non ammette valori nulli, non è una caratteristica della chiave PRIMARIA ?

In ogni caso non riesco a capire quando dici:
"Potremmo dire che Matricola è una superchiave minimale perchè non contiene superchiavi"

Forse non mi è chiaro il significato del concetto : "una chiave contiene una superchiave"

#13
Emma

Emma

    Advanced Member

  • Utente
  • StellaStellaStella
  • 407 Messaggi:
Stando a quanto ho capito io il concetto di chiave primaria è legata a dei vincoli quindi uno di questo non ammette valori nulli,se non ricordo male il prof disse proprio che se si tenta di inserire un attributo di una chiave primaria con valore null il dbms non eseguirà l'inserimento proprio perchè c'è un vincolo stabilito di cui bisogna obbligatoriamente tener conto.
Una chiave minimale è una chiave che non contiene un'altra superchiave perchè non è legata a nessun altro attributo di relazione, matricola per intenderci è sola se fosse stata accoppiata ad un altro attributo di relazione non sarebbe stata una superchiave minimale. Sostanzialmente minimale significa che da sola riesce ad identificare le tuple cioè dalla superchiave minimale non posso togliere alcun attributo cosa che invece posso fare nel caso di una superchiave perchè composta magari da attributi ridondanti!!!!

In ogni caso rileggendo credo di aver commesso un errore:

una superchiave identifica univocamente una tupla cioè non solo non ammette valori nulli

riflettendoci i valori null sono ammessi,nel caso compaiano suppongo quindi che ci sia l'obbligo di stabilire un vincolo di chiave.

Non so se sia giusto tutto il ragionamento che ho fatto anche perchè sono termini simili che hanno una sottile differenza( almeno per il momento immagino).
Quindi spero nel caso di errore che qualcuno mi corregga :cheers: :cheers:
" L'immaginazione è la derivata dell'intelligenza"

#14
valentino911

valentino911

    Member

  • Utente
  • StellaStella
  • 11 Messaggi:
File allegato  ImageUploadedByTapatalk1338970304.527544.jpg   209,6K   1866 Download

È giusto quanto scritto?

#15
Emma

Emma

    Advanced Member

  • Utente
  • StellaStellaStella
  • 407 Messaggi:
Ricapitolando:
definizone di chiave: una chiave è un attributo (o più) che identificano univocamente le tuple di una relazione in quanto vincolate dal vincolo di chiave.
Differenza:
unì'insieme di K attributi si dice superchiave di una relazione se non esistono due tuple t1[k]=t2[k]
Una superchiave diventa chiave quando elimino gli attributi ridondanti e quindi è superchiave minimale.
Quindi per esempio Persona(Cf,nome,cognome) se (CF,nome,cognome) è superchiave questa non è minimale quindi potrei eliminare gli attributi ridondanti nome e cognome e quindi CF diventa chiave minimale perchè da sola riesce ad identificare univocamente le tuple di una tabella di relazione.
" L'immaginazione è la derivata dell'intelligenza"




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi