Autore Topic: Esempio minimale di database ordinativi usando finestre incorporate.  (Letto 2913 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Prosegue il discorso sulle finestre incorporate iniziato qui da Tornu.
Come vi dicevo ho buttato giù un'idea di database ordinativi minimale,  all'inizio ancora più minimale, non riesco a decidermi come farlo mi sembra sempre che manchi qualcosa ma voglio farlo piccolo.
L'idea sarebbe quella di dare un aiuto iniziale alla comprensione dei database relazionali senza esagerare nel voler andare troppo nello specifico degli ordini, ma senza neanche arrivare agli inutili esempi che si vedono in giro nei libri.
Ho pensato a un database ordinativi perché anche se stringato dovrebbe permette di affrontare i principali aspetti che normalmente si presentano al programmatore.
Si lo so è un po presuntuoso da parte mia metterla così in fin dei conti io non ne so molto o meglio ne so poco, ma confiderei molto nel vostro aiuto, pertanto sono a chiedervi se gentilmente potete dare un occhio al progetto che per ora prevede solo le tabelle e l'organizzazione della finestra crea ordini, la più complessa e importante.
Allego un foglio di calcolo con tre pagine la prima spiega un po cosa significa, cosa so o credo di sapere di database ordinativi e che cosa c'ho messo.
Il secondo foglio è l'organizzazione del database e il terzo riguarda la finestra crea ordinativi.
Vi prego di darmi una mano a sciogliere i miei dubbi, cosa inserireste che io non ho messo o non ho neanche pensato? Altrimenti qui rimango nell'altalena e non cavo un ragno dal buco.
Grazie
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #1 il: 19 Ottobre 2015, 12:37:31 »
Ciao Gianluigi,
spero che tu sia guarito, vedo che ti sei messo a studiare.... :)
Veniamo al dunque facendo la stessa premessa da me fatta nella discussione da cui tu hai fatto nascere
questo nuovo topic:
se il tuo intento è solo dare una dimostrazione di uso dei database in ambito gestionale come mi pare di capire,
diciamo che ci sono solo alcune cose (sempre secondo il mio modesto parere) da aggiungere e/o migliorare, nel
caso contrario l'approccio che hai dato alla costruzione del database andrà modificato implementando altre
tabelle e modificando quelle che tu hai previsto anche se il tuo intento è creare solo un programma di ordini.
Ti espongo alcune mie considerazioni:
1) secondo me non si può prescindere da una tabella Fornitori, in quanto nella mia esperienza ho visto che capita
   spesso che due o più fornitori utilizzino lo stesso codice per articoli completamente diversi fra loro. Come fai a
   scindere in fase di ordine quale articolo inserire se non sai a quale fornitore appartiene?
2) Anagrafica clienti, ai inserito solo tre campi per identificare il cliente (nome, cognome, città) e se ti capita
   una completa omonomia nella stessa città, a chi inputi l'ordine?
3) Non hai previsto dei listini di vendita, quindi sei costretto ogni volta che inserisci un'articolo nell'ordine a
   calcolarti il prezzo di vendita a mano con il margine da te desiderato.
Ci sarebbe tanto altro da dire, ma andiamo a piccoli passi, dipende a quale livello di funzionalità vuoi arrivare,
ma un minimo ci vuole anche in semplici programmi. Ti allego alcune modifiche (evidenziate in giallo) su tuo
documento descrittivo. Fammi sapere che ne pensi in attesa che magari qualcun'altro del Forum dica la sua.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #2 il: 19 Ottobre 2015, 19:11:00 »
Ciao tornu,
grazie dell'attenzione, si sono guarito più o meno. Ci avrei giurato che non t'andava bene :D
Scherzi a parte, sapevo di certe lacune nei campi delle tabelle, ma pensavo che fosse sufficiente dare l'idea, magari spiegando alla fine quali lacune.
Mi scuso per non essermi spiegato meglio già ieri ma è così difficile anticipare quello che si vuol fare quando noi stessi non lo abbiamo ancora capito.
Forse non dovevo scegliere come database la sola parte ordine di un gestionale, ma nella mia ignoranza mi sembrava che essa rappresentasse bene i vari aspetti essenziali utili a spiegare cosa sono le relazioni e cioè i dati aggregati (tabelle) e le varie relazioni fra le aggregazioni e nell'aggregazione stessa.
Forse qui sbaglio ed è appunto per questo che ho chiesto aiuto proprio a voi che ne masticate, se non essenziali alla dimostrazione certi particolari mi parevano superflui, ma ripeto è da un po di giorni che metto e tolgo e allora...

