Popolare di dati una junction table molti-a-molti

di
Anonimizzato12406
il
7 risposte

Popolare di dati una junction table molti-a-molti

Salve,

Sto lavorando su un db per un esame e non ho molta esperienza nell'uso di Access e SQL.
Ho una junction table Art_Strum_Canzone che collega 3 tabelle (Artista, Strumento, Canzone) in una relazione molti-a-molti e non so come popolarla di dati. Qualche suggerimento?

Grazie mille!

7 Risposte

  • Re: Popolare di dati una junction table molti-a-molti

    Le Molti-Molti che sono rappresentative della 3FN, sono relazioni che si possono vedere da 2 parti e come tale poi si può differenziare la loro gestione.
    Purtroppo tu non hai definito quali siano nello specifico le Relazioni, e questo argomento può lasciare spazio ad interpretazioni personali.
    Un'artista, molte canzoni suonate da Molti Strumenti

    Ipotesi 1°

    Un'artista può comporre MOLTE Canzoni, ed ogni Canzone può essere composta da Molti Strumenti.
    Definiamo in questa prima, e più usuale visione, che l'Artista sia l'elemento base.
    Si genera una Form basata su Artisti, si genera una SottoMaschera in visualizzazione continua basata su Tabella JOIN(che in questo caso è Canzoni) legata campi Master/Secondari con la PK(Artista).
    Nella SubForm JOIN avrai ovviamente un Campo FK che ne definisce lo strumento, questo dovrà essere una COMBOBOX che pesca i dati dalla Tabella Strumenti...

    Ipotesi 2°
    Uno Strumento può comporre molte canzoni, quindi Form basata su Strumenti, SubForm sempre basata su Tabella JOIN(Canzoni e questo è l'elemento IMMUTABILE), e combobox per definire di ogni Canzone l'autore.

    In sostanza i dati inseriti sono sempre gli stessi ed entrambi i modi sono assolitamente EQUIVALENTI, dipende solo da te come vuoi interpretare l'inserimento.

    Ovviamente in caso di differente relazione iniziale, il concetto espresso non cambia, dovrai riadattare la mia applicazione alla tua situazione reale.
  • Re: Popolare di dati una junction table molti-a-molti

    Scusa se ti correggo, le molti a molti sono normalizzate dalla 4fn

    Che poi la 4fn e soprattutto la 5fn siano poco usate è comprensibile per via del degrado di prestazioni che introducono.
  • Re: Popolare di dati una junction table molti-a-molti

    Le riminiscenze mnemoniche fanno cilecca..., non è che mi correggi, mi scoraggi... perchè inizio a perdere pezzi...!

    Hai perfettamente ragione...
  • Re: Popolare di dati una junction table molti-a-molti

    Tranquillo capita anche a me
  • Re: Popolare di dati una junction table molti-a-molti

    Grazie tanto per la risposta, ma ancora non sono riuscita a risolvere il mio dilemma, cioe' popolare la junction table attraverso una maschera di immissione (mi sembra di capire che questo sia il modo giusto). Ho cercato di inviare qualche allegato e screen shots del mio db ma il website non accetta alcuna extension (doc, mdb o pdf).

    Cerco di essere piu' chiara. Queste sono alcune delle mie tabelle:

    Artista
    artist_ID PK
    nome

    Canzone
    canz_num PK
    titolo

    Strumento
    Strm_ID PK
    nome
    descrizione

    Art_Canz_Strum
    artis_ID FK
    canz_num FK
    strum_ID FK

    Molti artisti (ho una "involute" relazione "Membro di" sulla tabella Artista per bands) possono suonare molte canzoni in diversi album.
    Poi ho le tabelle Album, Produttore, Suonata_da, prodotta_da, ma per ora e' la relazione ternaria della tab Art_Canz_Strum che non riesco a risolvere.

    Grazie ancora!
  • Re: Popolare di dati una junction table molti-a-molti

    Fai attenzione che una Canzone può far parte di MOLTI ALBUM, ed anche al fatto che una canzone può essere Cantata da MOLTI Artisti(vedi le COVER).
    Da distinguere è l'autore da chi la canta.

    Nel tuo caso fai una Form(Singola) basata sulla Tabella Artisti, nella Form devi inserire una SubForm relazionata Campi(Master/Secondari) [artis_ID] basata sulla Tabella JOIN [Art_Canz_Strum].

    Ora nella SubForm il campo [artis_ID] essendo legato alla form, lo devi rendere NON EDITABILE, personalmente lo NASCONDO rendendolo INVISIBILE, e verrà compilato automaticamente in base alla Form Principale.
    Rimangono da definire i 2 controlli basati sui campi:
    canz_num FK
    strum_ID FK
    Di Default avrai 2 TextBox con dentro solo gli INDICI Numerici, tu le devi "CAMBIARE" in ComboBox o CaselleCombinate(selezionane una, RightClick si apre un menù e seleziona [Cambia in...].
    La Casella Combinata(ComboBox) ha 2 gestioni separate:
    1° OrigineControllo in questo caso per il controllo Strumenti: ----> strum_ID
    2° OrigineRiga che è l'elenco delle Opzioni da poter selezionare per compilare [strum_ID]
    In questo caso avrai una Query
     SELECT strum_ID, nome From Strumento Order By Nome
    Definirai il Numero Colonne=2 con Colonna Associata=1 e la Larghezza delle Colonne=0;3cm

    Il 2° dovrà elencare i dati contenuti nella Tabella [Strumento], e riportare come selezione il valore Chiave [strum_ID] definito dalla 1° Colonna, che essento Larchezza=0 non si vede, ma c'è e verrà visualizzato il Nome al posto dell'indice.

    Stessa cosa per le canzoni...

    Ora devi provarci e studiarlo bene.
  • Re: Popolare di dati una junction table molti-a-molti

    Grazie 1000! Ci sono riuscita anche per la tabella Album!

    La struttura del db l'ho fatta io per una parte dell'esame; ora devo dimonstrare che funzioni pero'! e questo e' un inizio!

    Teresa
Devi accedere o registrarti per scrivere nel forum
7 risposte