PDA

Visualizza la versione completa : [Access] Quali criteri per assegnare un ID unico letterale?


giorgiogio48
14-04-2011, 11:46
Ciao a tutti,
ho visto che nella tabella prodotti di nwind.mdb c'è un ID primario letterale. Non mi sembra molto facile questo assegnare ad un nuovo prodotto un ID che sia unico. Con quali criteri sceglierlo?
Grazie

alka
14-04-2011, 11:50
Originariamente inviato da giorgiogio48
Con quali criteri sceglierlo?


E' una domanda che non ha molto senso, così come è posta in senso assoluto, poiché i criteri dipendono dal progetto.

Un criterio che senz'altro è indispensabile è che il valore sia univoco. :stordita:

deleted_29
14-04-2011, 13:10
Originariamente inviato da giorgiogio48
Ciao a tutti,
ho visto che nella tabella prodotti di nwind.mdb c'è un ID primario letterale. Non mi sembra molto facile questo assegnare ad un nuovo prodotto un ID che sia unico. Con quali criteri sceglierlo?
Grazie Tipicamente riferendosi ad una qualche caratteristica (o insieme di caratteristiche) che si suppone univoche per il record.

Gli esempi tipici son tanti, dal codice fiscale, al codicefiscale giustapposto con alte informazioni (es. data iscrizione) per evitare [sia pur difficili] collisioni etc.

giorgiogio48
14-04-2011, 15:57
Grazie a tutti per le risposte.
Ecco la tabella clienti del database Northwind: sembrerebbe che L'ID venga formato prendendo alcune lettere del cliente, ma con quale criterio?

http://galileo2007.altervista.org/_altervista_ht/taBclienti.jpg
Però vi chiedo: non è più comodo scegliere in ID tipo contatore?

LeleFT
14-04-2011, 16:38
Originariamente inviato da giorgiogio48
Però vi chiedo: non è più comodo scegliere in ID tipo contatore?
Dipende sempre dall'organizzazione aziendale interna.
Per quanto riguarda i codici dei clienti si può essere d'accordo che un ID autoincrementante vada "meglio" (da un punto di vista pratico), ma non è sempre così.

Ad esempio, molto spesso i codici dei prodotti forniti da un'azienda sono dei codici cosiddetti "parlanti": il solo codice deve poter dare un'idea immediata del tipo di prodotto che esso identifica.

Se i codici dei prodotti fossero dei numeri (autoincrementanti), come si potrebbe capire che il codice 2487 e il codice 7239 sono due penne bic blu? E' impossibile.

Per questo le aziende tendono a costruire il codcie del prodotto usando diversi criteri. Ad esempio, si potrebbe pensare di costruire un codice nel seguente modo:

2 lettere identificano il tipo di prodotto
2 lettere identificano la marca
1 lettera mi identifica la variante (colore) del prodotto
5 caratteri numerici mi identificano un "progressivo"

Ecco che, ad esempio, "PEBIB00001" e "PEBIB00002" sono due PEnne, BIc, Blu e che il codice "PEBIR00001" è una PEnna, BIc, Rossa


Ciao. :ciauz:

deleted_29
14-04-2011, 19:17
Originariamente inviato da LeleFT
Dipende sempre dall'organizzazione aziendale interna...Ad esempio, molto spesso i codici dei prodotti forniti da un'azienda sono dei codici cosiddetti "parlanti": il solo codice deve poter dare un'idea immediata del tipo di prodotto che esso identifica...
La prima parte è assodata.
La seconda dipende dai casi.
"una volta" esisteva il problema dei "codici parlanti".
Anche oggi esiste, ma assai attenuato, il quanto la potenza delle macchine consente di fare ricerche lookup in tempo reale.

Traduzione: "una volta" il magazziniere doveva inserire il codice giusto, al primo colpo, tra i 20.000 del magazzino, altrimenti gli toccava fare ricerche lente (secondi e secondi) etc.

"oggi" mentre scrivi "qualcosa" è facile avere addirittura l'autocompletamento con tanto di proposta dei match più probabili, giacchè ricerche di sottostringhe per archivi (nella mia esperienza) di fino a 50 milioni di righe si possono effettuare in meno di 50 millisecondi
:mem:

Talvolta ci sono poi... neppure i codici, nel senso che si usano le vere e proprie descrizioni (ossia codici lunghi)

