Problema riguardo al caricamento dati tra diverse maschere di inserimento.

di il
10 risposte

Problema riguardo al caricamento dati tra diverse maschere di inserimento.

Il database che sto costruendo per la gestione di collezioni musicali, si basa su 4 tabelle fondamentali più altre tabelle accessorie.

Il problema che voglio porre riguarda tre delle tabelle principali, ovvero: Album, ElementiAlbum e Tracce.

La logica che sta dietro a queste tabelle è:
1) un album è un insieme di elementi (alcuni dei quali possono non essere supporti musicali)
2) ogni elemento dell'album che è anche un supporto musicali è un elenco di tracce (che possono essere di vario tipo)

Io vorrei creare un meccanismo interno al database che, quando vado ad inserire un Album, io non possa inserire altri album fino a quando non ho finito di inserire i dati relativi ad ogni suo singolo elemento e non possa inserire altri elementi fino a quando non ho inserito i dati relativi ad ogni sua singola traccia.

Un primo passo per questa cosa sarebbe la possibilità di caricare in automatico in campi in relazione tra tre tabelle, in particolare:

1) riportare il codice id dell'album sulla maschera di inserimento dati della tabella elementi
2) riportare il codice id elemento e id album sulla tabella tracce.

Ora, per quello che ho potuto vedere, la combo box potrebbe essere un buono strumento, ma mi viene anche detto che rischia di rallentare l'esecuzione del database quando debba gestire un numero elevato di alternative, quindi a questo punto i miei dubbi diventano:

1) che ordine di grandezza di dati può essere gestito da una normale combo box prima di causare rallentamenti significativi al database?
2) è possibile dire ad una combo box di una tabella "figlia" di inserire tra i valori solo l'ultimo valore inserito nella tabella "madre"? se sì, come?
3) se no, in alternativa, è possibile creare una procedura di precaricamento dati all'apertura della maschera figlia? se sì, come?

Grazie per l'attenzione e buona giornata

10 Risposte

  • Re: Problema riguardo al caricamento dati tra diverse maschere di inserimento.

    Ramastan ha scritto:


    Il problema che voglio porre riguarda tre delle tabelle principali, ovvero: Album, ElementiAlbum e Tracce.
    Potresti elencare i campi di queste tabelle e indicare i campi chiave e le relazioni?
  • Re: Problema riguardo al caricamento dati tra diverse maschere di inserimento.

    I campi chiave delle tabelle sono:

    Per la tabella Album: BarCode (chiave primaria definita come stringa). La tabella ha anche una chiave ordinamento interna (campo "ChiaveOrdAlfAlbum" che è un campo calcolato)

    Per la tabella Elementi Album: IdSupporto (chiave primaria definita come contatore automatico) e IdAlbum (chiave esterna in relazione con la chiave primaria della tabella Album)

    Per la tabella Tracce: IdCanzone (chiave primaria definita come contatore automatico), IdSupporto (chiave esterna in relazione con la chiave primaria della tabella elementi album) e IdAlbum (chiave esterna in relazione con la chiave primaria della tabella album).

    Le relazioni sono:
    1 BarCode Tabella Album molti IdAlbum su tabella elementi album
    1 BarCode Tabella Album molti IdAlbum su tabella tracce
    1 IdSupporto su tabella Elementi Album molti IdSupporto su Tabella tracce

    L'elenco dei campi delle tabelle sono:

    TABELLA ALBUM

    BarCode --> la chiave primaria, è il codice a barre in formato stringa
    SezArch --> campo a ricerca guidata che si appoggia ad una tabella esterna per reperire la sezione dell'archivio di cui fa parte l'album (ad esempio una sezione è composta da tutti i singoli, un'altra da tutte le compilation e così via... )
    ------------------- i campi di seguito descritti vengono valorizzati tramite una procedura apposita definita in maschera inserimento dati
    IdAutore --> campo numerico contenente l'identificativo dell'autore
    NomArtPreBand --> campo testo contenente il nome dell'artista solista o l'eventuale articolo che viene messo davanti ai nomi dei gruppi
    CognArtNomBand --> campo testo contenente il cognome dell'artista solista o il nome del gruppo
    ArtBandSup --> campo testo contenente il nome completo di un artista o di gruppo di supporto (es: in "Bruce Springsteen & the E Street Band" questo campo è valorizzato come "the E Street Band")
    NomArtPrefBandPr --> campo testo contente il nome dell'Artista solista o l'eventuale articolo che precede il nome del gruppo "principale". Viene valorizzato solo quando si sta inserendo un album che è di un artista o di un gruppo che, di fatto, è il progetto parallelo di uno o più elementi che fanno parte di un altro gruppo che è la loro attività principale
    CognArtNomBandPr --> campo testo contente il cognome dell'artista solista o il nome del gruppo "principale"
    CodPrPar --> campo testo contenente un codice progressivo associato al progetto parallelo che serve per l'ordinamento alfabetico nel caso una band abbia più progetti paralleli differenti
    ------------------- fine campi valorizzati tramite procedura in maschera inserimento dati
    TitoloAlbum
    AnnoPrPubbl --> numerico, contiene l'anno della prima pubblicazione dell'album
    ProgrAlbumAnn --> testo, contiene un numero di 3 cifre progressivo che stabilisce un ordinamento nel caso l'artista o il gruppo abbia fatto uscire più album nello stesso anno
    Formato --> campo a ricerca guidata che si appoggia ad una tabella esterna, contiene i dati relativi al formato dell'album (se è un cd, un vinile, un cofanetto etc...)
    Confezione --> campo a ricerca guidata che si appoggia ad una tabella esterna, contiene i dati relativi alla confezione dell'album (se è un digipack, un jewelcase standard, un boxset ecc...)
    Edizione campo a ricerca guidata che si appoggia ad una tabella esterna, contiene i dati relativi all'edizione dell'album (standard, limitata, celebrativa, rimasterizzata, etc...)
    AnnoRistampa --> numerico contiene l'anno di ristampa (se si sta inserendo una ristampa, altrimenti è a 0)
    CopertinaFronte
    CopertinaRetro
    Array di campi (non è definito come array, sono definiti dieci campi separati e distinti) TS - NTS (ci sono 5 coppie di campi di questo tipo) che sono:
    i campi TS sono campi a ricerca guidata che si appoggiano alla stessa tabella esterna del campo formato, e contengono i dati relativi ai vari tipi di supporti contenuti nell'album
    i campi NTS sono numerici e contengono la quantità relativa al tipo di supporto di riferimento contenuto nell'album

    [esempio: un cofanetto contente 5 CD, 2 DVD, 3 LP, 1 libro ed 1 portachiavi avrà:
    il campo "Formato" valorizzato a "Cofanetto"
    il campo TS1 valorizzato a "CD" e il campo NTS1 valorizzato a 5
    il campo TS2 valorizzato a "DVD" e il campo NTS2 valorizzato a 2
    il campo TS3 valorizzato a "Vinile" e il campo NTS3 valorizzato a 3
    il campo TS4 valorizzato a "Libro" e il campo NTS4 valorizzato a 1
    il campo TS5 valorizzato a "Gadget" e il campo NTS5 valorizzato a 1
    Mentre un album composto solo da 2 CD avrà valorizzato solo il campo TS1 a CD e il campo NTS1 a 2]

    infine ha il campo Durata--> campo OraEstesa che dovrebbe riuscire a calcolare la sommatoria delle tracce contenute in tutto l'album

    TABELLA ELEMENTI ALBUM

    IdSupporto --> chiave primaria definita come contatore progressivo automatico
    IdAlbum --> chiave esterna in relazione molti a 1 con il campo BarCode della tabella album
    TipoSup --> chiave esterna in relazione con la stessa tabella esterna dei campi formato e TS della tabella album
    PrgSup --> progressivo supporto, numerico, contiene un numero progressivo che riparte da 1 ogni volta che cambia il tipo di supporto, o che cambia l'album relativo all'elemento che si sta inserendo
    TipoSupSpec--> campo a ricerca guidata in relazione con la stessa tabella esterna dei campi formato e TS della tabella album e del campo TipoSup, e viene valorizzato solo nel caso in cui il campo TipoSup sia valorizzato in modo non completamente parlante (es: un vinile può essere a 33, a 45, o anche a 78 giri e sono tre formati di tipo diverso l'uno dall'altro)
    PrgSupSpec--> progressivo supporto specifico, numerico, è il numero progressivo relativo al campo TipoSupSpec
    BonusDisc --> campo booleano, definisce se l'elemento è un disco bonus proprio dell'edizione che si sta inserendo, oppure no
    AutDiscDescrSup --> campo testo, può contenere o una descrizione dell'oggetto, se l'elemento è un oggetto non musicale (vedi il libro o il portachiavi dell'esempio di prima) oppure l'autore del disco inserito in quell'elemento, se l'autore risulta diverso da quello indicato nell'album a cui il disco fa riferimento.
    TitoloDiscoNote --> campo testo, viene valorizzato solo in caso di inserimento di un oggetto musicale e può contenere o delle note riguardo al disco o all'album che si sta inserendo (esempio classico la data ed il luogo dei concerti registrati per gli album live) oppure può contenere un titolo di album, qualora il titolo del disco che si sta inserendo sia diverso dal titolo dell'album a cui il disco fa riferimento
    AmbitoMusicale --> campo a ricerca guidata in relazione con una tabella accessoria, contiene l'informazione riguardo all'ambito musicale
    GenereMusicale --> campo testo, contiene il genere musicale specifico (es: "Hard 'n' Heavy" è un ambito, "Power Metal" è un genere; "Dance e Musica Elettronica" è un ambito, "House Music" è un genere, etc...)
    NumTracce --> numerico, contiene il numero delle tracce presenti nell'oggetto (se l'oggetto è non musicale, il valore è a 0)
    Durata--> campo OraEstesa che dovrebbe riuscire a calcolare la sommatoria delle tracce contenute in tutto il disco


    TABELLA CANZONI

    IdCanzone --> chiave primaria definita come contatore progressivo automatico
    IdSupporto --> chiave esterna in relazione molti a 1 con il campo IdSupporto della tabella elementi album
    IdAlbum --> chiave esterna in relazione molti a 1 con il campo BarCode della tabella album
    NumTraccia --> Numerico, contiene il numero della traccia
    NumSotTr --> testo, può contenere un indice di elenco (es "a)" oppure ".1" oppure "1)" ecc...) quando nella tracklist è segnato che la canzone contenuta in una traccia è composta da più parti con ciascuno un titolo diverso
    TipoTraccia --> campo a ricerca guidata che si appoggia su una tabella accessoria, contiene l'informazione rispetto al tipo di traccia (può essere una canzone, ma anche una traccia video, una traccia dati, una traccia audio o del silenzio)
    AutCanz --> autore della canzone (da valorizzare solo se è differente sia dall'autore dell'album, che dall'eventuale artista del disco a cui la traccia fa riferimento
    TitoloSuite --> campo testo da valorizzare solo quando nella tracklist di un album è segnalato che più tracce separate e distinte contengono parti diverse della stessa canzone
    TitoloCanzone
    BonusTrack --> campo booleano, definisce se la traccia è materiale bonus proprio dell'edizione che si sta inserendo, oppure no
    Durata: campo OraEstesa, contiene la durata della traccia
    Ospiti: campo testo, contiene l'eventuale elenco di artisti e/o gruppi ospiti che hanno contribuito a registrare la traccia assieme all'autore principale.

  • Re: Problema riguardo al caricamento dati tra diverse maschere di inserimento.

    Per me il tuo problema andava postato nella sezione "Progettazione database"...ma...vada pure qui.
    Vuoi che ho un database simile al tuo (e ben articolato), mi sento di dirti che vi sono errori di PROGETTAZIONE/NORMALIZZAZIONE. Provo a spiegarti alcuni punti salienti.

    1. Una Canzone può avere molti Autori. Un Artista può essere Autore di molte Canzoni. Che ne dici di creare una relazione Artisti molti-a-molti Canzoni con tabella di congiunzione Autorità con i seguenti campi:
    IDAutorità (PK)
    IDAutore (FK) relazionato al campo IDArtista della tabella Artisti
    IDCanzone (FK)

    2. Devi chiarire se hai molto materiale di musica Classica, Folk...o comunque spesso REINTERPRETATA. Se la risposta è sì, questo vuol dire che una Canzone può stare in molti Supporti. Quindi relazioni Supporti molti-a-molti Canzoni con tabella di congiunzione DettagliSupporti. In un mio database chiamo gli Album=Supporti e Canzoni=Titoli, trattandosi questi ultimi non solo di Canzoni.

    3. Tanti altri tuoi bei particolari possono restare...nelle giuste tabelle...io però mi perdo un po'.
  • Re: Problema riguardo al caricamento dati tra diverse maschere di inserimento.

    OsvaldoLaviosa ha scritto:


    Per me il tuo problema andava postato nella sezione "Progettazione database"...ma...vada pure qui.
    Vuoi che ho un database simile al tuo (e ben articolato), mi sento di dirti che vi sono errori di PROGETTAZIONE/NORMALIZZAZIONE. Provo a spiegarti alcuni punti salienti.

    1. Una Canzone può avere molti Autori. Un Artista può essere Autore di molte Canzoni. Che ne dici di creare una relazione Artisti molti-a-molti Canzoni con tabella di congiunzione Autorità con i seguenti campi:
    IDAutorità (PK)
    IDAutore (FK) relazionato al campo IDArtista della tabella Artisti
    IDCanzone (FK)

    2. Devi chiarire se hai molto materiale di musica Classica, Folk...o comunque spesso REINTERPRETATA. Se la risposta è sì, questo vuol dire che una Canzone può stare in molti Supporti. Quindi relazioni Supporti molti-a-molti Canzoni con tabella di congiunzione DettagliSupporti. In un mio database chiamo gli Album=Supporti e Canzoni=Titoli, trattandosi questi ultimi non solo di Canzoni.

    3. Tanti altri tuoi bei particolari possono restare...nelle giuste tabelle...io però mi perdo un po'.
    Penso di capire cosa stai dicendo, e la cosa mi preoccupa abbastanza perché dimostra che sono non solo decisamente più indietro nella progettazione di quanto non pensassi, ma che ho anche decisamente meno conoscenze di quante ne servano.

    Se ho capito correttamente quello che stai dicendo allora dovrei ristrutturare il tutto in modo tale che:

    1) Quella che per me è la "tabella Supporti" (in cui ogni record era un elemento presente all'interno dell'album, che fosse un disco od un oggetto) dovrebbe essere sostituita da una "tabella oggetti" che contiene la definizione di ogni tipo di oggetto, mentre i record della tabella supporti che erano a loro volta album, devono esistere solo nella tabella album

    2) Autore sia considerato non solo l'artista o il gruppo che ha fatto il disco poi pubblicato, ma anche ogni musicista che abbia composto o la musica o i testi di almeno una canzone.

    3) Le tabelle devono essere costruite in modo tale che ciascun dato sia presente 1 volta sola, per poi essere richiamato in vista.

    Esempio il campo che conteneva il nome dell'autore (che io avevo messo sia sulla tabella autori che sulla tabella album) dovrebbe essere messo SOLO sulla tabella Autori e poi il punto sarebbe stato creare delle schede e delle liste che combinassero i dati delle varie tabelle fino ad ottenere il risultato voluto.

    La cosa è corretta?

    Temo, però, di non aver capito bene la funzione della tabella "Autorità" che hai descritto. Che conseguenze porta il fatto di crearla?

    Grazie per l'attenzione e per la pazienza
  • Re: Problema riguardo al caricamento dati tra diverse maschere di inserimento.

    Ramastan ha scritto:


    Penso di capire cosa stai dicendo, e la cosa mi preoccupa abbastanza perché dimostra che sono non solo decisamente più indietro nella progettazione di quanto non pensassi, ma che ho anche decisamente meno conoscenze di quante ne servano.
    Tranquillo, può capitare a tutti di sbagliare l'impostazione del database. Il forum serve anche per questo.

    Ramastan ha scritto:


    Se ho capito correttamente quello che stai dicendo allora dovrei ristrutturare il tutto in modo tale che
    Sicuramente sì. Io ti racconterò il mio punto di vista guidato dall'esperienza del mio database, ma potrebbero esserci considerazioni in più o in meno da farsi in base a ciò che a te interessa tracciare.

    Ramastan ha scritto:


    1) Quella che per me è la "tabella Supporti" (in cui ogni record era un elemento presente all'interno dell'album, che fosse un disco od un oggetto) dovrebbe essere sostituita da una "tabella oggetti" che contiene la definizione di ogni tipo di oggetto, mentre i record della tabella supporti che erano a loro volta album, devono esistere solo nella tabella album
    Questa cosa deve essere chiarita bene bene. Io ho vari Supporti (CD, DVD, Libri, MC, LP…). A primo approccio viene da pensare che 1 Album = 1 Supporto. Nel mio caso non sempre è così. Pensa ad esempio alle MC dove sul lato A c'è un Album di Pino Daniele, mentre sul B c'è un Album di Gigi D'Alessio. Questa MC è un Supporto di TipoSupporto=MC (TipoSupporto è un campo della tabella Supporti). E in questo Supporto non vi sono solo molte Tracce (o meglio io li chiamo Titoli), ma anche molti Album. Tu domani potresti interrogare il database e chiedergli sia dove sta il TitoloAlbum "Nero a metà" di Pino Daniele, sia dove sta il TitoloCanzone "Quanno chiove". Per risolvere questa storia qui io ho tracciato nella tabella Titoli sia:
    Titolo: Nero a metà
    CatTitolo: Album

    Titolo: Quanno chiove
    CatTitolo: Tune (equivalente a Canzone, Brano…)

    Ti faccio un altro esempio. Di Edoardo Bennato esiste sia "Sono solo canzonette" (Album) e "Sono solo canzonette" (Canzone). Io li traccio entrambi nella tabella Titoli, quindi anche nella tabella DettagliSupporti.
    Riepilogando questo ragionamento io dico Supporti molti-a-molti Titoli avente tabella di congiunzione DettagliSupporti.

    Ramastan ha scritto:


    2) Autore sia considerato non solo l'artista o il gruppo che ha fatto il disco poi pubblicato, ma anche ogni musicista che abbia composto o la musica o i testi di almeno una canzone.
    ...Temo, però, di non aver capito bene la funzione della tabella "Autorità" che hai descritto. Che conseguenze porta il fatto di crearla?
    Queste cose vanno chiarite bene bene bene bene.
    Io differisco Autore da Interprete. Entrambi in generale sono Artisti.
    Io ho una tabella Artisti con i campi:
    IDArtista
    Artista (può essere persona singola o gruppo)

    La tabella Autorità di cui parlavo serve a tracciare chi sono i MOLTI Autori che hanno scritto un Titolo.

    Per capire la differenza tra Autore e Interprete ti faccio i seguenti esempi:
    1. Beethoven Ludwig van: Sinfonia n. 9, interpretata da Berliner Philharmoniker, Karajan Herbert von.
    2. Bennato Edoardo: Sono solo canzonette
    3. AA.VV.: Woodstock

    Nel caso 1. Beethoven è l'Autore della Sinfonia n.9, ma Berliner Philharmoniker e Karajan sono gli Interpreti.
    Nel caso 2. Bennato Edoardo è sia Autore, sia Interprete e questo tu lo devi descrivere in entrambi i modi
    Nel caso 3. tu avrai molti Titoli di molti Autori e ogni Titolo avrà i propri MOLTI Interpreti

    Per risolvere questa questione degli Interpreti io ho pensato una tabella Interpretazioni con i seguenti campi:
    IDInterpretazione (PK)
    IDInterprete (FK) legato al campo Artisti.IDArtista
    IDDS (FK) legato al campo DettagliSupporti.IDDS (ho abbreviato DS per dire DettaglioSupporto)

    La tabella Autorità appare come una tabella "poco utile"...talvolta anche fastidiosa, ma considera tutti quei Titoli relativamente generici (Sinfonia, Concerto…) o corti come "Ti amo" che non lo ha scritto solo Umberto Tozzi...
  • Re: Problema riguardo al caricamento dati tra diverse maschere di inserimento.

    Visto che su certe cose bisogna spiegarsi bene bene, allora provo a farlo.
    Partiamo dalle definizioni:

    1) Artista Solista = entità che ha un nome contenente un riferimento diretto e univoco ad un solo componente del gruppo
    (es. Bruce Springsteen & The E Street Band, Francesco Guccini, Elisa, etc…)
    2) Gruppo = entità che ha un nome che non contiene un riferimento diretto e univoco ad un solo componente del gruppo
    (es. AC/DC, The Allman Brothers Band, Elio e le Storie Tese, etc…)
    3) Autore o Artista = qualsiasi artista solista o gruppo che abbia almeno un album pubblicato a suo nome in cui abbia anche o cantato o suonato i pezzi che fanno parte della pubblicazione. Non si considera Autore o Artista chi si è limitato a comporre le musiche e/o i testi senza mai interpretarli.
    4) Progetto Principale = informazione associata a qualsiasi Autore che risulti essere l’attività principale dei membri coinvolti
    (es. Genesis, Aerosmith, ZZ Top, Ligabue, etc…)
    5) Progetto Parallelo = informazione associata a qualsiasi Autore che risulta nascere da un uno o più membri di un Autore “Progetto Principale” tenendo conto che non sono da considerarsi Progetti Paralleli:
    --> a. Quelli nati dopo lo scioglimento ufficiale del Progetto Principale
    --> b. Quelli nati da membri che hanno lasciato traumaticamente il progetto principale
    6) Elemento della collezione = il singolo oggetto presente nella collezione musicale (è la singola riga della tabella centrale del database)
    7) Album = insieme di tracce e di elementi in cui deve esserci almeno una canzone e deve essere acquistabile in maniera indipendente. Può essere musica liquida, come su supporto fisico e, se su supporto fisico, deve avere una propria confezione.
    8 ) Elemento dell'Album = il singolo oggetto che è uno dei componenti di un album, che può essere di due tipi:
    --> a. O contenente almeno una canzone più eventuali tracce di altro tipo (in questo caso l’elemento assume il nome di “Disco”)
    --> b. O non contenente musica di nessun tipo (in questo caso l’elemento assume il nome di “Oggetto”)
    9) Traccia = insieme di dati inseriti su un supporto analogico o digitale che può essere di diversi tipi:
    --> a. Canzone = pezzo musicale, strumentale o con testo, o pezzo recitato che è integrato nella struttura dell’album
    --> b. Traccia Audio = traccia con all’interno parti parlate (tipo interviste, racconti o commenti) che non sono integrati nella struttura dell’album
    --> c. Traccia Video = videoclip, parti di concerto dal vivo etc…
    --> d. Traccia Dati = traccia con file diversi sia da file audio che da file video
    --> e. Silenzio = traccia silenziosa
    10) Sezione Archivio = concetto per cui, nel momento in cui ho ordinato la collezione che mi appresto ad inserire, ho gruppi di album separati, ciascun gruppo ordinato al suo interno per autore.

    Esempi di rapporto Progetto Principale – Progetto Parallelo:

    1) I Gamma Ray non sono un progetto parallelo degli Helloween, così come i Rainbow non sono un progetto parallelo dei Deep Purple perché chi ha fondato le band (Kai Hansen i primi e Ritchie Blackmore i secondi) aveva abbandonato la band in cui stava prima sbattendo la porta.
    2) Le carriere soliste degli ex-membri dei Beatles non sono da considerare come progetti paralleli dei Beatles, perché sono cominciate tutte dopo lo scioglimento dei Beatles stessi
    3) La carriera solista di Phil Collins non è un progetto parallelo dei Genesis perché, pur avendo Collins fatto parte di entrambe le entità per diversi anni, ha proprio dato un significato musicale differente a ciascuna delle due entità.
    4) Trans-Siberian Orchestra e Doctor Butcher sono progetti paralleli dei Savatage, perché sono nati da membri dei Savatage che sono anche rimasti parte dei Savatage, con i Savatage ancora in attività
    5) Circle II Circle e Jon Oliva’s Pain sono comunque progetti paralleli dei Savatage perché, nonostante siano nati in un momento in cui i Savatage avevano sospeso l’attività, sono stati entrambi dichiaratamente creati per portare avanti la musica dei Savatage e chi compone la loro musica è comunque chi già lo faceva ai tempi dei Savatage

    Questi sono i dati che identificano l'elemento della collezione

    1) Sezione Archivio
    2) Autore
    --> a) Se l’Autore è un progetto principale, l’album è associato al nome di quel solo autore
    --> b) Se l’Autore è un progetto parallelo, l’album è associato sia al nome del proprio autore, sia al nome del progetto
    principale a cui il proprio autore fa riferimento.
    3) Anno di Pubblicazione
    4) Progressivo per anno di pubblicazione (serve nel momento in cui un'entità autore ha pubblicato più album nello stesso anno)
    5) Titolo Album
    6) In che tipo di formato è l’oggetto acquistato
    7) Com’è il tipo di confezione
    8 ) Che tipo di edizione è
    9) Cosa Contiene
    --> a) Natura di ogni singolo tipo di oggetto che contiene
    --> b) Quantità relativa ad ogni singolo tipo di oggetto che contiene
    --> c) Per ogni cosa contenuta in cosa abbiamo acquistato si specifica:
    --> --> i) Che Tipo di oggetto è
    --> --> ii) Il numero progressivo relativo al tipo di oggetto contenuto all’interno dell’elemento della collezione
    --> --> iii) Dopo di che:
    --> --> --> (1) Se l’oggetto contiene musica, definiamo l’oggetto come “Disco” e i dati sono
    --> --> --> --> (a) L’Autore del Disco (solo se diverso dall’Autore dell’Album)
    --> --> --> --> (b) Il Titolo del Disco (solo se diverso dal Titolo dell’Album)
    --> --> --> --> (c) Note riguardo il Disco
    --> --> --> --> (d) Anno di pubblicazione della prima edizione del disco
    --> --> --> --> (e) Anno di pubblicazione del disco (solo se diverso dall’anno di pubblicazione dell’album)
    --> --> --> --> (f) Ambito Musicale del disco
    --> --> --> --> (g) Genere Musicale del disco
    --> --> --> --> (h) Numero di Tracce contenute nel disco
    --> --> --> --> (i) Durata del Disco
    --> --> --> --> (j) Elenco delle tracce contenute nel disco dove, per ogni traccia ci saranno le seguenti informazioni
    --> --> --> --> --> (i) Numero progressivo della traccia all’interno del disco
    --> --> --> --> --> (ii) Codice identificativo di parte della traccia (nel momento in cui, nell’elenco delle tracce sia definita una traccia con lo ----stile 1.a, 1.b oppure 1.1, 1.2 o simili)
    --> --> --> --> --> (iii) Autore della canzone (solo se diverso sia dall’autore dell’album che dall’autore del disco)
    --> --> --> --> --> (iv) Titolo dell’album relativo alla canzone (solo se differisce sia dal titolo dell’Album che dal titolo del disco)
    --> --> --> --> --> (v) Eventuale Titolo della Suite (solo se nella tracklist è evidenziata una canzone in più parti che si sviluppa su tracce separate e distinte, che siano consecutive oppure no)
    --> --> --> --> --> (vi) Titolo (se è valorizzato anche il “Titolo della Suite”, questo campo è valorizzato nello stile “Parte [n° parte]: [eventuale titolo specifico]
    --> --> --> --> --> (vii) Che tipo di traccia è, ovvero:
    --> --> --> --> --> (viii) Durata Canzone
    --> --> --> --> --> (ix) Elenco degli artisti ospiti sulla canzone (ovvero chi viene citato non a livello di album o di disco, ma solo a livello di canzone)
    --> --> --> (2) Se l’oggetto non contiene musica, definiamo l’oggetto come “Oggetto” e il dato è la descrizione dell’oggetto stesso

    Regole Base:
    1) Una variazione di almeno uno dei dati che definiscono l, implica il fatto che nella collezione siano distinti l’uno dall’altro
    2) Le prime 4 informazioni (Sezione Archivio – Autore – Anno Pubblicazione – Progressivo Per Anno di Pubblicazione) formano la chiave di ordinamento per la creazione dell’elenco complessivo degli Album componenti la collezione. Il campo Autore, in particolare, viene costruito in maniera variabile, in modo tale che:
    --> a. Se l’autore è un progetto principale, la chiave è composta dal “Nome Completo Autore ricomposto in chiave per ordinamento alfabetico” + anno di formazione
    --> b. Se l’autore è un progetto parallelo, la chiave è composta dal “Nome Completo Autore ricomposto in chiave per ordinamento alfabetico” del progetto principale + anno di formazione del progetto parallelo
    3) Una persona od un gruppo, per essere presente tra l’elenco degli Autori, deve essere presente all’interno della collezione con almeno un proprio album
    4) Il nome completo dell'entità autore deve essere visibile nelle schede album nella forma in cui è segnato sulle copertine, ma deve essere anche ricombinato in modo da funzionare come chiave per l'ordinamento alfabetico

    Per quanto riguarda la creazione della chiave di ordinamento alfabetico, però, bisogna dire che Il nome artista è una variabile che è costruita in modi diversi. Ad esempio:
    1) ELISA è il nome di un’entità artista, definibile come ARTISTA SOLISTA, che usa solo il Nome della persona di riferimento (Elisa Toffoli)
    2) LIGABUE è il nome di un’entità artista, definibile come ARTISTA SOLISTA, che usa solo il Cognome della persona di riferimento (Luciano Ligabue)
    3) FRANCESCO GUCCINI è il nome di un’entità artista, definibile come ARTISTA SOLISTA, che usa sia il Nome che il cognome della persona di riferimento
    4) BRUCE SPRINGSTEEN & THE E STREET BAND è il nome di un’entità artista, definibile come ARTISTA SOLISTA, che usa sia il nome che il cognome della persona di riferimento unendolo al nome di una banda di supporto. NOTA BENE: la band di supporto può essere associata o meno a qualsiasi nome artista (es: “Mike & THE MECHANICS, Within Temptation & METROPOL ORCHESTRA, Dalla & DE GREGORI)
    5) PINK FLOYD è il nome di un’entità artista, definibile come GRUPPO
    6) THE ROLLING STONES è il nome di un’entità artista definibile come GRUPPO, in cui l’articolo “THE” è considerato un prefisso che precede il Nome del gruppo stesso
    7) WITHIN TEMPTATION & THE METROPOLE ORCHESTRA è il nome di un’entità artista, definibile come GRUPPO, associata ad un gruppo di supporto

    Questo fa sì che le regole di ordinamento del nome artista siano variabili e sono:

    1) In tutti i casi, non si tiene conto della presenza di eventuali artisti o gruppi di supporto
    2) Se l’entità artista è un ARTISTA SOLISTA
    --> a. In presenza di Nome e Cognome, la stringa va ordinata prima per Cognome, e poi per Nome
    --> b. Negli altri casi l’ordinamento è definito dal valore dell’unica stringa significativa presente
    3) Se l’entità artista è un GRUPPO
    --> a. In presenza di un articolo come prima parola del nome del gruppo, l’articolo viene considerato un prefisso, per cui l’ordinamento effettivo avviene dalla seconda parola del nome del gruppo
    --> b. In assenza di un articolo come prima parola del nome del gruppo, vale l’ordinamento dell’unica stringa significativa presente.

    Questo significa che il valore da associare al nome dell'entità autore è una combinazione variabile di due trittici di campi

    Nome + Cognome + Band di Supporto per gli artisti solisti (in cui uno dei primi due campi deve essere sempre o comunque valorizzato)

    Prefisso + Nome + Band di Supporto per i gruppi (dove almeno il Nome deve essere sempre valorizzato)

    Ora, se con quello che mi hai già detto, sto capendo come impostare le cose in modo che ci sia una maggior normalizzazione, quello che ancora non riesco a vedere è:
    1) come gestire il nome completo dell'entità artista per avere il doppio tipo di valorizzazione
    2) come associare correttamente i due set di dati (il primo associato all'entità album ed il secondo associato all'entità disco)

    Il tutto senza creare problemi di normalizzazione.


    Il motivo principale ha a che vedere con la differenza tra quello che io definisco "dato effettivo" e quello che definisco come "dato correlato" e sono descritti da questi esempi:


    Esempio 1:

    Nella nostra collezione abbiamo album di diversi autori, tra cui: AC/DC, Rush, Savatage, Trans-Siberian Orchestra e The Gentle Storm

    Ora AC/DC, Rush e Savatage sono progetti principali
    Trans-Siberian Orchestra e The Gentle Storm sono progetti paralleli:
    I Trans-Siberian Orchestra sono un progetto parallelo dei Savatage
    I The Gentle Storm sono un progetto parallelo degli Ayreon (di cui non abbiamo album in collezione)

    Ora tutti e cinque i gruppi sono dati effettivi che esistono nella tabella autori, ma i Trans-Siberian Orchestra e i The Gentle Storm hanno al loro interno anche i dati legati al nome dei rispettivi progetti principali di riferimento.

    Solo che, mentre i Savatage esistono sia come dato effettivo che come dato correlato in quanto progetto principale di riferimento dei Trans-Siberian Orchestra, gli Ayreon esistono solo come dato correlato relativo al fatto di essere il progetto principale di riferimento dei The Gentle Storm.

    Esempio 2:
    Parlando poi degli album le situazioni possono essere molteplici.

    Ogni album è un insieme di elementi, ciascuno dei quali può essere
    1) Qualcosa che contiene musica (disco)
    2) Qualcosa che non contiene musica (oggetto)

    Ora, fintanto che l’album che stiamo inserendo ha come riferimenti un'unica entità autore e riferimenti solo a sé stesso come album, non ci sono problemi alla normalizzazione dei dati.

    Esempi possono essere

    L’edizione standard de “La Buona Novella” di Fabrizio de André (composto da un solo disco)
    L’edizione standard di “The River”, di Bruce Springsteen (composto da due dischi)
    L’edizione standard di “Beloved Antichrist” dei Therion (composto da tre dischi)
    L’edizione limitata di “Hydra” dei Within Temptation (composto da tre elementi di cui due dischi e un oggetto, ovvero un portachiavi)

    Però un problema che riguarda questo tipo di album e che, siccome ogni album può essere pubblicato in più edizione, in anni differenti, nel momento in cui nella collezione una persona ha più edizioni di uno stesso album (e non più copie della stessa edizione) di fatto nella sua collezione ogni edizione dell’album che ha è una “riga Album” indipendentemente da quali siano le differenze tra le edizioni.

    Ad esempio io, al momento ho l’album degli Spock’s Beard “Snow”
    1) In versione promo CD (con due CD)
    2) In versione collector (confezione jewelcase con sovracopertina cartonata e due CD con la stessa tracklist della versione promo)
    3) In versione cofanetto (con il doppio CD in confezione digipack con la stessa tracklist delle altre due versione; un terzo CD in confezione cardsleeve con canzoni bonus, tre adesivi e un booklet aggiuntivo con su scritta la storia narrata nell’album)

    Che pur essendo lo stesso album a livello di discografia dell’autore, sono tre oggetti separati e distinti.
    Inoltre c’è un problema che riguarda proprio i cofanetti.

    Un cofanetto è un contenitore con dati identificativi propri, che al suo interno contiene una serie di elementi, che possono essere
    1) Qualcosa che contiene musica (disco)
    2) Qualcosa che non contiene musica (oggetto)
    3) Ma anche veri e propri album (quindi ulteriori insiemi di elementi dei primi due tipi)

    Proprio questa loro natura, crea un problema che provo a spiegare analizzando il contenuto di due cofanetti:
    1) “The Refuge Years” dei Rage.
    2) “Solid Book of Rock” dei Saxon

    Il primo cofanetto è una scatola che contiene:
    1) Dischi che hanno una loro confezione e che, in quella edizione, sono già stati acquistabili separatamente, che quindi sono veri e propri album
    2) Oggetti contenuti solo nel cofanetto
    3) Dischi che, pur avendo una propria confezione, sono dei bonus disc propri del cofanetto, ma che non sono acquistabili in quella edizione ed in quel formato come supporti fisici indipendentemente dal cofanetto stesso e che quindi non sono catalogabili come album, ma solo come elementi dell’album cofanetto.

    Il secondo cofanetto è un libro con copertina cartonata al cui interno ci sono pagine di cartone spesso che hanno al loro interno spazi intagliati dove sono inseriti i CD ed i DVD, che hanno sopra stampata la copertina che aveva l’album di cui ciascuno di loro faceva parte prima di venire ripubblicato nel cofanetto in questione.

    Questi dischi, con queste caratteristiche, non sono fisicamente acquistabili separatamente dal cofanetto, cosa che li fa esistere non come album in sé, ma solo come elementi del cofanetto stesso
    Per cui io mi trovo mentalmente a vedere un gruppo di entità che deve far parte della tabella “Album”, un gruppo che invece fa parte di una tabella “dischi” che, oltre alle informazioni che individuano per ogni disco la sua identità all’interno dell’album, c’è anche tutto il set di informazioni che è dello stesso tipo delle informazioni che definiscono l’album, ma sono valorizzate in modo diverso, perché contengono i dati relativi al disco.

    Grazie ancora per la pazienza.
  • Re: Problema riguardo al caricamento dati tra diverse maschere di inserimento.

    P.s. nel frattempo sto comunque riscrivendo la struttura del database provando a far passare più informazioni possibili dalla struttura tabelle madri - tabelle figlie alla struttura relazionale
  • Re: Problema riguardo al caricamento dati tra diverse maschere di inserimento.

    Hai descritto un oceano di cose, in molte mi perdo. Provo a dire qualcosa dove mi sento sicuro.

    Per risolvere la questione di Artista=ArtistaSingolo o Artista=Gruppo e quest'ultimo non si sa se contiene l'articolo inziale, io risolvo la questione così. La mia tabella Artisti ha i seguenti campi:
    IDArtista (chiave primaria)
    Artista: qui scrivi l'Artista cercando di rispettare tutte le regole di "indicizzazione" standard per fare in modo che tu possa elencare gli Artisti in un modo coerente/standard/universale. Di conseguenza gli ArtistiPersona saranno sempre Cognome Nome (De Andrè Fabrizio, Bennato Edoardo…) o mononome per i nomi d'arte (Ron, Alice, Arisa…). Per i gruppi scrivi il nome gruppo escludendo l'eventuale Articolo determinativo iniziale, quindi The Beatles diventa Beatles, idem per The Rolling Stones.
    Visualizzato: se hai esigenze di mostrare il nome dell'artista per intero qui lo scrivi così come TU vorresti vederlo visualizzato, quindi per gli ArtistiPersona scriverai Nome Cognome, ai gruppi con l'Articolo ci aggiungi l'articolo. Questo campo non ha senso "indicizzarlo".
    TipoArtista: campo bivalore in cui specifichi se si tratta di Persona o Gruppo.

    Ramastan ha scritto:


    Ad esempio io, al momento ho l’album degli Spock’s Beard “Snow”
    1) In versione promo CD (con due CD)
    2) In versione collector (confezione jewelcase con sovracopertina cartonata e due CD con la stessa tracklist della versione promo)
    3) In versione cofanetto (con il doppio CD in confezione digipack con la stessa tracklist delle altre due versione; un terzo CD in confezione cardsleeve con canzoni bonus, tre adesivi e un booklet aggiuntivo con su scritta la storia narrata nell’album)
    Un Album che viene rieditato con un "look" diverso...per me è sempre lo stesso Titolo con CatTitolo=Album, ma i Supporti saranno diversi. Per ogni Supporto indicherai in un campo la specifica che lo contraddistingue dai suoi corrispondenti omonimi. Nei corrispondenti DettagliSupporti tu scriverai le stesse tracklist.

    Riguardo le considerazioni sui "progetti paralleli"...non ho capito cosa vuoi dire/tracciare, ma in sostanza si tratta di tracciare in ogni caso tutti i componenti. Qui non ho chiaro se i Componenti li vuoi Titolo per Titolo o Album per Album. Poi, opportune query saranno in grado di ricostruire tutte le relative "storie".
  • Re: Problema riguardo al caricamento dati tra diverse maschere di inserimento.

    OsvaldoLaviosa ha scritto:


    Riguardo le considerazioni sui "progetti paralleli"...non ho capito cosa vuoi dire/tracciare, ma in sostanza si tratta di tracciare in ogni caso tutti i componenti. Qui non ho chiaro se i Componenti li vuoi Titolo per Titolo o Album per Album. Poi, opportune query saranno in grado di ricostruire tutte le relative "storie".
    Immaginiamo di avere una collezione con 10 album, ognuno di un autore diverso.

    Definiamo i nomi autori, come "Autore 01", "Autore 02" ... fino ad "Autore 10"

    Se fossero tutti progetti principali, nel momento in cui vado a stampare una lista degli album ordinati per autore, avrei

    Autore 01
    .... Album 01
    Autore 02
    .... Album 02
    Autore 03
    .... Album 03
    Autore 04
    .... Album 04...

    e così avanti fino al 10.

    Nel momento in cui uno o più autori sono progetti paralleli di un autore di riferimento di cui ho almeno un album, la situazione cambia.

    Diciamo, per andare sull'esempio di prima che "Autore 09" ed "Autore 06" siano entrambi progetti paralleli di "Autore 02".

    Supponiamo, poi, che i loro anni di esordio siano: per "Autore 02" il 1975; per "Autore 06" il 1993 e per "Autore 09" il 1989

    Il risultato dell'ordinamento deve essere

    Autore 01
    ... Album 01
    Autore 02
    ...Album 02
    ...ProgettoParallelo 01 --> Autore 09
    .................................... Album 09
    ...ProgettoParallelo 02 --> Autore 06
    .....................................Album 06
    Autore 03
    ...Album 03
    ... e poi numerazione a seguire escludendo, ovviamente, i numeri già segnati.

    Spero di essermi spiegato meglio.
  • Re: Problema riguardo al caricamento dati tra diverse maschere di inserimento.

    A livello di tabelle questo discorso, così come lo stai impostando qui, risulta una complicazione inutile. Normalizzando correttamente tutte le tabelle, puoi sapere tutte queste informazioni attraverso le query.
Devi accedere o registrarti per scrivere nel forum
10 risposte