Newsgroup: it.comp.appl.access
Titolo: Struttura db albi originali e tradotti

salve,
io ho sbattuto la testa parecchio tempo alla ricerca di una struttura
efficace per un db in grado di gestire correttamente albi originali e
tradotti. L'unico modo (imho) per farlo e' di prescindere dall'albo
come elemento minimo di archiviazione e di concentrarsi sulla Storia,
intendendo come Storia le tavole originali che costituiscono una
unita' narrativa all'interno di un albo, generalmente portatrice di un
titolo. A questa vanno collegate una tabella lookup di Cornici/Saghe
(dove archiviare le informazioni relative a macrostorie che includono
storie diverse, per esempio Knightfall di Batman o le saghe di
Sandman...), e - con relazione molti a molti - una tabella di Numeri
(dove archiviare le info relative alla effettiva pubblicazione delle
storie). La tabella di collegamento, Episodi, contiene oltre agli
ID_Storia e ID_Num, un campo Parte, che rende possibile archiviare
storie spezzettate in piu' parti.
Mi fermo qua. Se interessa, posso postare alcune note relative alla
struttura di questo db che iniziai tempo fa e che - a livello teorico
- gestisce egregiamente ogni tipo di fumetto (a parte le strisce), sia
esso graphic novel, serie, miniserie, tradotto od originale. Dico *a
livello teorico*, perche' da mesi ormai sono impantanato fra query,
maschere e report... Magari questa potrebbe essere l'occasione per
trovare soluzioni ai miei dubbi.
Fatemi sapere. Un saluto e scusate se ho violato qualche regola del
ng, non inserendo un riferimento ai msg anteriori, per esempio....
Vorce

Io ho affrontato la cosa in maniera un pò diversa, gestendo l'entità Testata
(ovvero la serie che traduce) come contenitore di entità
Episodio creando una relazione molti a molti.
Sarei comunque interessato a verificare quello che hai fatto tu (anche in
vista di un porting in Oracle).
Byez

...

Collegando direttamente la Testata (intesa come serie che traduce) con
gli Episodi (quello che nel mio db ho definito Storie) ti trovi dati
ridondanti nel momento in cui un Episodio viene pubblicato su diverse
Testate (ristampe, antologie, etc.)
Come dicevo nel precedente post, il cuore del mio db e' il seguente
(semplifico, eliminando alcuni campi, i campi indice e alcune tabelle
lookup):
Storie m<->m Numeri m<->m Testate
( m<->m = relazione molti a molti)
Nella tabella Storie vanno le informazioni sulla Storia in se', cioe':
-Titolo Originale
-Titolo Tradotto
-Anno di creazione (di copyright)
-Capitolo (se forma parte di una macrostoria (Knightfall di Batman,
per es.))
-ID_Cornice (riferimento alla macrostoria corrispondente)
Nella tabella Numeri vanno i dati dell'albo, ovvero della parte
fisicamente toccabile dei giornaletti:
-Numero (testo, per poter immettere anche le stranezze, tipo 1/2, -1,
'unico')
-Numero Sequenziale (numerico)
-Data
-Collezione (si/no)
-ISBN (attivo solo se la Testata a cui fa riferimento ha il valore del
campo Genere=Libro)
-Edizione (idem)
-Cover (immagine della copertina, campo di testo o ipertesto a seconda
di come lo si vuol trattare)
Nella tabella Testata vanno i dati della Testata, cosi' come appaiono
sulla copertina dell'albo (se e' un albo) o del libro (se e' un libro)
o del trade paperback o della graphic novel.
-Testata
-Numero Iniziale (attivo solo se il Genere=Serie o Miniserie)
-Numero Finale (idem)
-Genere (TPB, serie, miniserie, libro, etc.)
-Periodicita'
-Collana (ad es. Vertigo della DC)
-Editore
-Rilegatura (brossura, rilegato, spillato, etc.)
In questi ultimi cinque campi in realta' ci sono i riferimenti alle
rispettive tabelle di lookup (Dubito della loro effettiva utilita', a
parte quella dell'Editore; per risparmiarsi problemi forse sarebbe
meglio includere i valori direttamente nella tab Testata).
Ovviamente, dato che ci sono due relazioni m. a m., esistono le
oportune e necessarie tabelle di collegamento. Quella fra Storie e
Numeri si chiama 'Episodi' e serve anche per poter archiviare una
storia divisa in piu' parti senza ripetere i dati della storia.
Infatti i suoi campi sono:
ID_Episodio*
ID_Numero
ID_Storia
Parte
La tabella di collegamento fra Numeri e Testate si chiama 'Annate' e
serve anche a tener conto di numeri pubblicati su piu' testate. I
campi sono:
-Volume (l'annata; potrebbe essere un campo calcolato a partire dai
numeri, dalla data e dalla periodicita', ma il calcolo non e' cosi'
facile come sembra. Ad es. in Italia i mensili escono 11 volte
all'anno...)
-ID_Testata
-ID_Numero
-ID_Annata*
Il post sta diventando chilometrico, ma credo sia necessario per
capirci qualcosa.
L'ultima tabella degna di nota e' la tabella 'Cornici', collegata a
Storie, dove si tiene conto delle cornici, o macrostorie che collegano
fra loro storie uscite su testate diverse (vedi le varie saghe Marvel,
o il titolo che raggruppa varie storie di Sandman fra loro, ad es.) I
campi della tab Cornici sono:
ID_Cornice
Titolo originale
Titolo italiano
Questa struttura permette di archiviare in modo normalizzato qualunque
tipo di fumetto, a prescindere dal suo formato fisico (sempre che non
siano strisce e sempre che sia possibile suddividerlo in Storie).
Se non e' chiaro, in un prossimo post o pvt posso dare qualche
esempio.
Ah: ovviamente sto impazzendo con le Subform...

Taglio tutto per precisare solo una cosa.
La struttura da te adottata č sostanzialmente identica, in quanto anche io
ho pervisto una tabella di collegamento tra
testata e episodio cosě da gestire episodi tradotti su piů albi.
Facciamo un esempio: il numero 1 di Amazing Spider-man (id_episodio=1) č
stato tradotto sul diversi albi, supponiamo Uomo Ragno 1 (id_testata=1) e
Uomo Ragno Gigante (id_testata=2).
Nella tabella di collegamento avremo le associazioni 1 <-> 1 e 1<->2 cosě da
avere un solo record nella tabella degli episodi.
Quindi, pur con le dovute eccezioni, mi sembra che l'approccio sia simile.
Comunque se vuoi possiamo continuare in privato.
Come hai gestito gli autori? Io, ad esempio, ho creato un apposita tabella
anagrafica Autore collegata all'Episodio tramite una tabella di associazione
che definisce il ruolo dell'autore (disegnatore, sceneggiatore, chine: la
stessa persona puň assumere ruoli diversi).
Bye