Il cliente non ha più quindi codice HTSM (=hotel sul mare), ma proprio HOTELSULMARE perchè si possono usare chiavi lunghe (a stringa) senza grandi problemi (oggi)
:mem:

giorgiogio48
14-04-2011, 19:32
Ringrazio franzauker e LeleFt per le molto gentili ed estese spiegazioni. Solo una cosa verrei chiedere: perchè l'ID Cliente deve parlare? L'utente non può capire di che si tratta leggendo la descrizione estesa nella colonna NomeSocietà?
Grazie ancora

LeleFT
15-04-2011, 10:43
@Giorgiogio48: come già detto, dipende dall'organizzazione interna dell'azienda. Ciascuna azienda ha i propri bisogni. Il codice cliente raramente è alfanumerico, ma ti assicuro che esistono dei sistemi (molto vecchi, ma ancora in uso) in cui lo stesso archivio usato per la memorizzazione dei dati dei clienti, viene usato per la memorizzazione dei fornitori. Basta aggiungere al codice (numerico) una "F" per fornitore o "C" per cliente. Ecco che un ID autoincrementante non è più valido.

@franzauker: tutto giusto, ma garantisco che non ho mai (e sottolineo MAI) trovato un'azienda che non abbia adottato un sistema di codifica dei prodotti usando direttamente la descrizione (specialmente in ambienti in cui viene usato SAP, e sono tantissimi). Vuoi per esigenze interne, vuoi per la burocrazia (il codice prodotto è necessario per una corretta gestione dell'inventario di magazzino, soprattutto quando si parla di magazzino fiscale), vuoi per la stampa di un catalogo per i clienti (credimi: non conosco 1 solo cliente che per l'inserimento dei prodotti in un ordine abbia la pazienza di indicare la descrizione, quando con il codice ci si impiega davvero pochissimo), vuoi per tante altre cose. Non confondiamo la ricerca di un prodotto con l'inserimento del codice nella riga ordine di un DB... è chiaro che la ricerca avviene tramite la descrizione (ma nemmeno tanto spesso: oggi si tende a ragionare per categorie), ma l'azienda ha sempre bisogno di un sistema di codifica che sia al contempo facile da leggere e non troppo lungo.
Per quanto riguarda il magazziniere, oggi ha anche a disposizione un bel PDT che legge i codici a barre... ma anche questi sono spesso codici alfanumerici.


Ciao. :ciauz:

deleted_29
15-04-2011, 12:41
Originariamente inviato da LeleFT
... Il codice cliente raramente è alfanumerico...mmhhh... "una volta" di sicuro.
Oggi non sarei così assertivo

@franzauker: tutto giusto, ma garantisco che non ho mai (e sottolineo MAI) trovato un'azienda che non abbia adottato un sistema di codifica dei prodotti usando direttamente la descrizione (specialmente in ambienti in cui viene usato SAP, e sono tantissimi) (...)Io invece ne ho trovate a migliaia :mame:

...credimi: non conosco 1 solo cliente che per l'inserimento dei prodotti in un ordine abbia la pazienza di indicare la descrizione, quando con il codice ci si impiega davvero pochissimo) (...)"una volta" sì.
Oggi, se i codici sono 25.000 (o magari 100.000), fai abbastanza fatica a ricordarti come si chiama il monitor samsung mod. XYZ, di colore rosso e piedistallo nero, che magari è arrivato ieri.
Se ha 10 codici da ricordare il problema non c'è.
"una volta" esistevano (in pratica) "solo" i codici, "dovevi" ricordarti che il cliente tizio aveva codice XYZ.

"Oggi", con lookup ed autocompletamento, le cose son cambiate.

Certamente le "prassi" non cambiano per chi usa strumenti ideati 20 anni fa (o più).
---
Tra l'altro mi pare che sei un pochino in contraddizione con te stesso...

Non confondiamo la ricerca di un prodotto con l'inserimento del codice nella riga ordine di un DB... è chiaro che la ricerca avviene tramite la descrizione (ma nemmeno tanto spesso: oggi si tende a ragionare per categorie), ma l'azienda ha sempre bisogno di un sistema di codifica che sia al contempo facile da leggere e non troppo lungo.Mah, essenzialmente direi che "oggi" serve principalmente per riportarli nei documenti (DDT, fatture).
Ma, nuovamente, gli approcci son diversi tra mini-magazzini, maxi-magazzini e "mega"-magazzini, dove un codice "parlante"... non parla affatto.


Per quanto riguarda il magazziniere, oggi ha anche a disposizione un bel PDT che legge i codici a barre... ma anche questi sono spesso codici alfanumerici.mmmhhh... codici a barre alfanumerici? E perchè mai?

Con riferimento, invece, a tutti quelli che non hanno il bene fisico (es. ufficio ordini) il codice a barre, ovviamente, non è utilizzabile.

---
Ue, non vorrei sembrare "talebano", vorrei solo dare una visione un po' articolata del "mondo", che non è affatto ristretto alle prassi di X, Y o Z.

E, in particolare, gli strumenti "nuovi", tipicamente, adottano strategie che quelli "vecchi" (seppur diffusi) non hanno.

Tutto qui :ciauz:

LeleFT
15-04-2011, 14:18
Originariamente inviato da franzauker
Io invece ne ho trovate a migliaia :mame:

Addirittura... sarà che siamo tutti così sfortunati (o fortunati, dipende dalle circostanze)... :D



"una volta" sì.
Oggi, se i codici sono 25.000 (o magari 100.000), fai abbastanza fatica a ricordarti come si chiama il monitor samsung mod. XYZ, di colore rosso e piedistallo nero, che magari è arrivato ieri.
Se ha 10 codici da ricordare il problema non c'è.
"una volta" esistevano (in pratica) "solo" i codici, "dovevi" ricordarti che il cliente tizio aveva codice XYZ.

L'azienda per cui lavoro tratta qualcosa come 30.000 articoli... e funziona così.
Anche per tutti i nostri competitors.



"Oggi", con lookup ed autocompletamento, le cose son cambiate.

Credo non valga in generale per tutte le realtà. Poi, si possono fare tutti i distinguo del caso... ripeto, io non ne ho trovato uno tu migliaia.



Certamente le "prassi" non cambiano per chi usa strumenti ideati 20 anni fa (o più).

E non sono così poche, credimi... C'è ancora gente che mangia usando quei sistemi e non solo in Italia.



Tra l'altro mi pare che sei un pochino in contraddizione con te stesso...
Dove?



Mah, essenzialmente direi che "oggi" serve principalmente per riportarli nei documenti (DDT, fatture).
Ma, nuovamente, gli approcci son diversi tra mini-magazzini, maxi-magazzini e "mega"-magazzini, dove un codice "parlante"... non parla affatto.

Che oggi il codice parlante non parli affatto è una questione completamente diversa: ma da qui ad assumere che vada sempre bene un codice numerico (come può essere quello di un ID autoincrementante) ce ne passa... un esempio su tutti: sai che bello, per un'azienda che espone i propri prodotti sul market place della pubblica amministrazione (CONSIP), avere gli stessi codici "dal punto di vista alfanumerico" di quelli della concorrenza? Se tutti usassero i codici numerici per i prodotti sarebbe un bel problema. Le aziende vogliono che i loro codici corrispondano ai loro prodotti e questo si ottiene solo costruendo i codici in modo quanto più possibile diverso dagli altri in modo da ottenere il minor numero di collisioni... Poco importa che il mio codice 123 corrisponda ad una penna, mentre il codice 123 della concorrenza corrisponda ad un Hard Disk... se il cliente inserisce "123" c'è la possibilità che la sua attenzione sia attirata verso i prodotti della concorrenza. Giusto per dirne una: non mi pare che aziende come HP usino per i loro prodotti dei codici numerici...



mmmhhh... codici a barre alfanumerici? E perchè mai?

Per il punto visto sopra.



Con riferimento, invece, a tutti quelli che non hanno il bene fisico (es. ufficio ordini) il codice a barre, ovviamente, non è utilizzabile.

Questa non l'ho capita...



Ue, non vorrei sembrare "talebano", vorrei solo dare una visione un po' articolata del "mondo", che non è affatto ristretto alle prassi di X, Y o Z.

Ma infatti, qui si discute, mica si vuole fare altro... dal mio punto di vista, comunque, mi pare che sia una prassi più diffusa quella di usare codici alfanumerici piuttosto che codici numerici autoincrementanti.



E, in particolare, gli strumenti "nuovi", tipicamente, adottano strategie che quelli "vecchi" (seppur diffusi) non hanno.

Indubbiamente.


Ciao. :ciauz:

Loading