Via, cap, provincia ecc. mi sembravano ovvi è per questo che non li ho inseriti, anche la scelta degli idraulici l'ho fatta proprio per semplificare e nell'immaginario non abbisognano di grandi attrezzature anche se poi non è così vero.

Rimanendo alla tabella clienti, se volessimo farla nei canoni allora non dovremmo scartare il sistema di inserire le colonne tel1 e tel2, perché nei gestionali “veri” forse sarebbe più utile mettere una tabella a parte per i contatti e un'altra per i dispositivi di contatto in quanto a priori non possiamo sapere se un nostro contatto ha più addetti agli acquisti e quanti telefoni e telefonini fax e-mail siti e le prossime diavolerie che si inventeranno ecc.
Ci sarà il cliente che ha un solo telefono niente telefonini mail fax e quello che avrà 10 addetti con 5 dispositivi l'uno e allora se prevediamo troppo avremo troppi campi vuoti e viceversa non basteranno e non potremmo  estrarre una valida rubrica.

Testata, Righe ci avevo pensato anch'io ma poi mi sono chiesto se non sia troppo specifica degli ordini e quindi che invece di agevolare la comprensione del rapporto molti a molti non finisca invece per ostacolarla, ma ti ringrazio di averla citata perché comunque sia devo farlo anche io, due spiegazioni sono meglio di una.

Nella tabella ordini mi aggiungi il numero di ordine ma non si usa dare all'ordine il suo numero come chiave primaria? Per quale motivo due numeri?

Sempre nella Ordini metti il totale e pure in Righe Ordini, ma questo non è un errore da matita rossa?  Per quanto ne so io nessun campo calcolato va inserito in tabella. Così almeno mi avevano insegnato.
Non comprendo a cosa serva hai le quantità, i prezzi e gli sconti non è un'inutile ridondanza?

In Righe Ordini metti riga omaggio perché, non basta sconto 100% al limite sconto omaggio?

UM l'avevo prevista all'interno della descrizione (es. centimetro. tubo rame diam. 10) ma hai fatto bene a ricordarla va messa, che tu sappia è obbligatoria per legge, o potrebbe anche bastare la citazione in descrizione?

Vedo che fai distinzione fra Articoli e Listino Articoli io qui intendevo usarlo nella seconda accezione.

Hai ragione comunque il prezzo articoli è troppo semplificato non va bene, ma penso che occorra ci sia la colonna del prezzo di costo alla produzione e la colonna ricarico ma niente campi calcolati.

Anche in Articoli mi aggiungi codice articoli se ho capito bene qui lo fai per via dei codici uguali dei fornitori.
Tieni conto che io ho ipotizzato un piccolo produttore di articoli per idraulica pertanto non ha problemi di inserire codici altrui i codici sono i suoi.
Nel libro avrei intenzione di suggerire qualche trucco per favorire i propri utenti nell'importazione dei dati da altri database e/o fogli di calcolo.
Di solito, o meglio ai miei tempi i fornitori inviavano i listini su fogli di calcolo (Excel), per importare senza problemi i codici senza incorrere nel problema che hai indicato, anteponevo tre lettere iniziali più un trattino (per favorirne la lettura) al codice dei fornitori, queste tre lettere erano nella tabella fornitori subito dopo la ragione sociale, le devi aggiungere sempre anche agli eventuali prodotti fatti dall'utente tre lettere e trattino altrimenti non funziona.
È semplice e a mio parere lavora bene. Le lettere sono estrapolate dalle ragioni sociali.
Tu che sistema usi, dei due codici, che vantaggi porta?

Sono d'accordo dire nome articolo suona ridicolo, ma se stai studiando da zero cosa è un database forse distrae meno, suona più facile insieme a nome cliente (ragione sociale), sarò scemo ma a me queste semplificazioni mi hanno sempre aiutato nello studio delle cose difficili.
Alla fine del capitolo su database e SQL era mia intenzione correggere tutte le semplificazioni usate, sempre ch'io mi ricordi che lo devo fare.

Carissimo tornu se non sei morto sotto il peso di questo mattone, sei indistruttibile.

