Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11

    [DATABASE] Domande, dubbi, consigli -lungo-

    Salve a tutti, ho da qualche tempo iniziato a studiare i database, da un punto di vista teorico ma sopratutto pratico... ora, fortunatamente a lavoro dove sono hanno un database con framework integrato, si chiama paradox (non esiste piu' adesso ma era della borland)
    il programmatore che era qua al tempo fece un'interfaccia per interagire con il database della fatturazione per fare in modo di inserire ordini, articoli, stampare fatture ed etichette, gestire clienti e tutto il resto, ora, partendo da questo, mi sono detto, per imparare quale mezzo migliore di un sistema che gia funziona, cosi' capisco meglio la struttura dei DB e l'idea della realizzazione.
    non prendendo in considerazione il linguaggio di programmazione, che francamente ritengo un aspetto secondario, mi interessa di piu' l'analisi del database e la struttura dello stesso.

    in pratica vorrei fare un DB che contenga, articoli (alcuni hanno caratteristiche comuni, altri sono del tutto diversi), il magazzino, gli ordini, le fatture i clienti e gli agenti di vendita.

    il mio problema adesso è questo, ho fatto un primo schizzo della struttura del DB e fin qua mi pare che possa avere senso (anche se aspetto di fare la prima implementazione per trovare i veri errori concettuali), ma mi sono bloccato ad un certo punto.
    sto' cercando un modo razionale per gestire gli ordini, un cliente chiede una serie di articoli variabile, dichiara un tempo massimo per il pagamento, uno per la spedizione della merce etc. ora come gestisco l'oggetto "ordine"? pensavo all'inizio di fare una tabella con un campo N°ordine (univoco per ogni ordine nel database) e con poche altre info, come la data di creazione dell'ordine, il cliente etc, ma per gli articoli ordinati? mi conviene fare un campo testo con una lista di nome_Articolo divisa magari da virgole? oppure pensavo a far creare un file di testo con la lista di articoli e alla fine un bel #EOF...
    il fatto è che il numero di articoli per ordine è variabile, perciò non posso creare una tabella ordine con N° righe per gli N_articoli...
    pero' il pensiero di riempire il pc di file di testo "inutili" mi perplime un po'...
    in più vorrei che fosse possibile ricercare gli ordini vecchi, e farne dei report (per esempio per fare in modo di mostrare gli articoli preferiti da un cliente, o in un certo periodo dell'anno), percio' vorrei trovare una soluzione che non comporti l'uso di file che non siano tabelle (o almeno il meno possibile...) solo che davvero non mi viene in mente come fare ad organizzare concettualmente gli ordini....
    avete un'idea? se non ho spiegato qualcosa bene (per altro abbastanza probabile) chiedetemi pure delucidazioni.
    grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    ciao,

    io utilizzo Firebird come database sql.

    ti do qualche suggerimento, io faccio in questa maniera:

    innanzi tutto ogni tabella che creo ha un Field ID univoco per la tabella.
    esempio:
    codice:
    CREATE TABLE CLIENTI(
        ID                  INTEGER NOT NULL PRIMARY KEY,
        ITEM                VARCHAR(100) NOT NULL,
        COGNOME             VARCHAR(50),
        NOME                VARCHAR(50),
        .......
    quando poi creo una seconda tabella con un campo che deve identificare il cliente faccio cosi:
    codice:
    CREATE TABLE ORDINI(
        ID                    INTEGER NOT NULL PRIMARY KEY,
        ITEM                  VARCHAR(50) NOT NULL,
        IDCLIENTE             INTEGER NOT NULL REFERENCES CLIENTI(ID),
    ....
    per il problema del numero di ordini devi creare 2 tabelle diverse 'Master e Details'

    la tabella master dove registrerai il numero dell'ordine, la data, il cliente etc etc
    la tabella details dove registrerai oltre all' idMaster anche tutti gli N articoli...

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11
    capito... mi sembra ragionevole, cosi' dalla tabella details risali anche ad ordini precedenti perche' ti sei salvato l'item e l'ordine dove appariva...
    grazie credo prorpio sia quello ce cercavo

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    Originariamente inviato da Bonoz
    capito... mi sembra ragionevole, cosi' dalla tabella details risali anche ad ordini precedenti perche' ti sei salvato l'item e l'ordine dove appariva...
    grazie credo prorpio sia quello ce cercavo
    fai attenzione, nella tabella details devi registrare i dati dell'articolo e il numero dell'ordine (ID master ) di cui fa parte e non l'item... per me ITEM e' una descrizione.

    codice:
    CREATE TABLE MOVIMENTI(
        ID                  INTEGER NOT NULL PRIMARY KEY,
        DATA                DATE NOT NULL,
        IDCLIENTE           INTEGER REFERENCES CLIENTI(ID),
        NUMERO_FATTURA      INTEGER,
        DATA_FATTURA        DATE,
        NOTE                BLOB);
    
    
    CREATE TABLE MOVIMENTIDETAIL(
        ID                 INTEGER NOT NULL PRIMARY KEY,
        IDMOVIMENTI        INTEGER NOT NULL REFERENCES MOVIMENTI(ID) on delete cascade,
        IDARTICOLO         INTEGER NOT NULL REFERENCES ARTICOLI(ID),
        QUANTITA           NUMERIC(9,3) NOT NULL,
        PREZZO             NUMERIC(9,3) NOT NULL,
        IMPONIBILE         NUMERIC(9,3) NOT NULL,
        IVA                NUMERIC(5,2) NOT NULL,
        IMPOSTA            NUMERIC(9,3) NOT NULL,
        TOTALE             NUMERIC(9,3) NOT NULL,
        NOTE               BLOB);

    in questo modo in ogni record della tabella detail è memorizato l'ID della tabella master, e di conseguenza tu sai a quale ordine/fattura appartiene quell'articolo...

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11
    ho capito, mi sei stato di grande aiuto, mi sono reso conto che posso riorganizzare meglio anche altre tabelle... beh il DB sta iniziando ad avere una sua complessità...
    spero di iniziare a scrivere un po' di codice tra una settimana o due...
    un'altra curiosità se posso, firebird offre anche un framework per creare applicazioni o è solo un database?

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    Originariamente inviato da Bonoz
    un'altra curiosità se posso, firebird offre anche un framework per creare applicazioni o è solo un database?
    Firebird e' un database free ed opensource http://it.wikipedia.org/wiki/Firebird_SQL, io scrivo le applicazioni in Delphi e utilizzo firebird come database.

    poi esistono varie applicazioni con le quali puoi manipolare questo database, io utilizzo Ibexpert

    ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    11
    capito, sei stato di grande aiuto, grazie ancora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.