Newsgroup: it.comp.software.database
Titolo: colori e articoli

ciao
pedonate se ripropongo un quesito che io stesso ho posto qualche
settimana fa. ma la situazione e' cambiata con sviluppi (dal punto
di vista teorico) che potrebbero essere interessanti/utili.
la situazione e'
articoli {articolo_id, articolo_desc }
varianti {variante_id, variante_desc }
articoli2varianti {variante_id, articolo_id}
ora, capita spesso che nella tabella varianti vengano inseite cose
come:
"giallo paglierino tendente sul rosso"
"blu mare di scozia"
"rosso sbiadito a righe bianche pernice"
:o)
e cose strambe cosi', che per ovvi motivi sono sempre legate ad un solo
articolo. se poi si pensa che le varianti devono essere ricercabili
trovarsi nel select di ricerca una cosa come "blu mare di scozia" non
e' molto simpatico.
partendo dal fatto che avrei la possibilita di rifare lo schema del db
avrei pensato a qualcosa del genere
articoli {articolo_id, articolo_desc }
varianti_riferimento {variante_riferimento_id, variante_riferimen_desc}
varianti {articolo_id, variante_desc, variante_riferimento_id }
nella tabella varianti avrei dati di questo tipo
articolo_id | variante_desc          | variante_rif_id | id
------------+------------------------+-----------------+----
AAAAAAAAAA1 | Blu di scozia          | BLUE            | 1
AAAAAAAAAB2 | rosso sbiadito a righe | ROSSO           | 2
AAAAAAAAAB2 | rosso di foglia d'aut. | ROSSO           | 3
AAAAAAAAAB2 | rosso della muleta     | ROSSO           | 4
AAAAAAAAAC3 | giallo avorio          | GIALLO          | 5
AAAAAAAAAC3 | giallo paglierino      | GIALLO          | 6
dove quindi storerei i dati di tutte le varianti una a molti
(un articolo N varianti) con un riferimento alla variante "vera"
quella per cui farei le ricerche (variante_riferimento_id).
contro: la tabella avrebbe un pk surrogata (autonumber o giu' di li)
che ne pensate?
grazie
Rob

 contro: la tabella avrebbe un pk surrogata (autonumber o giu' di li)
Non mi sembra un problema drammatico... ;)
Ma ora in questa tabella:
 > varianti {variante_id, variante_desc }
cosa utilizzi in variante_id?
Ciao,
Paolo

 cosa utilizzi in variante_id?
il tipo di dato? un varchar(5), ma non ha molta importanza, credo...
grazie
Rob

 il tipo di dato? un varchar(5), ma non ha molta importanza, credo...
No, volevo capire come generavi questo id (non ho seguito il thread 
precedente...).
Ciao,
Paolo

 varianti {articolo_id, variante_desc, variante_riferimento_id }
Non riesco ad estrarci alcun senso, se non vedendola esclusivamente
dal punto di vista di una query che la interroghera'.
Quello che era uno schema semplice ed intuitivo, e' stato ora reso
farraginoso; quali entita' esattamente descrivono? Hai provato ad
enunciare il predicato di ciascuna relazione? Cosa identifica
la PK qui sotto?
Se volevi semplificare le ricerche, ora e' possibile avere varianti
uguali per articoli diversi, tipo:
Articolo      Variante                 Colore Dominante  PK
-----------------------------------------------------------
AAAAAAAAAA1 | Blu di Scozia          | BLUE            | 1
AAAAAAAAAB2 | Blu di Scozia          | BLUE            | 2
con conseguenze che l'utente si potrebbe ritrovare a video il
fatto assolutamente controintuitivo di vedere due volte "Blu di
Scozia", dato che non e' la chiave primaria, ma una descrizione
(e quindi attributo semplice) di due varianti diverse.
Dovrebbe pertanto l'utente essere messo al corrente che "in realta'"
sono due varianti e non una? Magari esponendo l'ID autogenerato?
Mi sembra che hai significativamente complicato lo schema senza
guadagno.

 guadagno.
Quoto.
Secondo me la strada migliore da intraprendere è creare una tabella 
delle varianti già predisposta, con tutte le opzioni colore possibili.
D'altronde esistono diverse "scale" di colore (tipo la Pantone) 
esattamente per questo scopo.
Quindi l'OP potrebbe tornare alla struttura originale:
articoli {articolo_id, articolo_desc }
varianti {variante_id, variante_desc }
articoli2varianti {variante_id, articolo_id}
sostituendo solo in "varianti" l'ID autoincrementante con un campo 
"codice colore" derivato dalla scala colori che usano in azienda.
Poi la descrizione colore è opzionale, quello che fa testo è il codice 
colore così si evita che due utenti possano inserire lo stesso colore 
(variante) con due nomi leggermente diversi (es. blu scozia -> blu di 
scozia).
Ciao,
Paolo

 Dominante
Colore Dominante dipende funzionalmente da Variante, ed e' superflua.
Ne consegue inoltre che la tabella non e' ben normalizzata...
Sono d'accordo che bastava una piccola estensione allo schema originale.
bye