Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - Berserker79

Pagine: 1 [2] 3 4 ... 14
16
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 25 Gennaio 2016, 08:02:08 »
Ciao Gianluigi, che ne pensi di ritornare alla progettazione classica del database, lasciando stare le tabelle ereditate?

17
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 23 Gennaio 2016, 00:34:48 »
Ciao Gianluigi, finalmente ho potuto dare un'occhiata a quanto hai proposto. Devo riguardarlo meglio, ma ti posso già anticipare che personalmente non condivido la scelta di inserire nella tabella anazie i campi idcli, idfor, ecc.. opterei per inserire nelle tabelle dei clienti e dei fornitori, il campo idazi. Potremmo anche pensare di non mettere direttamente nella tabelle clienti e fornitori il campo dell'azienda, ma gestire questi legami su altre tabelle. Fammi sapere cosa ne pensi.
Mi spiace di non poter partecipare più assiduamente, ma spero a breve di poter contribuire maggiormente.
Ciao.

18
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 07 Gennaio 2016, 19:53:54 »
Ciao Gianluigi, purtroppo adesso sono sommerso di lavoro e non ho tempo di verificare quanto hai postato.
Spero nel fine settimana di trovare uno spazietto per dargli un'occhiata.

19
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 03 Dicembre 2015, 21:16:09 »
Ciao Gianluigi,
come hai specificato, vuoi iniziare con l'analisi della documentazione presso il cliente,
quindi sareppe opportuno fare un riepilogo dei documenti necessari a tale scopo, verificando quelli già in nostro possesso, in modo da non reperire dei doppioni.
Cosa ne pensi/pensate?

Per la questione del nome dei campi e delle eventuali abbreviazioni, anche se adesso è prematuro parlarne,
dipenderà tutto (credo) dalla decisione di stabilire una lunghezza fissa per il nome del campo, che inevitabilmente obbliga a delle abbreviazioni più o meno estreme.
Ciao.

20
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 22 Novembre 2015, 18:15:13 »
Ciao Gianluigi,
se ho capito bene, hai postato un esempio di come vorresti gestire sul db la tabella relativa alle offerte, in particolare nell'ultima pagina dove proponi i possibili campi?

Allego il tuo file dove ho apportato alcune modifiche e aggiunte (ultima pagina) secondo la mia idea di come andrebbe impostata la tabella.
Se ho frainteso il tuo precedente post, mi spiegherai meglio cosa intendevi.
Ciao.

21
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 22 Novembre 2015, 09:20:05 »
Forse ma non sono sicuro Tornu potrebbe avvicinartisi però ama le abbreviazioni tipo piva al posto di partitaiva (o partita_iva).
Berserker79 vorrebbe tutto maiuscolo PARTITA_IVA, io il CamelCase  PartitaIva e se non ho capito male tu semplicemente partitaiva.
Be insomma altrimenti non saremmo italiani.  :D
Almeno in questo caso siamo d'accordi in due, anch'io come Tornu preferisco abbreviare laddove possibile. Gli esempi che ho postato erano solo...esempi.
Per quanto riguarda il tutto maiuscolo apprezzato da Berserker79, purtroppo come hai già scoperto è PostgrSQL stesso che pone dei vincoli e dover scrivere sempre i nome racchiusi tra doppi apici può portare ad errori, oltre che complicare la vita.

Non sapevo che postgrsql volesse i campi in maiuscolo racchiusi fra virgolette, quindi inutile discuterne, si vada per il tutto minuscolo.
Anche io sono d'accorso sull'usare le abbrevazioni per tabelle e campi, usando lo stesso nome per un campo che si trova su più tabelle.
Ad esempio, l'ipotetica tabella "clienti" avra il campo "cliente_id" che sarà chiave primaria, mentre la tabella "ordini_clienti" avra sempre il campo "cliente_id" anche se qui non è parte della chiave primaria.

22
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 19 Novembre 2015, 21:09:28 »
Ciao Gianlugi, per il discorso della nomenclatura, per me va bene quanto proposto da te, anche se io solitamente scrivo tutto in maiuscolo.

23
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 18 Novembre 2015, 19:24:03 »
Ciao Gianluigi, ci tengo a precisare che rispetto il tuo impegno nel voler realizzare un db come si deve e che non mi permetterei mai di deridere il tuo lavoro.

Il mio dubbio sulle chiavi esterne nasce dal fatto che sia sul db del gestionale che sul db della BI, non ne usiamo.
Pensiamoci bene, per garantire l'integrità dei dati, come vuoi gestire le chiavi esterne, vuoi creare una chiave esterna per tutti i campi attributo di una tabella?
Oppuere vuoi crearla solo per alcuni campi o solo per alcune tabelle?

Io non le ho mai usate, ma ritengo richiedano un maggiore impegno e tempo da dedicare alla realizzazione del db.
Ma anche con le chievi esterne, sul gestionale dovrai comunque attivare i controlli sull'immissione da parte del personale.
Quindi, perchè non dirottare tutto il controllo sul gestionale?
Io sul db, metterei solo il vincolo affinche i campi non possano assumere valori null.

In questi giorni vedo di recuperare del materiale sulle tabelle della contabilità e le posto.
Ciao.

24
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 18 Novembre 2015, 07:23:08 »
Ciao, sono in dubbio sul mettere il prefisso della tabella prima del nome del campo.
Se lo stesso campo, presente su due tabelle diverse, ha una chiave esterna, la chiave esterna come la imposti?
E poi, vuoi veramente usare le chiavi esterne? Perché non affidare al programma il controllo sull'immissione dei dati, tanto l'utente finale non credo che effettuerà mai dei lavori direttamente in sql sul db, ma lavorera solo tramite il gestionale.

Ritornando al discorso delle sequenze, valuta l'idea di utilizzare delle tabelle dove scrivere l'ultimo numero utilizzato, magari abinandolo all'anno.
Sul gestionale su cui lavoro, molti progressivi (fatture, bolle, registri iva, ecc.), sono insertiti in tabelle dove trovi il campo anno, il codice protocollo, e l'ultimo numero utilizzato.

25
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 15 Novembre 2015, 06:16:11 »
Citazione
Lo storico va tenuto per il prezzo e non per le descrizioni. Nel caso del cambio di una specifica, non la si aggiorna, ma si crea una nuova posizione lasciando inalterata la vecchia.
Puoi farmi un esempio, non mi è molto chiaro cosa fai, attivi un campo obsoleto?


Ciao,
mettiamo che tu abbia due categorie di punti vendita, una categoria per punti vendita di piccoli dimensioni con un tipo di assortimento di articoli alla vendita, e l'altra per punti vendita di grandi dimensioni con un assortimento di articoli più ampio.
Mettiamo che per i primi pv utilizzerai il listino AAA e per i secondi il listino BBB.
Ad un certo punto, decidi di utilizzare per tutti i pv il listino BBB, quindi il listino AAA non verrà più utilizzato.
Il listino AAA va lasciato comunque in modo da trovare i dati per interogazioni sui pv della prima categoria, in date in cui avevano associato il listino AAA.
Nel caso si decida di non utilizzare più il listino AAA e che questo non debba essere più visibile nel gestionale per l'uso da parte del personale, si può abilitare un campo  che indica che quel listino non è più valido e quindi il gestionale, sa che deve scartarlo.
Prima di cancellare effettivamente dei record, bisogna considerare l'importanza del tipo di dato. Ad esempio, la tabella degli ordini clienti è gestita in modo che un ordine se cancellato, può essere ripristinato.
Questo perchè le righe non vengono cancellate veramente, ma viene attivato un campo che sta ad indicare se il record è cancellato o no.
Nel caso dei listini, io farei la stessa cosa, terrei tutto quello creato. Proprio questo fine settimana ho dovuto valorizzare dei movimenti a partire dal 2011 ad oggi, ripescando il prezzo associato ad ogni articolo per ogni movimento giornaliero.

Stai prevedendo di inserire nelle tabelle (almeno quelle più importatnti) dei campi dove indicare data, ora e utente che ha inserito/modificato/cancellato il record?
Ciao.

26
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 10 Novembre 2015, 19:50:38 »

la tabella dei listini, ha due colonne che servono a stabilire i periodi di applicazione del listino, inizo periodo e fine periodo.
Questi due campi ti permettono di avere uno storico del listino, mentre se io aggiornassi il prezzo sempre sullo stesso record non potrei fare dei controlli a ritroso sulle variazioni del prezzo.
Ad adempio, oggi ordino al fornitore x, l'articolo y al prezzo z. Successivamnete il fornitore mi comunica un cambio prezzo, che vado a sovrascrivere al prezzo precedente.
Al momento della consegna dalla merce che avevo ordinato, come faccio a verificare se il prezzo che mi ha applicato è quello corretto alla data del mio ordine, tenendo anche conto che la fattura può arrivare anche diverso tempo dopo la data del mio ordine?
Per quanto riguarda la gestione della tabella, ovviamente le date fanno parte della chiave primaria, in modo che il listino non possa avere a partire dalla stessa data due prezzi differenti.


Ciao Berserker79

Allora se capisco bene, visto che comunque per vari motivi occorre mantenere (almeno in parte) i listini storici che possono essere ripescati in base alla data (periodo da a) a questo punto diventa superfluo in RigheOrdini (intendo la tabella di collegamento fra ordini e articoli, OrdArt nel mio esempio) inserire il prezzo dell'articolo venduto, lo si potrebbe ripescare con una view o una query oppure sarebbe troppo complicato? O non è così che si fa normalmente?
Mantenete lo storico solo dei prezzi o anche quello delle descrizioni o/e specifiche? Se non lo mantenete come fate nei periodi di transizione?
Forse la cosa più giusta sarebbe quella di mantenere l'intero listino descrizioni comprese e poi darsi una regola di business che non so dopo 50 anni si rimuovono dal database. Ammesso che fra 50 anni ci siano ancora i computer.  ;D
 :ciao:

Ciao, nella tabella degli ordini metti anche il prezzo in modo da avere accesso immediatamente all'informazione evitando join fra le tabelle dei listini.

Lo storico va tenuto per il prezzo e non per le descrizioni. Nel caso del cambio di una specifica, non la si aggiorna, ma si crea una nuova posizione lasciando inalterata la vecchia.

Noi gestiamo tre tipi di listino su tre tabelle differenti, listini di acquisto, listini di cessione e listini di vendita al pubblico.
I listini di cessione/pubblico sono composti da tre campi che permettono di classificare il listino come listino standard, oppure offerta, oppure netto ecc.
Il sistema così composto, ci permette di tenere attivi più listini da poter utilizzare per le varie fasce di clienti.

27
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 09 Novembre 2015, 20:00:43 »
Ciao Berserker79,
ho trovato dove avevo letto la notizia, spero ti sia utile.

 :ciao:

Grazie per il link, appena posso faccio qualche prova e vi faccio sapere.

28
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 08 Novembre 2015, 14:48:23 »
Citazione
Vuoi dire che una grande tabella fa da base a delle viste di supporto, intendi questo quando parli di tabelle minori?

Si tratta di una tabella che nella prima colonna ha inserito il codice/nome della tabella minore, mentre nel secondo campo sono inseriti tutti i dati degli altri campi della tabella minore.
Faccio un esempio:
la tabella minore TBEAN, gestisce il tipo ean, al suo interno troviamo le colonne "TIPO EAN", "CODICE EAN", "EAN ABILITATO".
Nella tabella reale troveremo i dati in questo modo
CODICE_TABELLA  DATI_TABELLA
TBEAN                       E1234567890123S

il dato presente nella colonna "DATI_TABELLA" contiene il carattere E che va associato alla colonna "TIPO EAN", i caratteri 1234567890123 da associare alla colonna "CODICE EAN"
e il carattere S che va associato alla colonna "EAN ABILITATO".

Citazione
La mia tabellina ordini era solo per provare, l'ho estrapolata da un piccolo esempio che avevo tirato giù per parlare di Pragma in SQLite con Picavbg non ha nessuna pretesa di rappresentare una vera tabella, mi incuriosisce molto il fatto che, se capisco bene, nella tua azienda avete lo stesso listino con prezzi diversi distinti solo dalle date differenti. Ho capito bene? Ma se così fosse non c'è rischio di errori? Questo non si scontra con l'univocità nelle relazioni? Pensandoci bene forse è indispensabile un periodo di transazione fra i listini che permetta di smaltire il vecchio sul fronte della contabilità prima di entrare a regime. È per questo motivo che ci sono listini uguali con date e prezzi diversi? Immagino quindi che la chiave primaria preveda incorporata la data oppure la chiave è composita?
la tabella dei listini, ha due colonne che servono a stabilire i periodi di applicazione del listino, inizo periodo e fine periodo.
Questi due campi ti permettono di avere uno storico del listino, mentre se io aggiornassi il prezzo sempre sullo stesso record non potrei fare dei controlli a ritroso sulle variazioni del prezzo.
Ad adempio, oggi ordino al fornitore x, l'articolo y al prezzo z. Successivamnete il fornitore mi comunica un cambio prezzo, che vado a sovrascrivere al prezzo precedente.
Al momento della consegna dalla merce che avevo ordinato, come faccio a verificare se il prezzo che mi ha applicato è quello corretto alla data del mio ordine, tenendo anche conto che la fattura può arrivare anche diverso tempo dopo la data del mio ordine?
Per quanto riguarda la gestione della tabella, ovviamente le date fanno parte della chiave primaria, in modo che il listino non possa avere a partire dalla stessa data due prezzi differenti.

Citazione
Pensavo che con i moderni computer un'attività “notturna” potesse essere evitata e si potesse controllare immediatamente. Se questo lo si potesse evitare io lo auspicherei, se il futuro è la vendita elettronica c'è bisogno di risposte immediate. Anche qui però pensandoci bene si può fare un primo controllo per la risposta immediata ( tipo lo abbiamo o no a magazzino), quindi il controllo più approfondito che coinvolga tutte le componenti interessate in fase successiva (tipo il controllo sulla carta di credito o solvibilità).

Quindi diciamo che ci sono tabelle che chiamo di "lavoro" che subiscono modifiche continumente, da parte degli utenti che svolgono le loro mansioni, mentre ci sono tabelle che chiamo "di consolidamento" che vengono gestite esclusivamente dalle routine notturne, e che contengolo solo dati validi.

Facciamo un esempio:
Faccio un ordine al fornitore di 30 articoli. Questo ordine si trova nella tabella di lavoro A e fino a quando non arriverà la consegna, non passerà sulla tabella di consolidamento B.
Al momento della consegna, rispetto al mio ordine originale, il fornitore non ha consegnato n articoli e di alcuni, ha consegnato delle quantità inferiori alla mia richiesta.
Sulla tabella di lavoro A avrò articoli ordinati, quantità ordinata, quantità ricevuta, mentre sulla tabella di consolidamento B, passeranno solo i movimenti validi perdendo di conseguenza gli articoli che il fornitore non mi ha consegnato. Perderò anche il campo della quantità ordinata, trovando solo la quantità ricevuta insieme ad altri dati come il numero fattura del fornitore.

Se devo realizzare per l'ufficio commerciale un report che mostri tutti gli ordini in consegna futura, ovviamente attingero dalla tabella A.
Mentre se devo realizzare un report che mostri l'analisi delle merci ricevute, attingo alla tabella B che risultà più indicata rispetto alla tabella A (che contiene anche lei i dati della merce ricevuta) in quanto è assente dalle righe superflue della merce non consegnata.
Se devo realizzare un report che mi indica il livello di servizio del fornitore, dovro necessariamente attingere alla tabella A in quanto è l'unica ad avere il dato di orinato e di consegnato.
Se devo realizzare un report sugli ordini consegnati in attesa di ricezione della fattura, dovrò puntare necessariamente alla tabella B che contiene questo dato.

Spero di aver spiegato bene la differenza fra le due tipologie di tabelle, come puoi vedere non è legato ad un discorso di risposta immediata alle richieste utente.

Citazione
Ho momentaneamente sospeso la compilazione dei protocolli di lavoro anche perché essendo io quello che ne sa di meno sui gestionali, devo prima chiedere a voi.
Appena capisco un po di più di PostgreSQL ho intenzione di rimettermi al lavoro.