Spero vorrai continuare a supportarmi. È la prima volta che confronto quello che credo di sapere sui database con uno esperto, te ne sono grato.
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #3 il: 19 Ottobre 2015, 21:12:24 »
Ti supporto molto volentieri (sempre entro i miei limiti che sono molti) e non hai niente
di cui scusarti. Esperto  ???
La premessa fatta all'inizio della mia precedente risposta era per capire se doveva essere un'esempio per il tuo libro,
e nel caso secondo me sarebbe stato sufficente il classico esempio della rubrica telefonica arrichita magari da funzioni
che non trovi negli esempi in giro che tentano di spiegare un database, anche per differenziarti da quelli che tu chiami
"banali" (tua citazione post di apertura).
Ti semplificherebbe la vita nel parlare di relazioni una a uno o uno a molti, chiavi primarie, indici, ecc... volendo spiegare
un database (questo vuoi ottenere, giusto?), avendo scelto come esempio un "piccolo gestionale" secondo me ti sei un
pochino complicato la vita, nel senso che non puoi prescindere dall'inserire certe informazioni e certe relazioni per renderlo
un minimo funzionale, anche se poi parli di importare listini e altre funzioni che non sono proprio minimali.
Rispondendo alle tue osservazioni:
Tabella clienti - per quanto riguarda le informazioni di contatto (telefoni, email, fax, ecc...) per me vanno inserite in questa
tabella essendo quelle di base per avere un minimo di informazioni del cliente, eventuali altre figure da contattare (magazzino,
ufficio acquisti, ecc...) dovresti prevedere una rubrica contatti legata ai clienti/fornitori, ma penso che esuli dal tuo intento.
Ti assicuro che questo è il minimo, il gestionale che uso nell'azienda in cui lavoro solo l'anagrafica clienti è composta da dieci
form di informazioni da compilare, ma prevede un sistema di semplificazione quando si codifica un nuovo cliente.

Tabella ordini - a me hanno sempre insegnato che non va usato l'ID se non in certi casi, presumo tu faccia riferimento a questo
quando parli di numero e chiave primaria. Uno è l'ID che identifica in modo univoco l'ordine, ma nell'uso pratico dei gestionali si
usa una numerazione "personale" o se vuoi convenzionale, per esempio tipo questa 15/0056 che identifica anno e numero ordine.

Il totale inserito in testata è il totale dell'intero ordine, quello nelle righe è il totale della singola riga.

Non è una ridondanza il totale riga singola e dato da prezzo_unitarioxscontoxquantità_venduta. Senza la quantità come
fai a calcolare i totali?

Per qunto riguarda i campi calcolati il discorso è lungo se inserirli o meno in una tabella.

Le righe omaggio sono di due tipi "Sconto Merce" è l'iva te la paghi tu o "Omaggio" è l'iva la paga il cliente.

Unità di Misura all'interno della descrizione? Non ho capito.

Per quanto riguarda l'identificazione del fornitore, quello che tu hai citato è lo stesso sistema che utilizziamo in azienda da noi
 e che io ho adottato.Il fornitore è identificato da tre lettere prese dalla ragione sociale dello stesso, per esempio:
Ragione Sociale = Fornitore Beni
Abbrevazione Fornitore = FOB
il campo noi lo chiamiamo Abbrevazione Fornitore ed è conposto da quattro caratteri, ma ne usiamo normalmente tre.
Con questo sistema Abbreviazione Fornitore+Riferimento Articolo (o Codice Articolo) identifichi in modo univoco
l'articolo.
A proposito di database...finisco qui o rischiamo di essere sbattuti fuori per intasamento del database del Forum... ;D
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #4 il: 19 Ottobre 2015, 22:32:04 »
Ti supporto molto volentieri (sempre entro i miei limiti che sono molti) e non hai niente
di cui scusarti. Esperto  ???
Niente false modestie, si capisce che ne sai e mi fa piacere discuterne con te  :D
Mi farebbe ancora più piacere se anche altri trovassero stimolo nella conversazione.
Citazione
La premessa fatta all'inizio della mia precedente risposta era per capire se doveva essere un'esempio per il tuo libro,
e nel caso secondo me sarebbe stato sufficente il classico esempio della rubrica telefonica arrichita magari da funzioni
che non trovi negli esempi in giro che tentano di spiegare un database, anche per differenziarti da quelli che tu chiami
"banali" (tua citazione post di apertura).
Ti semplificherebbe la vita nel parlare di relazioni una a uno o uno a molti, chiavi primarie, indici, ecc... volendo spiegare
un database (questo vuoi ottenere, giusto?), avendo scelto come esempio un "piccolo gestionale" secondo me ti sei un
pochino complicato la vita, nel senso che non puoi prescindere dall'inserire certe informazioni e certe relazioni per renderlo
un minimo funzionale, anche se poi parli di importare listini e altre funzioni che non sono proprio minimali.
Mi sono espresso male intendevo dare qualche spunto, indicazione ma non inserirlo nell'esempio di database, il database deve essere funzionale alla spiegazione degli aspetti più importanti.
Parli di rubrica, ma già esiste un esempio in tal senso fatto dal bravo Golia, io vorrei ... complicarmi la vita e renderla un poco più facile a chi ci leggerà.
Citazione
Rispondendo alle tue osservazioni:
Tabella clienti - per quanto riguarda le informazioni di contatto (telefoni, email, fax, ecc...) per me vanno inserite in questa
tabella essendo quelle di base per avere un minimo di informazioni del cliente, eventuali altre figure da contattare (magazzino,
ufficio acquisti, ecc...) dovresti prevedere una rubrica contatti legata ai clienti/fornitori, ma penso che esuli dal tuo intento.
Ti assicuro che questo è il minimo, il gestionale che uso nell'azienda in cui lavoro solo l'anagrafica clienti è composta da dieci
form di informazioni da compilare, ma prevede un sistema di semplificazione quando si codifica un nuovo cliente.

