|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2003
Città: Milano
Messaggi: 4623
|
[basi di Dati] dubbi sulla teoria
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?
__________________
Ho trattato con : lahiri, czame, RC, allXXX, dfruggeri, JMM, Paperone, xej, Pappez, iperfly, Red81, Playmake, ryan78, Rob66, XP2200, Peach1200, faberjack, Stewie82, supermario_bros, hft500, Axelscorpio, pipes lee, Piccolospazio, RohanKish, miki66, kabira85 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 1999
Città: Como
Messaggi: 1495
|
"Una chiave esterna e' un'insieme di attributi di un'entita' che identifica univocamente un'istanza di un'altra entita'. "
(la prima definizione che ho trovato) La sua importanza non è tanto nell'esecuzione delle selezioni ma negli inserimenti e nelle cancellazioni
__________________
il forum italiano delle torce www.cpfitaliforum.it |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2002
Città: Morio Cho
Messaggi: 2595
|
In altre parole è abbastanza inutile per fare un join in una query.
Però è essenziale per l'integrità referenziale (quando devi creare/modificare/eliminare dati rispettandola).
__________________
Sono GULDO, non Guido! Cioè, certo che guido... Bé, insomma, avete capito ![]() Linux 2.6.26|Debian|Debian@Hwupgrade|Debian Clan|Solo Puffin ti darà forza e grinta a volontà! NERD rank 62|Milla Jovovich|大事な物はいつも形の無い物だけ Sito e Forum sul Giappone|La mia libreria su aNobii |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2003
Città: Milano
Messaggi: 4623
|
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?)
Fatemi capire se sto modificando una riga di una tabella dove c'è una chiave esterna lui non mi fa modificare la chiave? in che modo?
__________________
Ho trattato con : lahiri, czame, RC, allXXX, dfruggeri, JMM, Paperone, xej, Pappez, iperfly, Red81, Playmake, ryan78, Rob66, XP2200, Peach1200, faberjack, Stewie82, supermario_bros, hft500, Axelscorpio, pipes lee, Piccolospazio, RohanKish, miki66, kabira85 |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Sep 2003
Città: Milano
Messaggi: 4623
|
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?
__________________
Ho trattato con : lahiri, czame, RC, allXXX, dfruggeri, JMM, Paperone, xej, Pappez, iperfly, Red81, Playmake, ryan78, Rob66, XP2200, Peach1200, faberjack, Stewie82, supermario_bros, hft500, Axelscorpio, pipes lee, Piccolospazio, RohanKish, miki66, kabira85 |
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
Quote:
![]() Quote:
se ci aggiungi pure un campo con il numero di giornata puoi anche tenere traccia di tutte le formazioni che hanno giocato durante il campionato cmq tutto dipende da cosa ti chiede il progetto |
||
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Aug 1999
Città: Como
Messaggi: 1495
|
Quote:
1 tabella giocatori con i campi IDGiocatore (chiave primaria) - IDSquadra (chiave esterna) - NomeCognomeGiocatore 1 tabella squadre con i campi IDSquadra (chiave primaria) - DescrizioneSquadra 1 tabella Ruolo con i campi IDRuolo (chiave primaria) - Descrizione (contenente i valori Titolare/panchina/ecc) 1 tabella Giornate con i campi IDGiornata - IDSquadra (chiave esterna) - IDGiocatore (chiave esterna) - IDRuolo (chiave esterna) - Descrizione Giornata A questo punto le prime 3 tabelle le popoli una volta sola all'inizio del campionato mentre la tabella principale è la "Giornate" Qui verranno memorizzate praticamente le formazioni di ogni giornata. Il vantaggio che si ha è che un giocatore può cambiar squadra senza problemi: nella tabella giocatori cambierà il valore della squadra ma nello storico (Giornate) verrà riportato correttamente la squadra di appartenenza. Per ottener la formazione attuale di una squadra sarà quindi sufficiente una vista con la join tra la tabella giocatori e squadre e così via
__________________
il forum italiano delle torce www.cpfitaliforum.it |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
Quote:
Quindi, torpedo, ricordati di fare una tabella "Juve" in cui i giocatori sono 14+3 ![]()
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
un esempio di uso delle chiavi esterne può essere questo.
Ho un database di libri. Ogni tanto i libri, ovviamente, non vengono restituiti, quindi devo cancellarli. Immagina uno schema ER abbastanza complesso e normalizzato, ovvero in cui un libro abbia una struttura di questo tipo: Tabella Libro id_libro id_Titolo id_Autore id_Editore Id_Codici ... ... dove id_libro è la chiave primaria del libro, e id_Titolo, id_Autore sono chiavi esterne. id_Titolo si riferisce alla tabella Titolo, ma nella tabella Titolo, in cui questo id si andrà a cercare, non c'è solo il titolo, ma magari il sottotitolo, la data di creazione del titolo, un campo in cui si dice se questo titolo deriva da un congresso scientifico, un campo in cui si dice la lingua del titolo, etc.. etc etc. Tabella Titolo id_Titolo Titolo Sottotitolo Anno di creazione Congresso Lingua ... .. .. Ora il problema che ti si pone è questo: nella libreria possiamo perdere un libro, o venderlo, o non ci viene restituito. Cosa faccio quando devo eliminare un libro? Beh, elimino la riga relativa nella tabella Libro E poi? mi fermo qui? No, devo eliminare anche la riga con id_Titolo corrispondente nella tabella Titolo. Ma come faccio a raggiungere questa riga se non avevo una chiave esterna nella tabella libro che referenziava una riga della tabella titolo? Senza le chiavi esterne questa operazione non sarebbe possibile ![]() Ti faccio notare che non è così "banale" decidere che politica adottare. Un autore, per esempio, non lo eliminerei, può aver fatto anche altri libri. Idem per l'editore. etc.. etc... Mentre la riga titolo va sicuramente elminata, dato che se elimini il libro non ha più senso avere una riga con il titolo di un libro inesistente ![]()
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Sep 2003
Città: Milano
Messaggi: 4623
|
Quote:
pensavo di fare Giocatori(nome (PK)quotazione) Utenti (nomeutente(PK), password, nomesquadra(FK), fantamigliardi) Squadra(nomesquadra(PK), utente(FK), rosa(FK)) Rose (nomesquadra(FK), nomegiocatore(FK))(PK) Ruoli (ruolo(PK), descrizione) Giornate (IDGiornata(PK), nome_giocatore(FK), ruolo (FK), voto) mi manca la classifica, ma fino ad ora come idee come vanno?
__________________
Ho trattato con : lahiri, czame, RC, allXXX, dfruggeri, JMM, Paperone, xej, Pappez, iperfly, Red81, Playmake, ryan78, Rob66, XP2200, Peach1200, faberjack, Stewie82, supermario_bros, hft500, Axelscorpio, pipes lee, Piccolospazio, RohanKish, miki66, kabira85 |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Sep 2003
Città: Milano
Messaggi: 4623
|
se qualcuno mi consiglia un soft per disegnare diagrammi ER possi disegnare qualcosa e postarlo
__________________
Ho trattato con : lahiri, czame, RC, allXXX, dfruggeri, JMM, Paperone, xej, Pappez, iperfly, Red81, Playmake, ryan78, Rob66, XP2200, Peach1200, faberjack, Stewie82, supermario_bros, hft500, Axelscorpio, pipes lee, Piccolospazio, RohanKish, miki66, kabira85 |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Aug 1999
Città: Como
Messaggi: 1495
|
Quote:
Oppure Visio, Sql server, Erwin. Purtroppo non conosco prodotti free, facendolo per lavoro posso sempre aver a disposizione strumenti che si pagano
__________________
il forum italiano delle torce www.cpfitaliforum.it |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Sep 2003
Città: Milano
Messaggi: 4623
|
vorrei implementare il tutto con Postgres, ma è la prima volta, sto leggendo un tutorial, ho installato Apache e postgres e Php su linux.
Appena faccio in diagramma lo posto.
__________________
Ho trattato con : lahiri, czame, RC, allXXX, dfruggeri, JMM, Paperone, xej, Pappez, iperfly, Red81, Playmake, ryan78, Rob66, XP2200, Peach1200, faberjack, Stewie82, supermario_bros, hft500, Axelscorpio, pipes lee, Piccolospazio, RohanKish, miki66, kabira85 |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Sep 2003
Città: Milano
Messaggi: 4623
|
ho fatto una bozza di schema, è un pochetto incasinato, ma forse qualcuno può darmi un consiglio
__________________
Ho trattato con : lahiri, czame, RC, allXXX, dfruggeri, JMM, Paperone, xej, Pappez, iperfly, Red81, Playmake, ryan78, Rob66, XP2200, Peach1200, faberjack, Stewie82, supermario_bros, hft500, Axelscorpio, pipes lee, Piccolospazio, RohanKish, miki66, kabira85 |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Aug 1999
Città: Como
Messaggi: 1495
|
Quote:
Quando trovo 5 minuti liberi gli posso dar un'occhiata
__________________
il forum italiano delle torce www.cpfitaliforum.it |
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Sep 2003
Città: Milano
Messaggi: 4623
|
__________________
Ho trattato con : lahiri, czame, RC, allXXX, dfruggeri, JMM, Paperone, xej, Pappez, iperfly, Red81, Playmake, ryan78, Rob66, XP2200, Peach1200, faberjack, Stewie82, supermario_bros, hft500, Axelscorpio, pipes lee, Piccolospazio, RohanKish, miki66, kabira85 |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
gli id VANNO OBBLIGATORIAMENTE usati, almeno nei progetti grandi
![]() I casi di omonimia vanno SEMPRE presi in considerazione, i casi di ampliamento della base di dati, etc etc etc, non vanno mai tralasciati ![]()
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero |
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
Quote:
![]() E' UML modificato sull'ER? ![]() Edit: ok, capito che FK sta per foreign key. A me non piace perchè mancano gli id. Inoltre non si capiscono le cardinalità. Bianco è 1, Nero è molti, mi sembra di capire, ma come vengono piazzate sembra più da UML che ER ![]() la tabella privilegio non so a cosa serva, che privilegi sono? Giornata , Schieramento e Modulo mi sembrano inutili. Sono dei valori normalissimi, anche se li ripeti non succede nulla. A che serve il privilegio nella rosa? Dalla rosa toglierei anche l'allenatore per una questione di normalizzazione, ma magari per efficienza ci può stare.
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero Ultima modifica di Scoperchiatore : 16-03-2005 alle 19:04. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:12.