![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito. |
||||
|
|||||||||
|
|
LinkBack | Strumenti di discussione |
|
|
#1 (permalink) |
|
User Newbie
Data di registrazione: Oct 2006
Messaggi: 3
|
chiavi esterne... non ho capito bene, o si?
Per prima cosa un ciao a tutti (questo è il mio primo post)
Non ho ben capito se serva o no usare l'attributo foreign key. E sono pure a digiuno di MySql 8ho dato l'esame di Basi di dati l'anno scorso...) Cioè, so cos'è una chiave esterna, ma a quanto ho capito non si può realizzarla esplicitamente con l'attributo "foreign key" in mysql a meno di usare InnoDB. Quindi deduco che si possa fare a meno di tale attributo. Ho pensato questa cosa: con "foreign key" gli aggiornamenti ai valori della colonna della chiave esterna vengono fatti automaticamente dal sistema quando modifico la colonna della tabella riferita. Mentre senza tale attributo gli aggiornamenti devo farli io a manina. Cioè quando modifico la tabella esterna, devo pure modificare la colonna della tabella aventa la chiave esterna. giusto? -- Segolas |
|
|
|
|
|
|
|
#2 (permalink) |
|
Moderatore
Data di registrazione: Mar 2006
Ubicazione: Perugia
Messaggi: 1,741
|
Beh come foreign key si usa la chiave d un'altra tabella, e lechiavi in genere non si modificano. Ad esempio se ho due tabele, utenti e ruoli, fatte in questo modo:
Utenti: -idUtente di tipo intero -nome varchar -cognome varchar -idRuolo intero Ruoli: -idRuolo intero -nomeRuolo intero Le chiavi sono gli id, e nella prima tabella idRuolo è chiave esterna. Tu potresti modificare il nome del ruolo, ma non per questo devi modificare l'id nell'utente. In genere nella seconda tabella tu modifichi il nome, ma mail l'id, quindi non dovresti avere problemi. Spero di non aver detto cavolate! Ciao! |
|
|
|
|
|
#3 (permalink) |
|
User Newbie
Data di registrazione: Oct 2006
Messaggi: 3
|
No, quello che hai detto è giusto. Sono io che mi sono espresso male.
Intendevo dire (ho avuto conferme altrove) che per mantenere l'integrità referenziale, non serve per forza appoggiarsi all'attributo "foreign key" del mtore InnoDB. Ma si può fare tutto da php. L'uso di "foreign key" è solo un modo per automatizzare l'aggiornamento delle tabelle. di certo riduce anche la possibilità di errore e visto che viene fatto tutto dal sistema, non c'è il rischio di dimenticarsi... |
|
__________________
[url=http://www.segolas.com]Il mio blog a fumetti[/url] |
|
|
|
|
|
|
#4 (permalink) |
|
Moderatore
Data di registrazione: Mar 2006
Ubicazione: Perugia
Messaggi: 1,741
|
COn aggiornamento immagino intendi ad esempio la delete cascade? Non so se mysql ce l'ha... Si comuqnue ovviamente puoi fare tutto da programma, nellesempio che ho fatto prima, se vedi che nella tabella utente c'è un id che non corrisponde a nessun ruolo, c'è un errore da qualche parte...
Ciao! |
|
|
|