Domanda su tabelle di congiunzione nei database relazionali

Il forum per porre domande e dare risposte su argomenti riguardanti il mondo della programmazione.

Moderatore: Staff forum IlSoftware.it

usag
Active Software Plus
Active Software Plus
Messaggi: 699
Iscritto il: 14 ago 2006 23:40

Domanda su tabelle di congiunzione nei database relazionali

Messaggioda usag » 05 gen 2014 18:41

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.
L'importante non è sapere, ma saper fare uso di ciò che si sa.

http://www.sicvo.it

Avatar utente
wonwuster
Senior Software
Senior Software
Messaggi: 5134
Iscritto il: 18 feb 2005 16:31

Re: Domanda su tabelle di congiunzione nei database relazion

Messaggioda wonwuster » 08 gen 2014 11:17

Ciao, come intendi gestire i database? Devi creare una web app in PHP per gestire la tua videoteca personale?
Le entità all'interno degli schemi relazionali considerale sempre al singolare, e sarebbe utile vedere il tuo diagramma ER con le associazioni e attributi per capire il ragionamento.

ciao
peace, love, empathy.

usag
Active Software Plus
Active Software Plus
Messaggi: 699
Iscritto il: 14 ago 2006 23:40

Re: Domanda su tabelle di congiunzione nei database relazion

Messaggioda usag » 08 gen 2014 12:42

Ciao Wonwuster,

Devi creare una web app in PHP per gestire la tua videoteca personale?
Sì, praticamente è così; di modo che attraverso semplici comandi SQL vengano richiamate, stile navigazione su web, le varie info (es. tutti i film girati nell'86, o tutti i film in cui è presente un certo attore, etc.).

Le entità all'interno degli schemi relazionali considerale sempre al singolare.
Sì sì, lo so; infatti nel progetto e anche nella stesura del database stesso, le metto sempre al singolare.

Sarebbe utile vedere il tuo diagramma ER con le associazioni e attributi.
Il progetto l'ho buttato giù con Rise Editor; infatti mi sarebbe piaciuto fare uno screenshot del 'disegno' fatto con Rise, comprensivo delle associazioni; se mi riesce capire come si fa, lo posto subito.
Cmq per intendersi, le entità sono: Film, Attore, Regista, Doppiatore.
Le relazioni le ho pensate così:

Regista-Film: 1:N
Film-Attore: N:N
Film-Doppiatore: N:N
Attore-Doppiatore: N:N

Credi che possa andare? Se pensi che abbia sbagliato l'impostazione del ragionamento, dimmelo pure. Ho pensato che più relazioni ci sono, più è 'forte' il database, e soprattutto più dati possano esser richiamate tramite le query.
Grazie mille! :approvato:
L'importante non è sapere, ma saper fare uso di ciò che si sa.

http://www.sicvo.it

Avatar utente
wonwuster
Senior Software
Senior Software
Messaggi: 5134
Iscritto il: 18 feb 2005 16:31

Re: Domanda su tabelle di congiunzione nei database relazion

Messaggioda wonwuster » 09 gen 2014 00:30

Ciao, ho installato in macchina virtuale RIseEditor e per esportare il diagramma come PNG devi semplicemente cliccare su"File-> Save Drawings as-> *", allega gentilmente il tuo schema completo.
Le entità che hai scelto vanno bene ed anche le relazioni scritte, voglio però vedere il diagramma sopracitato, per capire a fondo il tuo ragionamento e tutti gli attributi e le chiavi che hai considerato.

La web app da strutturare è semplice, imposti un menu a tendina che effettua delle query al tuo db in base al parametro scelto e fai stampare il risultato.
I file generati gireranno in locale o su un server web?

ciao
peace, love, empathy.

usag
Active Software Plus
Active Software Plus
Messaggi: 699
Iscritto il: 14 ago 2006 23:40

Re: Domanda su tabelle di congiunzione nei database relazion

Messaggioda usag » 09 gen 2014 01:00

Ciao,
ecco ti allego il file generato col Rise editor.
L'interazione con l'utente, per la 'navigazione' in locale avevo pensato di strutturarla tramite il Php, collegandosi al database e impostando le varie interrogazioni, magari inserendone qualcuna già pronta all'uso.
Girerà tutto in locale, lo faccio principalmente per le altre persone che ho in casa, oltre che per me :wink:
PhpMyAdmin può andar bene per implementare il database? o dici che sia meglio Access?
Grazie mille!
Allegati
Schema_videoteca.png
Schema generato col Rise Editor
(17.18 KiB) Scaricato 2 volte
L'importante non è sapere, ma saper fare uso di ciò che si sa.

http://www.sicvo.it

Avatar utente
wonwuster
Senior Software
Senior Software
Messaggi: 5134
Iscritto il: 18 feb 2005 16:31

Re: Domanda su tabelle di congiunzione nei database relazion

Messaggioda wonwuster » 09 gen 2014 01:15

Ciao lo schema è semplice, devi assegnare le varie chiavi primarie ed esterne (nell'entità Regista) collegate tra di loro. Il database lo strutturi in MySql, il PhpMyAdmin è il software web che ti permette di creare il database MySQL e le sue tabelle da remoto o locale.

Per configurare un server locale, scarica XAMP se sei in ambiente Windows, altrimenti Lamp o Mamp per OSX e Linux. Una volta installato e configurato, fai partire Apache Server e il MySQL Server, lancia http://localhost/" onclick="window.open(this.href);return false; e vedi se tutto funziona.

ciao
peace, love, empathy.

usag
Active Software Plus
Active Software Plus
Messaggi: 699
Iscritto il: 14 ago 2006 23:40

Re: Domanda su tabelle di congiunzione nei database relazion

Messaggioda usag » 09 gen 2014 01:41

Lo schema è semplice, devi assegnare le varie chiavi primarie ed esterne (nell'entità Regista) collegate tra di loro.
Sì sì, lo so; mi chiedevo per le relazioni N:N, cioè tutte le altre. Se va fatta una tabella di congiunzione comprensiva di più chiavi che 'abbraccino' anche altre tabelle (tipo 2 o anche 3).


Xampp ce l'ho di già, infatti uso quello su Windows.
Con PhpMyAdmin posso costruire direttamente le tabelle?
Grazie.
L'importante non è sapere, ma saper fare uso di ciò che si sa.

http://www.sicvo.it

Avatar utente
wonwuster
Senior Software
Senior Software
Messaggi: 5134
Iscritto il: 18 feb 2005 16:31

Re: Domanda su tabelle di congiunzione nei database relazion

Messaggioda wonwuster » 09 gen 2014 02:54

Per le relazioni "*...*" (molti a molti), devi impostare una chiave primaria per un attributo delle entità, ed inserire una terza tabella di collegamento che conterrà le due chiavi primarie delle entità con la relazione "molti a molti".
Esempio con tabelle nel db:
- tabella Film: chiave primaria idFilm;
- tabella Attore: chiave primaria idAttore;
- terza tabella coinvolta Cast: idFilm IdAttore;
Le due tabelle Film e Attore avranno una relazione "1...*" (uno a molti) con la tabella Cast, le chiavi primarie di queste tabelle connesse sono le chiavi esterne della tabella Cast.

Accedendo al PhpMyAdmin, puoi creare il database inserendo il nome nello spazio bianco come da immagine:
Immagine
Una volta creato il database, a sinistra verrà creato il collegamento alla struttura delle tabelle. Cliccando sul database, a destra della schermata avrai la possibilità di creare le tabelle (nel tab Struttura) e impostare gli elementi come da immagine:
Immagine

Ciao
peace, love, empathy.

usag
Active Software Plus
Active Software Plus
Messaggi: 699
Iscritto il: 14 ago 2006 23:40

Re: Domanda su tabelle di congiunzione nei database relazion

Messaggioda usag » 09 gen 2014 17:28

Bene, perfetto grazie!
ultima domanda, e poi non rompo più :lol: . Una volta terminata la creazione del database e averlo popolato con tutti i dati necessari, è possibile dopo interrogarlo anche con altri software che girano anche su più piattaforme? Tipo Windows, Linux, e via dicendo.
Grazie ancora di tutto :adoro: .
L'importante non è sapere, ma saper fare uso di ciò che si sa.

http://www.sicvo.it

Avatar utente
wonwuster
Senior Software
Senior Software
Messaggi: 5134
Iscritto il: 18 feb 2005 16:31

Re: Domanda su tabelle di congiunzione nei database relazion

Messaggioda wonwuster » 09 gen 2014 19:48

Il database che risiede nel tuo server MySQL può essere interrogato da software che prevedono l'accesso al server, configurando indirizzo, nome utente, password e nome del database, indipendentemente dalla piattafororma. Ovvio che se il.server è locale, dovrai installare in ogni piattaforma il server Mysql e importare il database.
Se lo rendi disponibile in remoto, basta configurare i programmi come ti ho scritto sopra.

Ciao
peace, love, empathy.

usag
Active Software Plus
Active Software Plus
Messaggi: 699
Iscritto il: 14 ago 2006 23:40

Re: Domanda su tabelle di congiunzione nei database relazion

Messaggioda usag » 09 gen 2014 20:14

Bene, grazie :approvato:
L'importante non è sapere, ma saper fare uso di ciò che si sa.

http://www.sicvo.it

Avatar utente
wonwuster
Senior Software
Senior Software
Messaggi: 5134
Iscritto il: 18 feb 2005 16:31

Re: Domanda su tabelle di congiunzione nei database relazion

Messaggioda wonwuster » 09 gen 2014 20:41

Prego.
peace, love, empathy.