Database strutturato

di il
3 risposte

Database strutturato

Il mio database non è strutturato, la finestra delle relazioni è una vera e propria ragnatela, però tutto funziona a meraviglia.
Ogni tanto penso all'idea di smembrarlo e strutturarlo, ma non saprei da dove cominciare. Per essere più concreto, il database si chiama "Archivio Cultura" e raccoglie tutto insieme principalmente musica, video (film) e libri (anche raccolte d'arte ma in misura minore). Ecco alcune tabelle che sono la spina dorsale del mio database:

ARTISTI
IDArtista
Cognome Nome

TITOLI
IDTitolo
Titolo
altri campi non importanti per ora

AUTORI-TITOLI
IDAT
IDAutore
IDTitolo

SUPPORTI
IDSupporto
Supporto
Tipo (es. CD, DVD, Libro, VHS...)
altri campi minori

TITOLI-SUPPORTI
IDTitSupp
IDTitolo
IDSupporto
Indirizzo (come per dire traccia 1, traccia 2, pag.66.....cioè l'indirizzo del Titolo all'interno del Supporto)
altri campi minori

INTERPRETI-(TITOLI-SUPPORTI)
IDITS
IDInterprete
IDTitSupp

Cerchiamo di venire al bandolo della matassa.
Ovviamente ogni ID in testa a ogni tabella è Contatore chiave primaria, tutti gli altri campi non ID sono Testo.
IDAutore è in realtà un IDArtista che nella tabella AUTORI-TITOLI svolge la funzione di Autore.
IDInterprete è un IDArtista che nella tabella INTERPRETI-(TITOLI-SUPPORTI) svolge la funzione di Interprete.
Ci sono casi in cui Artisti sono sia Autori che Interpreti, altri che sono Autori ma non Interpreti, altri che sono Interpreti ma non Autori, tutti caso per caso, tabella-di-congiunzione per tabella-di-congiunzione. Non so se è importante, ma non esistono Artisti che non sono nè Autore nè Interprete.
Spero sia tutto chiaro, ma si dà il caso che dalla tabella ARTISTI partano due linee di relazione:
ARTISTI.IDArtista uno-a-molti con AUTORI-TITOLI.IDAutore
ARTISTI.IDArtista uno-a-molti con INTERPRETI-(TITOLI-SUPPORTI).IDInterprete

Altre relazioni sono:
TITOLI molti-a-molti con SUPPORTI
sì, perchè è vero che un Supporto contiene molti Titoli, ma è anche vero che uno stesso Titolo può stare in molti Supporti (es. una canzone di Claudio Baglioni sta sia nel suo album originale, quanto in una compilation...).
Da qui TITOLI-SUPPORTI aggancio gli Interpreti per ogni Titolo, ecco il significato della tabella INTERPRETI-(TITOLI-SUPPORTI)

Ripeto, già questo schema non è strutturato. Come posso farlo?
Si dà il caso che non avrei intenzione di creare 2 tabelle AUTORI e INTERPRETI, poichè hanno gli stessi campi. Una volta avevo tentato di ricopiare ARTISTI in due query (con analoghi campi) AUTORI e INTERPRETI, ma la finestra delle relazioni non accetta l'intrusione di query.
Quale prassi ortodossa dovrei applicare per rendere, almento questa parte, strutturata?