Non far finta di non capire per farti contento potrei inserire il  cap ma dimmi a cosa servirebbe ai fini della spiegazione e degli esempi come detto anche da te la gestione dei contatti è molto più complessa che mettere qualche numero di telefono e poi scusa inserire campi con dicitura telefono1, telefono2 è contrario si o no alla buona progettazione di database relazionali? Questo è proprio un classico di quello che non si deve fare.
E tu me lo consigli? Non ti vergogni  >:(

Citazione
Tabella ordini - a me hanno sempre insegnato che non va usato l'ID se non in certi casi, presumo tu faccia riferimento a questo
quando parli di numero e chiave primaria. Uno è l'ID che identifica in modo univoco l'ordine, ma nell'uso pratico dei gestionali si
usa una numerazione "personale" o se vuoi convenzionale, per esempio tipo questa 15/0056 che identifica anno e numero ordine.
Giuro che non l'ho mai visto io ho sempre visto il "numero" (text) di ordine che era anche chiave primaria (PK)

Citazione
Il totale inserito in testata è il totale dell'intero ordine, quello nelle righe è il totale della singola riga.

Non è una ridondanza il totale riga singola e dato da prezzo_unitarioxscontoxquantità_venduta. Senza la quantità come
fai a calcolare i totali?
Ridondante non c'entra, mi sono espresso male anche qui, devo stare più attento a quello che scrivo altrimenti se non riesco a farmi capire da te che ne sai figurati da chi non ne sa  :rolleyes:
Intendevo dire che non capisco a cosa ti serve avere il totale sia generale che di riga visto che lo puoi calcolare agevolmente con una interrogazione. Ripeto a me hanno insegnato così.
Citazione
Per qunto riguarda i campi calcolati il discorso è lungo se inserirli o meno in una tabella.
E no questa non te la abbuono, non te la puoi cavare così  :violent:  Spiegati
Citazione
Le righe omaggio sono di due tipi "Sconto Merce" è l'iva te la paghi tu o "Omaggio" è l'iva la paga il cliente.
Giusto non ho pensato che se hai un campo REAL non puoi infilarci TEXT (in realtà SQLite fa proprio così ma noi dobbiamo insegnare...)
Citazione
Unità di Misura all'interno della descrizione? Non ho capito.
Ma se ti ho fatto l'esempio...
Perché UM deve essere inserito anche nella tabella Righe Ordini (ma che rimarrà ArtOrd)?
Citazione
Per quanto riguarda l'identificazione del fornitore, quello che tu hai citato è lo stesso sistema che utilizziamo in azienda da noi
 e che io ho adottato.Il fornitore è identificato da tre lettere prese dalla ragione sociale dello stesso, per esempio:
Ragione Sociale = Fornitore Beni
Abbrevazione Fornitore = FOB
il campo noi lo chiamiamo Abbrevazione Fornitore ed è conposto da quattro caratteri, ma ne usiamo normalmente tre.
Con questo sistema Abbreviazione Fornitore+Riferimento Articolo (o Codice Articolo) identifichi in modo univoco
l'articolo.
A proposito di database...finisco qui o rischiamo di essere sbattuti fuori per intasamento del database del Forum... ;D
Ohhh finalmente qualcosa che combacia, anche se vedo che manca il trattino  :rotfl:

Mi spieghi allora il raddoppio del codice articolo?

Proseguiamo: Tabella fornitori ma nel mio esempio del produttore di articoli per l'idraulica i fornitori sono di materia prima questo discorso sul codice non serve giusto? Devo cambiare esempio?
Piuttosto Magazzino, Bolle, Fatture ma serve ai fini della spiegazione cosa aggiunge di particolarmente importante da spiegare a un novizio?
Per il libro serve vedere i vari aspetti principali di SQL mica puoi far vedere tutto.

Altra cosa è intraprendere un percorso per costruire noi del forum "Il Gestionale" dei gamberi, ma questa è un'altra storia, una storia affascinante però  :D
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #5 il: 20 Ottobre 2015, 11:36:37 »
Ciao tornu,  :-[  :-[  :-[
accidenti se vado avanti così, o peggio se vado indietro così mi sa tanto che devrò smettere anch'io di “rompere” come ha già detto qualcuno il quale però al contrario di me non rompe.
Il gravissimo errore, non da matita rossa bensì da bacchettata sulle dita, capello d'asino e dietro la lavagna dopo averci scritto sopra cento volte “scusa Tornu”,  in ginocchio sui ceci per tutta l'ora (o due?) di progettazione database, l'ho fatto io e malgrado mi sia stato segnalato con ben 3 dicasi 3 punti interrogativi, io non l'ho visto e ho continuato a straparlare.
Una chiave primaria in una tabella di collegamento con già le chiavi composite  :'(
E adesso? Come disse quel cinese a sua moglie “ora chi sa sa che non so cara San su si”.
Lascio perdere? Scrivo un giallo?  :'(  :'(
Dalla scorsa settimana è come minimo la seconda volta che non colgo il significato di quello che mi dicono  :'(  :'(  :'(
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #6 il: 21 Ottobre 2015, 18:37:02 »
Adesso mi rendo conto di essermi comportato in modo troppo semplicistico nell'affrontare il problema, quindi chiedo perdono e un po di tempo per pensarci e riproporre uno schema, spero, meglio studiato.
Comunque continuo a credere che uno “stralcio” di gestionale sia più idoneo di altro per affrontare i più importanti aspetti della progettazione e scrittura di un database doverosamente ridotto visto chi scrive ma anche a chi è rivolto il libro.
Il principale problema come giustamente ha ricordato tornu è che un forum per sua natura deve affrontare un aspetto di un problema alla volta e quindi non è adatto a discutere un'intera strategia.
Lo schema pertanto sarà un file allegato, spero meglio congegnato. Sperando che voi esperti non lasciate il solo gentilissimo tornu ad avere a che fare con me, che cosa vi ha fatto di male, per punirlo così?  :evil:
L'idea è quella di creare un vero e proprio piccolo progetto, mi porterà via un po di tempo ma credo di non potermelo evitare.
Purtroppo io questo capitolo lo avrei dovuto scrivere molto più avanti (non abbiamo ancora scritto una riga di codice e siamo a pagina 102), ma sono incapace a scrivere sul portatile avendo imparato, si fa per dire, su una macchina da scrivere portatile meccanica tedesca.
So solo pigiare con somma violenza e con solo due dita sulla  tastiera e quelle delicate dei portatili mi ripagano saltando una marea di lettere, è più il tempo che uso per correggere che quello che dedico alla scrittura, così questa estate il poco tempo che ho dedicato a Gambas oltre a seguirvi è stato quello di scrivere qualche piccola applicazione e tirare giù lo schema- ciofeca per ordinativi.
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #7 il: 21 Ottobre 2015, 21:39:15 »
Ciao Gianluigi,
ti vedo un pò giù di morale... :)...scherzo, apprezzo la tua volontà di arrivare alla fine di un obiettivo che ti sei posto.
Tornando al tema di questa discussione, intanto mi scuso se magari non rispondo in tempi brevi, ma purtroppo
(o per fortuna) il lavoro in questo periodo mi impegna molto. Quello che posso dirti per quanto mi ha insegnato non tanto la
teoria (che ormai si è persa nel tempo) ma la pratica quotidiana, è che non ci sono delle regole scritte ben precise per quanto
riguarda la costruzione di un database, specialmente quelli per uso gestionale, sicuramente contesterai questa mia affermazione,
ma avendo visto un buon numero di programmi gestionali  di livello "altamente" professionale ti assicuro di aver visto campi
denominati "tel1, tel2, ecc.." che tanto ti hanno fatto rabbrividire. La costruzione di un database fatto bene e con tutti i crismi
secondo me non è una passeggiata di salute, salvo che non lo fai per professione ho hai un' esperienza così vasta che ti permette
di buttarlo giù al primo approccio rispetto al progetto che devi eseguire.Sicuramente qualcuno c'è anche qui nel Forum, a me il primo
che viene in mente è md9237 sicuramente persona preparata e capace di fare ciò. Quindi non ti demoralizzare, se vuoi ricomnciare da
capo diponibile a darti una mano, come ti ho già detto per quel che posso. Se trovo un pò di tempo magari butto giù un database
secondo il mio punto di vista per un programma rivolto ad ordinativi merce.  :ciao:
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #8 il: 21 Ottobre 2015, 23:02:54 »
Ciao tornu,
apprezzo tantissimo il tuo aiuto e ti sono veramente grato del sostegno che mi offri, non ti scusare altrimenti mi fai sentire in colpa anche per quello che ho scritto agli altri, so benissimo che voi giovani dovete lavorate (concordo con te nel dire che è una fortuna) io scherzo è più forte di me, anche quando parlo seriamente devo dire qualcosa che alleggerisca il discorso.
Si hai ragione mi sono un po demoralizzato per l'errore clamoroso che è li da mesi, forse ho capito da dove deriva e se è così allora è un pochino meno grave (per me), ma devo verificare.
Hai ragione anche per quanto concerne telefono1, 2 ecc. anch'io i pochi database che ho potuto vedere avevano tabelle così congegnate una di una ditta metalmeccanica aveva dieci campi e mischiati fornitori e clienti (un campo sigla li differenziava).
A questo punto mi viene da pensare che la regola che ricordo (e messo anche in pratica) l'ho sognata di notte anche perché sul libro dove mi pareva di averla letta (Progettazione database di M. J. Ernandez) non l'ho trovata, anzi lo schema di esempio Ordinativi del libro assomiglia al tuo suggerito.  :D
Sempre compatibilmente col tuo tempo, se mi puoi dare una mano così importante come quella di tirare giù il progetto te ne sarei molto grato, però a me basta già il fatto che mi sostieni con la tua esperienza e credimi che per me vuol dire moltissimo.
  :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #9 il: 21 Ottobre 2015, 23:18:06 »
@ Gianluigi
Ho letto, passo dopo passo, tutta la discussione svolta fino ad oggi ed ho resistito a parteciparvi. Dopo l'uiltima lettura non ce l'ho fatta più ed eccomi qua.
Anche se non mi sento ferrato in materia di DB, penso di dire ugualmente la mia, poi deciderai tu. Il libro infatti è tuo e tu solo sai come dovrà essere organizzato.
La mia esperienza sulla strutturazione dei DB ha impattato qualche anno fa con i DB SQLite, perchè quello non è un vero e proprio globo da DB. Ho cercato all'epoca di applicare tante delle nozioni conosciute per costruire il mio DB in ContabFam e ricordo di avere preso tanti pesci in  faccia che ancora, odorandomi, ne sento le maleodoranti esalazioni.
Ho dovuto rinunciare a chiavi primarie e secondarie, nonchè a indici. Ho dovuto per forza di cose impiantare una chiave univoca per singola tabella coincidente col codice ID della stessa. L'unica organizzazione che ho potuto dare è stata quella della relazionalità, legando le tabelle fra di loro soltanto concettualmente: richiamando di volta in volta quelle colonne che mi interessavano.
A parte SQLite, pensando ad ambienti operativi legati a singoli pc, non mi pare che fino ad oggi, ne siano consentiti altri. Diversamente, in ambienti operativi di tipo Server, le cose cambiano perchè esistono anche  MySQL, PostgreSQL, Firebird, ODBC.
Quindi, se permetti, ti esorterei a valutare a quale ambiente operativo tu voglia destinare il tuo libro e poi decidere sul tipo di struttura di DB a cui orientarti. Purtroppo se il tuo indirizzamento dovesse rimanere sull'ambiente operativo di singolo pc, allora l'unica bestia strutturale che ti rimane è quell'idecoroso SQLite3.
Perchè indecoroso? Perchè a parte le citazioni riportate sopra, gestisce tutte le colonne di una tabella nel formato String; ciò significa che quando andrai a  definire una colonna nel formato integer o boolean, o byte o short o Float, il software incaricato a leggere/scrivere un DB, procederà di sua sponte a trasformare i vari dati nell'unico formato accettato e cioè nel formato String.
Saputo ciò, puoi procedere ad organizzare il tuo DB minimale esattamente come lo vuoi pensare TU, tanto per scrivere un esempio di DB non è necessario dare vita ad una struttura complicata con tutte le tabelle professionalmente necessarie, ma solamente a quelle tabelle che serviranno per costruire l'esempio campione che renda l'idea di come pensare un DB relazionale. L'imporatnte è tenere conto a non ripetere, se non che per la o le colonne chiave, dati che occuperebbero solo spazio inutile e di memoria di disco e di programma, ma anche comporterebbero lungaggini procedurali.
Detto questo ti lascio, perchè, fuori dalla mia quarantena, sto prendendo freddo. :)
:ciao:

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #10 il: 22 Ottobre 2015, 20:48:00 »
@ Gianluigi
Ho letto, passo dopo passo, tutta la discussione svolta fino ad oggi ed ho resistito a parteciparvi. Dopo l'uiltima lettura non ce l'ho fatta più ed eccomi qua.
Anche se non mi sento ferrato in materia di DB, penso di dire ugualmente la mia, poi deciderai tu. Il libro infatti è tuo e tu solo sai come dovrà essere organizzato.
La mia esperienza sulla strutturazione dei DB ha impattato qualche anno fa con i DB SQLite, perchè quello non è un vero e proprio globo da DB. Ho cercato all'epoca di applicare tante delle nozioni conosciute per costruire il mio DB in ContabFam e ricordo di avere preso tanti pesci in  faccia che ancora, odorandomi, ne sento le maleodoranti esalazioni.

 :rotfl:

Citazione
Ho dovuto rinunciare a chiavi primarie e secondarie, nonchè a indici. Ho dovuto per forza di cose impiantare una chiave univoca per singola tabella coincidente col codice ID della stessa. L'unica organizzazione che ho potuto dare è stata quella della relazionalità, legando le tabelle fra di loro soltanto concettualmente: richiamando di volta in volta quelle colonne che mi interessavano.
A parte SQLite, pensando ad ambienti operativi legati a singoli pc, non mi pare che fino ad oggi, ne siano consentiti altri. Diversamente, in ambienti operativi di tipo Server, le cose cambiano perchè esistono anche  MySQL, PostgreSQL, Firebird, ODBC.
Quindi, se permetti, ti esorterei a valutare a quale ambiente operativo tu voglia destinare il tuo libro e poi decidere sul tipo di struttura di DB a cui orientarti. Purtroppo se il tuo indirizzamento dovesse rimanere sull'ambiente operativo di singolo pc, allora l'unica bestia strutturale che ti rimane è quell'idecoroso SQLite3.
Perchè indecoroso? Perchè a parte le citazioni riportate sopra, gestisce tutte le colonne di una tabella nel formato String; ciò significa che quando andrai a  definire una colonna nel formato integer o boolean, o byte o short o Float, il software incaricato a leggere/scrivere un DB, procederà di sua sponte a trasformare i vari dati nell'unico formato accettato e cioè nel formato String.
Saputo ciò, puoi procedere ad organizzare il tuo DB minimale esattamente come lo vuoi pensare TU, tanto per scrivere un esempio di DB non è necessario dare vita ad una struttura complicata con tutte le tabelle professionalmente necessarie, ma solamente a quelle tabelle che serviranno per costruire l'esempio campione che renda l'idea di come pensare un DB relazionale. L'imporatnte è tenere conto a non ripetere, se non che per la o le colonne chiave, dati che occuperebbero solo spazio inutile e di memoria di disco e di programma, ma anche comporterebbero lungaggini procedurali.
Detto questo ti lascio, perchè, fuori dalla mia quarantena, sto prendendo freddo. :)

Ti allego un piccolo esempio che ti dovrebbe chiarire un po le idee rispetto alle nuove funzioni di SQLite che d'accordo che non sarà il massimo, ma per trattare i dati di un applicazione non server va benissimo e ancora meglio come supporto a un libro che voglia introdurre un neofita alla programmazione.
Smettila di stare in quarantena tu di SQL e di Gambas ne capisci potresti dare una mano a me e Top Fuel con suggerimenti e qualche piccola applicazione che spiega un piccolo aspetto della programmazione in Gambas.
Se ti va naturalmente, ti saluto in fiduciosa attesa di un tuo contributo
 :ciao:

Ti sei dimenticato di Base o come si chiama il db do Open-Libre-Office c'ha anche le macro come Access  ;D
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #11 il: 22 Ottobre 2015, 22:30:47 »
Mi ha fatto piacere l'intervento di Picavbg, un'altro utente che secondo me la sa "lunga" su DB e Gambas, il quale
mi ha fatto riflettere sui miei discorsi fatti con Gianluigi, nel senso che non avevo pensato come a fatto Picavbg a
quale DB Gianluigi si rivolgesse, mentre io per scontato davo "suggerimenti" pensando a MySql che è il DB che uso
normalmente anche per programmi standalone. Io non conosco assolutamente SQLite e la sua struttura, e non mi
ha mai incuriosito, al momento sto curiosando anche su MariaDb e i database NoSql. A Gianluigi voglio dire che se il
suo progetto che vuole inserire nel libro è basato su SQLite sul forum ci sono molte persone che lo usano e conoscono
bene, comunque il mio apporto dove fossi in grado di intervenire non lo farò certo mancare.  :)
« Ultima modifica: 22 Ottobre 2015, 22:35:14 da tornu »
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.157
  • Tonno verde
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #12 il: 23 Ottobre 2015, 14:44:52 »
Ciao tornu,
io non ho mai preso in considerazione MySql e tanto meno PostgreSQL di cui so... praticamente niente.
Sono interessatissimo a questi database (sinceramente più a PostgreSQL anche se deve essere tostissimo avendo una logica diversa rispetto ai database relazionali classici) ma non trovi che per introdurre una persona che nulla sa di programmazione e database a questi tipi nati per servire dei client, ci voglia gente con...  :-[
Ti ricordo, nel caso te lo fossi scordato  :) , io sono un novizio alle prime armi della programmazione e mi permetto di scrivere un libro insieme a Top Fuel (e aperto a chi voglia darci una mano) solo perché tale libro non esiste già, questo come ben sai nello spirito open.
Naturalmente questo libro non può che essere rivolto a gente che nulla sa o molto poco, pertanto se te la senti di guidarmi, io che di server e client non so niente, sono disponibilissimo a introdurre insieme a me stesso i novizi in questo favoloso mondo.  :D
Per rimanere nell'ambito  del noviziato ci potremmo indirizzare su MariaDB che ha licenza GNU 2.  :D :D
in effetti avevo intenzione di dedicarmi allo studio di PostgreSQL dopo aver concluso l'avventura del libro e dopo aver compreso cosa vuol dire programmare ad oggetti. ;D
Se ci stai tu che di MySQL sei pratico io ti seguo volentierissimo, ultra volentierissimo. :D :D :D
Tu metti la mente e io il braccio, per l'esattezza due dita.  ;D
 :ciao:

PS. Mi puoi togliere una curiosità? Cosa intendi per standalone?
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #13 il: 23 Ottobre 2015, 21:26:36 »
Ciao Gianluigi,
ho usato l'aggettivo standalone (ma è un aggettivo  ???) senza manco accorgermi di averlo fatto.
Questo il suo significato
Citazione
Caratteristica di un software che può eseguire i compiti per cui è preposto senza che siano richiesti altri componenti.

Standalone, la cui traduzione letterale dall'inglese è autonomo, indica generalmente qualcosa in grado di funzionare "da solo".

Per questo motivo, un programma è detto standalone quando è in grado di avviarsi senza necessitare della procedura di installazione.
Ho usato questo termine in modo improprio per dirti semplicemente che uso MySql anche per programmi che girano solo su un
pc e indipendentemente dalla complessità/quantità di dati da gestire, anche se la natura del DB è client/server.
E' ovvio (spero di non averti dato un' impressione diversa) che l'utilizzo che io ne faccio nelle mie piccole/medie applicazioni che
sviluppo (non per lucro) per amici o piccole attività principalmente artigiane (nel mio piccolo nell'intento di far conoscere Linux)
non comporta  obbligatoriamnte la costruzione di un DB con tutte le impostazione (molte non le uso proprio) spinte al massimo
delle performance, quando evito ridondanza di dati, query eseguite in tempi accettabili e tabelle costruite con un minimo di logica,
salvo casi eccezionali mi fermo a questo. Tutte le altre funzionalità che un DB di questo tipo o altri ha in dotazione le provo/studio
per mia curiosità/formazione personale. Forse semplifico molto e non è certamente da "esperto" dire che è un DB con cui mi trovo
a mio agio e fino ad ora non mi è mai capitato di non trovare una soluzione per estrapolare dati interconnessi tra loro anche da
tabelle magari non costruite nei migliore dei modi.
Devo dirti però in tutta sincerità che mettere su carta o su un post le mie "minime" conoscenze in merito mi mette in difficoltà,
questo è stato ed è purtroppo un mio limite. Comunque come ti ho già detto disponibile per quel che posso.  :ciao:
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re:Esempio minimale di database ordinativi usando finestre incorporate.
« Risposta #14 il: 23 Ottobre 2015, 23:31:06 »
ho usato l'aggettivo standalone (ma è un aggettivo  ???) senza manco accorgermi di averlo fatto.
Questo il suo significato
Citazione
Caratteristica di un software che può eseguire i compiti per cui è preposto senza che siano richiesti altri componenti.

Standalone, la cui traduzione letterale dall'inglese è autonomo, indica generalmente qualcosa in grado di funzionare "da solo".

Per questo motivo, un programma è detto standalone quando è in grado di avviarsi senza necessitare della procedura di installazione.

Dal mio "Dizionario di informatica" cartaceo leggo testualmente (grassetto compreso):
Citazione
stand-alone : da solo, automatico. Si dice di un sistema informatico funzionante in modo autonomo, non essendo connesso o dipendente da un
computer principale.
In definitiva un pc non attaccato informaticamente ad una rete  locale o intranet ,  è un pc stand-alone, mentre un sistema con due o più pc di cui il principale è un server, mentre  tutti  gli altri, logicamente connessi ad esso, sono chiamati client a costituiscono il cosiddetto mmodello client/server.
Scusate se non sono stato sufficientemente tecnico nell'esposizione di un concetto per me planetario, ma meglio non ho saputo fare.  :-\
Ciao a tutti e due.
:ciao: