Newsgroup: it.comp.appl.access
Titolo: stuttura dati particolare: campi diversi per categorie di record diversi

Allora, vediamo un po'...
Una tabella di anagrafica base con una serie di informazioni comuni ad 
oggetti che non sono omogenei tra loro (stiamo in ambito di impianti 
petroliferi, si codificano tutte le parti d'impianti, dalla valvoletta al 
pompone)
A questo punto mi viene richiesto di memorizzare i cosiddetti attributi, 
cioè delle info aggiuntive che vanno al di là dell'anagrafica base comune.
Il problema è che questi attributi non sono comuni ad oggetti diversi.
Per esempio, per un "buzzico" (recipiente a pressione) ci può essere 
dimensione e pressione max, per un trasmettitore il range di taratura e così 
via.
Se fossero poche categorie di oggetti (N) con pochi attributi l'uno (M), uno 
potrebbe pure pensare per semplificare, di aggiungere N*M campi 
all'anagrafica e vorrà dire che molti rimarranno vuoti e solo quelli della 
categoria riempiti.
Ma non è così:
N è 30 circa, M è in media 7/8 campi
Il tutto poi dovrà comportare opportune maschere di inserimento che dovranno 
essere diverse a seconda della categoria a cui appartiene l'oggetto 
selezionato.
Come strutturereste voi i dati, secondo queste problematiche.
Mi sto facendo un'idea, ma ogni contributo è ben accetto.
Grazie
Antonio 

Antonio Biso ha scritto:







Una tabella caratteristiche, dove metti IDogetto, IDcaratteristica e
Valore. Con chiave primaria doppio campo IDoggetto-IDcaratteristica per
evitare di inserire due volte la stessa caratteristica su un oggetto.
Eventualmente anche una tabella Correlazioni oggetti-caratteristiche che
indichi quali caratteristiche sono disponibili per ciascun oggetto, in
modo che non si possa andare a caricare una capacità in litri su un
bullone.
La maschera di inserimento è unica per tutte le tipologie di oggetto, una
maschera principale (Oggetto) con sottomaschera (Caratteristiche).
Ciao.
-Marco-
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


se gli attributi sono di qualità diversa per i vari oggetti, anzichè 
prevedere N*M campi, secondo me è meglio
prevedere i 7/8 campi di descrizione 'caratteristica_1' , ' 
caratteristica_2',...
in cui inserire gli attributi salienti di ciascuno, ( anche se eterogenei 
dai precedenti )...


;-{)   Mi ricorda un mio vecchio mal di testa. Nel mio caso gli N erano 
di meno (serbatoi, condotte, valvole, impianti, linee).
Il consiglio di Namor e' da seguire e la quantita' di M diventa ininfluente.
--
ac

 - Show quoted text -
Ciao Anto' (ti ricordi ancora di me ??ma ndo stai, quale impianto ? io
in kazakhstan ancora:-))); mi permetto di darti un suggerimento dato
che l'ho usato (peraltro e' una cosa simile a quanto suggerito da
Marco);secondo me dovresti crearti una tabella di Classi dove per
ognuna Classe hai degli attributi. Dopo di che associ la classe al tuo
Equipment (anagrafica) e la form di inserimento (tramite un pulsante o
qualsiasi altra cosa) sara' sempre la stessa , ma cambiera' il
contenuto che visualizzera' solo gli attributi corrispondenti alla
Classe dell'equipment. Io la vedo come una cosa pulita e semplice;
ovvio che bisogna vedere quante classi hai, ma ritengo comunque che ne
avrai vantaggio dopo. Una volta create sono quelle di solito e, male
che vada, ne aggiungi una due.... Che dici ???
P.S. ti ho visto l'altra settimana in TV (torneo a s. marinella) :-))))


Io sta cosa l'ho fatta per il programma di gestione cespiti...
Tabella "tbl_Beni" :
cmp_ID
cmp_Categoria
cmp_Descrizione
cmp_Matricola
Tabella "tbl_Beni_attributi" :
cmp_ID
cmp_ID_Bene 'collegamento alla "tab_Beni"
cmp_Descrizione
cmp_Tipo_Valore
cmp_Valore
in questo modo hai semplicemente un corpo "attributi" dove mettere ciò
che ti pare in verticale...
nulla di più semplice... alla fine è un record padre con dei records
figli (tipo testata fattura corpo fattura)

 P.S. ti ho visto l'altra settimana in TV (torneo a s. marinella) :-))))
Hai visto che bello, davanti all'infamona? bella gnocca cmq...
:-D
Antonio


Sergio ha scritto:



Non ho capito, perdonami...


 Antonio Biso ha scritto:








Ho la sensazione di non essere riuscito a spiegare la situazione perchè
tutte 'ste soluzioni non mi risolvono il problema. Faccio un esempio
Categoria Filtri
Gli item possono avere come tag
MA - MB - MC
Categoria Trasmettitori
LT - PT - FT - TT
I filtri hanno come attributi:
dimensione
pressione
fluido
i trasmettitori hanno
min
max
supponiamo che io prepari una tabella con tutte le categorie
1 MA
1 MB
1 MC
2 LT
2 PT
2 FT
2 TT
a questo punto non riesco proprio a creare la struttura dati
intanto devo avere un'altra tabella che mi dice quali sono i campi per
ogni ID di categoria
Una volta che ottengo ciò, devo associare ad ogni Item di ogni categoria i
suoi campi attributi e salvare da qualche parte i valori per ogni
attributo di quell'item.
Pablito dice in verticale...ù
ma se lo faccio in verticale devo usare per forza poi una sottomaschera a
foglio dati per esempio, non ho tutti gli attributi sulla stessa form a
maschera semplice.
e cmq come faccio a creare gli n record in verticale, per ogni attributo?
Ce li schiaffo a prescindere? 
Così se c'ho 100000 item e una media di 10 attributi, mi si popola una
tabella con un miglione di record!!!
Oppure posso dire: apro la form anagrafica, selezionando un item c'ho la
categoria e quindi (quindi per modo di dire) i suoi attributi.
L'utente seleziona quelli da riempire e cliccando l'attrbiuto e inserendo
un valore lo aggiunge alla sottotabella in verticale.
Però non mi convince per niente...
SIGH
Antonio


 ininfluente.
ma namor chi?
Antonio 


Ho una senilita' galoppante ma Pizzamiglio credo sia la nuova anagrafica 
del "vecchio" Namor.
--
ac

 ha scritto nel messaggio 
news:1NMko.2171$%a....@tornado.fastwebnet.it...

ah ok
perņ continuo a non riuscire a trovare la luce
Antonio 

NESSUN ALTRO RISCONTRO?
sigh...
Antonio 

 Pablito dice in verticale...ù


Ecco, questa è l'idea. Selezioni l'item (maschera principale) e nella
sottomaschera vai a caricare gli attributi.
Le righe per ogni attributo le inserisci una per una a mano nella
sottomaschera, oppure le crei già prima con una query di accodamento così
poi ti rimangono solo da inserire i valori.
Per gli oggetti futuri prevedi un pulsantino e un paio di righe di codice
che creino in automatico le righe IDoggetto - IDattributo.
Se hai 10.000 oggetti e una media di 10 attributi avrai un milione di
record, sì, ma non hai molte alternative. La struttura dati organizzata in
questo modo è normalizzata, poi sarà molto facile gestirla e fare ricerche.
Se invece scegli di aggiungere N coppie di campi direttamente nella
tabella Oggetti (IDattributo1-Valore1, IDattributo2-Valore2,...) vai
incontro a due problemi:
1. le ricerche saranno complesse e più lente, avrai bisogno di filtri
lunghi tipo
(IDattributo1=5 And Valore1=10) Or ... Or (IDattributoN=5 And ValoreN=10)
2. prima o poi ti capiterà un oggetto che ha bisogno di N+1 attributi
(legge di Murphy)
Sorge un altro problema: il tipo di dati del valore, che può essere
numerico intero, numerico con decimali, testo (es: un colore), ecc...
Se i valori non ti servono per fare calcoli consiglio di usare un campo
testo e risolvi il tutto, ma è probabile che ti servano i numeri per
cercare portate, pressioni, ecc... che siano maggiori o minori di un certo
valore.
Ciao.
-Marco-


 questo articolo e` stato inviato via web dal servizio gratuitohttp://
www.newsland.it/newssegnala
 gli abusi ad ab...@newsland.it- Hide quoted text -


 Antonio
A beneficio di chi ha seguito la cosa alla fine ho risolto cosi
tabella categorie con un progressivo e tutti i codici tipo facenti parti 
delle categorie
tabellone da 119 campi
nel tabellone, per ogni campo, nella proprietą descrizione ho messo i numeri 
delle categorie che hanno quel campo come caratteristico, qualcosa tipo 
,3,9,12,23,
le delimitazioni con le virgole all'inizio e alla fine sono importanti per 
la ricerca.
poi mi sono fatto una struttura a schede, con 28 linguette
ogni linguetta ha solo i campi della categoria di quella linguetta
la linguetta si chiama proprio col numero della categoria
Quando seleziono un record, vedo il suo codice tipo, vado nella tabella 
categorie e trovo il numero di categoria
da codice nascondo tutte le linguette e faccio vedere solo quella del numero 
della categoria
se voglio esportare i dati di una certa categoria, e quindi un sottoinsieme 
dei 119 campi, selezionato il numero di categoria ciclo sui campi e se quel 
numero č nella proprietą descrizione lo utilizzo creando dinamicamente una 
query di selezione
quella query con solo i campi selezionati la uso per l'esportazione
sporchi trucchi, ma alla fine funzionano...
Antonio