Condividi:        

Domanda su tabelle di congiunzione in database relazionale

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Anthony47, Triumph Of Steel, archimede

Domanda su tabelle di congiunzione in database relazionale

Postdi usag » 05/01/14 18:50

Salve a tutti,
fra le tante mi sto cimentando nella creazione di un database relazionale per la gestione della mia videoteca personale (ho più di un migliaio di film); ho già steso il progetto, definito il numero delle entità, le relazioni e ho già scelto il software per la sua creazione/gestione.
PhpMyadmin è il software scelto, principalmente per la sua ottima interconnettibilità col Php; per ciò che riguarda le entità, queste ammonterebbero a 4: Film, Attori, Registi e Doppiatori. Ora, per quanto riguarda le relazioni, si trova, secondo la mia logica con cui ho progettato il suddetto database, una sola relazione 1:N (Registi - Film), mentre le altre sono tutte N:N; ossia, Film-Attori, Attori-Doppiatori e Registi-Attori; solitamente, per ciò che mi ricordo quando studiavo i database alle superiori, per la gestione delle relazioni N:N, viene creata una tabella di congiunzione esterna che ha come chiavi esterne le chiavi primarie delle tabelle coinvolte, oltre alla sua chiave primaria personale, ovviamente. Mi chiedevo: è possibile coinvolgere più entità nella tabella, e quindi coinvolgere più di 2 tabelle? per esempio, nella tabelle di congiunzione AttoreDoppiatore (che unisce ovviamente le 2 rispettive tabelle, quindi idAttore, idDoppiatore), è possibile 'completarla' inserendo magari l'idFilm, come terzo attributo, in modo da 'rinforzare' ulteriormente la relazione? oppure è una ridondanza inutile?
Avevo cominciato tempo fa con Access (costruendo anche delle maschere), ma lo trovo molto pesante come grafica e secondo me allontana troppo dall'aspetto tecnico, puntando più sull'estetica. PhpMyAdmin invece è la prima volta che lo uso.
Grazie mille per le risposte.
usag
Utente Senior
 
Post: 251
Iscritto il: 15/08/07 16:20

Sponsor
 

Postdi archimede » 05/01/14 22:07

usag ha scritto:viene creata una tabella di congiunzione esterna che ha come chiavi esterne le chiavi primarie delle tabelle coinvolte, oltre alla sua chiave primaria personale
Mi sfugge a cosa possa servire quella che chiami chiave primaria personale: la somma delle chiavi esterne è già una chiave primaria "naturale".
usag ha scritto:è possibile 'completarla' inserendo magari l'idFilm
Più che possibile, mi pare obbligatorio: un attore non può essere doppiato da due persone diverse?

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi usag » 05/01/14 22:21

Ciao,


Mi sfugge a cosa possa servire quella che chiami chiave primaria personale.


Cioè, tradotto, io intendevo dire che i valori inseriti nella tabella di congiunzione dovrebbero essere praticamente le chiavi primarie delle tabelle coinvolte, almeno credo sia così (non vorrei dire una castroneria :lol: ). Per esempio, per le tabelle Attore e Doppiatore, si creerebbe una tabella di congiunzione chiamata AttoreDoppiatore, in cui come valori verrebbero inserite le rispettive chiavi primarie (idAttore, idDoppiatore), e nel caso, come chiedevo all'inizio, anche idFilm, per rafforzare la relazione.
Correggimi pure sfacciatamente se sbaglio, eh; non vorrei cominciare un lavoro già con l'errore incorporato.


Più che possibile, mi pare obbligatorio: un attore non può essere doppiato da due persone diverse?


Certamente, infatti la relazione Attore-Doppiatore l'ho considerata N:N; poi mi chiedevo appunto se fosse o meno possibile inserire anche l'idFilm come ulteriore valore, in modo da rendere più 'intrecciata' ed efficiente la relazione.


Grazie!
usag
Utente Senior
 
Post: 251
Iscritto il: 15/08/07 16:20

Postdi archimede » 05/01/14 22:42

usag ha scritto:mi chiedevo appunto se fosse o meno possibile inserire anche l'idFilm
Ribadisco: se non inserisci l'idFilm come fai a sapere, per un determinato film, chi ha doppiato chi? Non è questione di rafforzare, ma di capire cosa è necessario e cosa è ridondante. Per cui, se lo stesso attore è associato a due o più doppiatori, devi indicare il film nella relazione.

Peraltro hai già la tabella che associa gli attori al film, per cui neanche ti serve una terza tabella per le associazioni con i doppiatori: aggiungi a quella idDoppiatore.

E, già che ci siamo, a che serve la tabella Registi-Attori? (suppongo che Registi - Film NON sia una tabella, vero?).

Alessandro

PS:
una sola relazione 1:N (Registi - Film)
Ripensandoci, non ci sono film diretti da diversi registi (tipo quelli a episodi, ad esempio)?
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi usag » 05/01/14 22:53

Ribadisco: se non inserisci l'idFilm come fai a sapere, per un determinato film, chi ha doppiato chi?


Perfetto, ora ho capito; lo so, sono un po' duro ;).


E, già che ci siamo, a che serve la tabella Registi-Attori?


No, non è una tabella; era un mio promemoria, ma non l'ho messa nel progetto. Mi sono accorto ora che l'ho scritto nel post iniziale, ma come ho detto, era un promemoria mio, non l'avrei inserita nel progetto, quindi di fatto non esiste.


Suppongo che Registi - Film NON sia una tabella, vero?


No, infatti; è una relazione 1:N.


Grazie per la pazienza ;)
usag
Utente Senior
 
Post: 251
Iscritto il: 15/08/07 16:20


Torna a Programmazione


Topic correlati a "Domanda su tabelle di congiunzione in database relazionale":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti