Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    tabelle per minuscolo gestionale

    Sto muovendo i primi passi in php e per imparare ho deciso di unire l'utile al dilettevole e progettare un mini-gestionale per la creazione di fatture.

    Ho solo qualche dubbio su come strutturare il db:
    ho già creato una tabella "utenti" (in cui inserirò tutti i miei dati fiscali) e una tabella "clienti" (in cui inserirò i dati fiscali dei miei clienti).

    Mi stavo accingendo a creare la tabella "fatture" inserendo questi campi:

    id
    n_fattura
    luogo
    data
    percentuale_rivalsa
    percentuale_iva
    descrizione
    quantita
    prezzo_unitario
    totale_parzale

    Ho però pensato che, all'interno di una stessa fattura, ci possono molte voci e quindi n° descrizioni, n° quantita, n° prezzo unitario e n° totale_parzale.

    Come risolvere il problema?
    Creando un'apposita tabella con questi quattro campi, relazionata alla tabella fatture?

    Oppure utilizzando degli array?
    In questo secondo caso potrei inserire, ad es, tutte le descrizioni all'interno di un'unica cella separandole con un carattere (es virgola). Ma se all'interno della descrizione sono presenti delle virgole?

    Sicuramente un sistema per far funzionare la cosa si trova, ma mi piacerebbe seguire una metodologia corretta.

    Grazie a tutti per l'aiuto,
    come vi ho detto sono un neofita e mi piaceebbe partire col piede giusto..

  2. #2
    In realtà qui non si tratta di linguaggio php ma di come progettare un Database, quindi dovresti cercare dei manuali, della documentazione al riguardo. In particolare quando si progetta un DB una caratteristica molto importante è la normalizzazione di un DB. Poiché è un concetto abbastanza lungo è meglio se cerchi qualcosa a proposito.
    Veniamo al tuo problema.

    La tabella fatture potrebbe essere così formata:

    id_fattura
    nr_fattura
    luogo
    data
    percentuale_rivalsa
    percentuale_iva
    totale

    Hai scritto:
    Ho però pensato che, all'interno di una stessa fattura, ci possono molte voci e quindi n° descrizioni, n° quantita, n° prezzo unitario e n° totale_parzale.
    Ed hai pensato bene, quindi conviene che ti faccia una tabella contenenti tante righe quanti sono i prodotti diversi che risultano elencati nella fattura.
    La tabella potrebbe chiamarsi "prodotti_fatturati", ed è così formata:

    id_fattura
    descrizione
    quantita
    prezzo_unitario
    totale_parziale

    con chiave primaria id_fattura e descrizione, e id_fattura chiave esterna in relazione con la chiave primaria id_fattura della tabella "fatture".


    Chiariamo il tutto con un esempio:

    Supponiamo di inserire in fatture i seguenti dati:

    id_fattura 4
    nr_fattura 4543543
    luogo Roma
    data 28-01-07
    percentuale_rivalsa 10%
    percentuale_iva 20%
    totale 2000,45



    Ora supponiamo che in tale fattura siano elencati 2 soli prodotti: 4 porte a 100 euro l'una e 3 sedie a 56 euro l'una. Nella tabella prodotti_fatturati avremo:

    id_fattura 4 (è lo stesso della tabella precedente)
    descrizione porte
    quantita 4
    prezzo_unitario 100
    totale_parziale 400

    ed un altro record:

    id_fattura 4 (è lo stesso della tabella precedente)
    descrizione sedie
    quantita 3
    prezzo_unitario 56
    totale_parziale 168

    ed il gioco è fatto.

    Infatti se ti servono i datti della fattura nr. 4543543 basta prendere l'id_fattura corrispondente, e con questo poi prelevare i prodotti elencati in prodotti fatturati la cui fattura di riferimento ha id = 4.

    In realtà si poteva procedere anche in tal modo.
    La tabella "fatture" è = a quella che ti ho mostrato, mentre la tabella prodotti_fatturati:

    id_prodotto fatturato (autoincrement)
    descrizione
    quantita
    prezzo_unitario
    totale_parziale

    e poi creare una tabella di cross che tenga traccia della fattura e dei prodotti che ad essa appartengono; una tale tabella è composta da 2 campi:

    id_fattura
    id_prodotto_fatturato

    con ambedue i campi chiave primaria.

    Ciò però sta a significare, concettualmente, che un prodotto lo possiamo riutilizzare anche in più fatture. Cioé id_prodotto può essere associato a diversi id_fattura.
    Questo è quello che ci direbbe se noi utilizzassimo la tabella di cross.

    Riprendiamo l'esempio visto prima.
    I dati nella tabella "fatture" sono quelli già visti, mentre per le altre 2 supponiamo:


    id_prodotto_fatturato 7
    descrizione porte
    quantita 4
    prezzo_unitario 100
    totale_parziale 400


    id_prodotto 8
    descrizione sedie
    quantita 3
    prezzo_unitario 56
    totale_parziale 168


    nella tabella di cross avremo:

    id_fattura id_prodotto_fatturato
    4 7
    4 8

    Poiché la chiave primaria è costituita da tutti e due i campi, se noi inserissimo il seguente record:

    id_fattura id_prodotto_fatturato
    5 7

    il DB non dà errore, quindi "concettualmente" possiamo associare uno stesso prodotto presente in una fattura anche ad un'altra fattura.
    Ecco perché è preferibile la prima soluzione che ti ho suggerito.


    In realtà, poi, nella tabella "fatture" possiamo anche togliere il campo totale visto che tale informazione la possiamo reperire dai totali parziali dei vari prodotti; però se uno desidera, può anche tenerlo per semplicità.

    Cioao.

  3. #3
    Grazie infinite gianf_tarantino, mi metto subito al lavoro!

    utilizzerò ovviamente il primo metodo che mi hai suggerito

    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 © 2025 vBulletin Solutions, Inc. All rights reserved.