Riguardo la nomenclatura se proponessi ad esempio:
1. I nomi delle tabelle devono sempre essere plurali se un nome di tabella deve riportare un nome composto tipo AliquoteIva lo si rovescerà per ottenere un chiaro finale plurale e cioè IvaAliquote.
2. I nomi di campo devono sempre essere singolari si potranno abbreviare la dove non è possibile fraintenderne il significato.
3. I nomi di campo saranno preceduti dalle prime tre lettere del nome della tabella più il tratto di sottolineatura fatto salvo il punto 2 e cioè fraintendere a quale tabella ci si riferisce.
4. Le chiavi primarie inizieranno sempre con ID_ e le prime tre lettere del nome della tabella fatto salvo il punto 2.
5. Le chiavi esterne saranno nominate come le loro chiavi di origine.

Se ho capito quanto dici questo non andrebbe bene?

Per quanto riguarda i nomi delle tabelle io utilizzerei solo caratteri maiuscoli, non so perchè ma quando programmo in sql mi piace utilizzare solo maiscuolo  :rolleyes:.
Per quanto riguarda i campi chiave, io sposterei alla fine _ID.
Purtroppo di postgresql non conosco nulla, volevo utilizzarlo ma ho fatto un passo indietro perchè non sono riuscito e non so se sia possibile, collegargli un database esterno (nel mio caso il db del gestionale). Anzi se quancuno di voi sa se è possibile collegare un db esterno allo stesso modo dei linked server su sql server sarebbe bellissimo.
Ciao.

29
Programmazione / Re:Sviluppo Gestionale Rubinetto Felice
« il: 07 Novembre 2015, 12:56:03 »
Ciao a tutti, progetto interessante a cui mi piacerebbe dare un contributo.
Inizio col descrivere brevemente la struttura del gestionale, basato su DB2, che utilizzo in azienda.

Prendo in esempio la tabella anagrafica dell'articolo:
La tabella riporta tutti gli attributi legati all'articolo come codice, descrizione, peso, unità di misura, codice merceologico ecc..
a sua volta un attributo dell'articolo, può avere una propria tabella, ad esempio l'unità di misura viene gestita dalla sua tabella dalla quale possiomo selezionarne il tipo desiderato.

La tabella articolo credo abbia un legame con oltre 50 tabelle "minori", fra le quali scegliere i vari attributi.

Le tabelle "minori", in realtà non sono gestite in maniera individuale, ma fanno parte di un'unica tabella.
Questa ha una colonna che funge da identificativo per tutte le tabelle "minori" mentre le altre colonne riportano i dati veri e propri.

Faccio un paragone con la tabella articolo creata da Gianlugi,
dove abbiamo id_art, art_nome, art_prezzo mentre da me il prezzo, che varia periodicamente, ha una sua tabella dedicata in cui trovo il codice articolo, le date di validità e il prezzo.

Oltre alle tabelle anagrafiche, ci sono le tabelle su cui vengono inseriti giornalmente i dati provenienti da le varie mansioni degli uffici,
ad esempio l'entrata merce al magazzino, la spedizione della merce ai clienti, gli ordini in arrivo dai fornitori, le registrazioni contabili ecc.

Tutte queste attività, sono gestite da molteplici tabelle dedicate, ad esempio tutte le attività di uscita merce giornaliere, vengono memorizzate su una prima tabella, successivamnete in notturna, delle routine analizzano tutti i dati e quelli che superano tutta una serie di controlli, vengono memorizzati in una seconda tabella che quindi conterrà solo i movimenti corretti, arrichhendoli di ulteriori informazioni.

Il campi delle tabelle hanno una nomenclatura che segue questa logica, i primi due caretteri riportano i primi due caretteri della tabella di appartenenza, i restanti, identificano il campo vero e proprio, in questo modo il campo XXART sappiamo che appartiene alla tabella dell'anagrafica articolo, mentre il campo YYART appartiene alla tabella delle uscite merci.
Questo torna utile in fase di progettazione perchè permette di poter idenficare meglio le tabelle e perchè al netto del prefisso, il campo ha lo stesso nome in tutto il db.

A disposizione per qualsiasi chiarimento, ciao.

30
Domande tecniche / Re: Cannot load class DBUS.
« il: 10 Agosto 2015, 17:54:52 »
Ho risolto installando dai sorgenti.

Pagine: 1 [2] 3 4 ... 14