View Full Version : [basi di Dati] dubbi sulla teoria
TorpedoBlu
09-03-2005, 19:56
ciao ragazzi sto studiando basi di dati e mi porgo alcuni dubbi.
Nelle tabelle bisogna segnare la chiave primaria per far si che attraverso di essa ogni riga sia una e unica (la matricola, il seriale, l'id e via dicendo)
ma non capisco l'uso della chiave esterna, nel senso che quando faccio un join se questa è segnalata o meno cosa cambia?
Le chiavi esterne permettono di effettuare un "collegamento" fra le tabelle.
Parlando più precisamente: sono usate per stabilire dei vincoli di integrità referenziale. (foreign key)
Mi viene in mente il classico esempio: Fornitore-Fornisce-Merce.
Fornitore(codice, nome, città, via,...)
Fornisce(fornitore,merce,,qtà)
Merce(codice,prezzo, colore, ....)
Rosso: chiave primaria. Blu: chiave esterna.
Per capire al meglio questo concetto "di scorrimento" ti consiglio di disegnare il diagramma E/R per questo semplice database ed effettuare una query "visiva" del tipo: trovare i nomi dei fornitori che forniscono merci di colore rosso con prezzo uguale a 10 euro.
TorpedoBlu
10-03-2005, 08:53
si ma la mia domanda è: se non ci fossero quelle 2 chiavi esterne dichiarate, cosa cambierebbe? (ma durante la dichiarazione devo esplicitare a quale chiave di altra tabella si riferisce la chiave esterna che sto dichiarando?)
1. Ti ho risposto, ma probabilmente non hai prestato attenzione a quanto ho scritto. Il concetto "vincolo di integrità referenziale" è il nocciolo della questione.
2. Si, altrimenti che razza di chiave esterna sarebbe?! :D
TorpedoBlu
10-03-2005, 09:05
mhmm ok forse ho capito..
altra cosa: devo fare una base di dati che gestisca i giocatori di calcio per il fantacalcio; ognuno ha una rosa di 25giocatori e deve schierare una formazione settimanale di 11+3.
la formazione secondo voi la implemento come una vista o metto un campo alla tabella rosa che dice :titolare|panchinaro|riserva e la modifico settimana per settimana?
foxmolder5
10-03-2005, 12:24
facendo una tabella x il fantacalcio suppongo che nella tabella della rosa oltre al nome si potranno inserire altri dati quali per esempio media voto, media voto fantacalcio, e tante altre cose.
i suggerimenti possono essere diversi :
- puoi inserire una colonna nella tabella "rosa" in cui inserire il valore che contraddistinguerà i titolari o i panchinari così potrai avere la formazione semplicemente facendo una select oppure usando una vista
- puoi fare una tabella a parte in cui, usando proprio la chiave esterna, inserirai soltanto gli ID dei titolari ogni settimana.
per ora non mi viene in mente altro.
TorpedoBlu
10-03-2005, 13:19
dunque io devo farmi anche uno storico dei voti e delle formazioni migliori, l'unico modo e creare una tabella con una colonna per giornata che faccia come da "registro di scuola" ? non ci sono soluzioni migliori?
foxmolder5
10-03-2005, 19:19
Originariamente inviato da TorpedoBlu
dunque io devo farmi anche uno storico dei voti e delle formazioni migliori, l'unico modo e creare una tabella con una colonna per giornata che faccia come da "registro di scuola" ? non ci sono soluzioni migliori?
secondo me ognuna di queste funzioni dovrà essere rappresentata da una tabella, così non avrai tabelle enormi e le possibili operazioni risulteranno molto meno lunghe.
altro non mi viene in mente per il momento
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.