3 Risposte

  • Re: Database strutturato

    A primo sguardo mi pare che la struttura ci sia...!

    L'unica cosa migliorabile è proprio quella che hai indicato ARTISTI-INTERPRETI... REGISTA...

    In sostanza si tratta di avere una Tabella unica con ANAGRAFICA, quindi assegni il ruolo solo quando assegni la persona al ruolo stesso...

    Ora devi decidere se approciare ad uno sviluppo Verticale quindi TITOLI-RUOLI
    ed in questa Tabella potrai avere per ogni TITOLO n(Autori), n(Registi), n(Interpreti)...
    quella tabella che hai chiamato AUTORI-TITOLI quindi dovrà essere GENERICA ed avere un campo
    aggointivo che ne definisce il RUOLO(Autore/Regista ecc...)
    In questo caso se vorrai inserire dei RUOLI puoi sempre farlo(Doppiatore ecc.. vado a naso).

    Chiaramente ho fatto un'analisi semplice e semplicistica...
  • Re: Database strutturato

    Allora riepilogando, il nuovo scenario si presenta così?

    ARTISTI
    idem come sopra

    TITOLI
    idem

    TITOLI-RUOLI (ex AUTORI-TITOLI)
    IDTR
    IDTitolo
    IDArtista
    Ruolo: testo

    SUPPORTI
    idem

    SUPPORTI-TITOLI (ex TITOLI-SUPPORTI)
    IDST
    IDSupporto
    IDTR

    scomparirebbe la tabella INTERPRETI-(TITOLI-SUPPORTI)

    Secondo quello che dici tu accade che
    SUPPORTI è in relazione molti-a-molti con TITOLI-RUOLI
    ho ridisegnato lo schema delle relazioni è la struttura ora c'è.
    Mi rimane qualche dubbio-problema:
    Secondo la vecchia strutturazione, quando un Titolo entra a far parte di un Supporto, automaticamente deve generare degli Interpreti (al di sotto) che stanno lì a giustificare quella presenza stessa. Devi sapere che la tabella SUPPORTI-TITOLI ha un campo Indirizzo che serve come indicazione di puntatore traccia (se ad esempio parliamo di un CD audio), che deve essere ovviamente-convenevolmente univoco: con il nuovo scenario, dovrei fare attenzione ad inserire in SUPPORTI-TITOLI soltanto gli IDTR con ruolo Interprete........ma accade che, se gli Interpreti sono molti, avrei duplicati sul campo Indirizzo.
    C'è qualcosa che non mi torna.
  • Re: Database strutturato

    Ah! no.........forse volevi dire quest'altro scenario: creerò una struttura minuziosa, poi la critichiamo:

    ARTISTI
    idem

    RUOLI
    Ruolo: testo (essendo univoco, può figurare come chiave primaria)

    ARTISTI-RUOLI
    IDAR
    IDArtista
    Ruolo

    TITOLI
    idem

    SUPPORTI
    idem

    SUPPORTI-TITOLI (ex TITOLI-SUPPORTI)
    IDST
    IDSupporto
    IDTitolo
    Indirizzo

    (SUPPORTI-TITOLI)-(ARTISTI-RUOLI)
    IDST-AR
    IDST
    IDAR

    oppure si potrebbe aggiungere il campo Ruolo alla tabella (SUPPORTI-TITOLI)-ARTISTI ignorando la tabella ARTISTI-RUOLI. Quest'ultima variante mi sembra più convincente.

    ...però continuo a non vederci chiaro.
    Con queste strutturazioni sarò costretto a dover ribadire ogni volta che inserisco un Titolo (in SUPPORTI-TITOLI) già esistente che ha Autore1, Autore2, Autore3...mentre doveva essere un discorso assodato da sè una volta per sempre nella tabella AUTORI-TITOLI.
    Per me AUTORI-TITOLI stabilisce una volta per sempre che un Titolo ha n Autori.
    Quando un Titolo entra a far parte all'interno di un Supporto, può generare m Interpreti. Questi ultimi anche e sempre diversi.
    Esempio: la canzone Yesterday è degli autori Lennon, McCartney una volta per sempre, ma può essere interpretata tanto dai Beatles, quanto da Tina Turner, lo stesso McCartney (da solo) o da Bruce Springsteen con Paul Simon e Neil Young che la cantano tutti e tre insieme, ma digitati tre volte nella apposita tabella INTERPRETI-(TITOLI-SUPPORTI) secondo la vecchia strutturazione.
    Boh, mi sto perdendo un po'.
Devi accedere o registrarti per scrivere nel forum
3 risposte