Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    94

    DB e diagramma delle classi di vendita online

    Ciao a tutti, ho deciso di scrivere questo post per avere una vostra opinione, ho bisogno di confrontare la mia idea con quella di qualcun'altro
    So che vi annoierà leggere, però ve lo chiedo per favore

    Allora, io ho implementato una base di dati in Oracle inerente alla vendita di libri online, prima però ho sviluppato un diagramma delle classi. Ho ideato tante versioni prima di arrivare a questa che ora vi allego (non è completo questo diagramma, ho tagliato solo la parte su cui sono dubbiosa in modo che venisse più grande e più leggibile).

    I miei dubbi sono:

    - la presenza del Carrello e Composizione_carrello è corretta? inizialmente non l'avevo messo perchè ritenevo che "il carrello" fosse legato più alla grafica, ma poi andando a realizzare dei trigger mi sono resa conto che mi serviva un appoggio da dove partissero tutte le info degli ordini e così li ho messi. Voi che ne pensate? A me personalmente non piace lì come sta, è proprio bruttina, forse sbaglio "posto", che dite??

    - altri dubbi legati a queste classi:

    Ordine(codice, cliente_id, importo_tot, data)

    Composizione_Ordine(codice_ord, libro_id, quantità, prezzo)

    Carrello(codice_ord, cliente_id, data, completo)

    Composizione_carrello(codice_ord, libro_id, num_copie)

    Idea: il cliente mette nel carrello gli articoli scelti, alla fine dell'operazione decide se procedere all'ordine indicando che il carrello è completo. Quando il carrello è completo, esso viene trasformato in ordine. In pratica un trigger che quando completo è settato a Si, inserisce una riga in Composizione_Ordine e Ordine, poi cancella le righe in Carrello e Composizione_carrello--->DUBBIO: cancellare le corrispondenti righe in carrello e composizione_carrello è corretto??trattare questa tabella come un appoggio è giusto???

    Fatto in questo modo codice è chiave primaria di Ordine, quindi sarà chiave eserna (codice_ord) sia in Composizione_ordine, sia in Carrello e sia in Composizione_carrello, ma se ragiono il codice_op viene settato in Composizione_carrello e poi arriva in Ordine --->DUBBIO: è quindi l'inverso??ossia codice è sì chiave primaria di Ordine, ma è chiave esterna di Composizione_carrello??? Qui mi inceppo proprio


    grazieee mille a chi avrà la pazienza di aiutarmi
    Immagini allegate Immagini allegate

  2. #2
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Non duplicare "ordine" e "carrello", è solo una duplicazione inutile.
    Crea un "documento" con un campo che marca "tipodocumento" (ordine, carrello, magari anche DDT e fattura), e magari anche un flag di stato del tipo carrello_non_confermato;carrello_confermato;ordine ;ordine_non_confermato;ordine_checkout;ddt;spedito ;fatturato;pagato blablabla

    Questo rende pressochè immediato fare ricerche tra i documenti, avanzarli di stato, fare statistiche etc (quanti ordini non confermati ci sono?)
    Anche facile fare un archivio storico dove spostarli, basta copiare tutti i campi senza pietà.

    cliente_id va evidentemente denormalizzato, cioè devi tenere tutti i dati del cliente (nome, cognome ma soprattutto contatti e dati di spedizione), perchè se un cliente ti cambia l'indirizzo, tutti i vecchi documenti "magicamente" prenderebbero il nuovo dato, e questo è male per questa tipologia di dati

    per il resto non so, l'immagine è minuscola e poco definita

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    94
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    Non duplicare "ordine" e "carrello", è solo una duplicazione inutile.
    Crea un "documento" con un campo che marca "tipodocumento" (ordine, carrello, magari anche DDT e fattura), e magari anche un flag di stato del tipo carrello_non_confermato;carrello_confermato;ordine ;ordine_non_confermato;ordine_checkout;ddt;spedito ;fatturato;pagato blablabla

    Questo rende pressochè immediato fare ricerche tra i documenti, avanzarli di stato, fare statistiche etc (quanti ordini non confermati ci sono?)
    Anche facile fare un archivio storico dove spostarli, basta copiare tutti i campi senza pietà.

    cliente_id va evidentemente denormalizzato, cioè devi tenere tutti i dati del cliente (nome, cognome ma soprattutto contatti e dati di spedizione), perchè se un cliente ti cambia l'indirizzo, tutti i vecchi documenti "magicamente" prenderebbero il nuovo dato, e questo è male per questa tipologia di dati

    per il resto non so, l'immagine è minuscola e poco definita

    Innanzitutto grazie per avermi risposto, mi sei stato di grande aiuto
    Quello che mi hai scritto mi ha fatto ragionare molto, ed hai perfettamente ragione faccio solo delle duplicazioni, allora ho pensato di eliminare il concetto di Carello e Composizione_carrello perchè i dati li attingo dal "sito", ossia....il cliente mette i libri nel carrello, quando clicca su conferma l'ordine nel carrello, ci sarà una funzioncina (pl/sql) che prende i dati e li mette nella tabellina Composizione_Ordine e così via.
    La classe che mi fa da archivio sarà Ordine, in cui per ogni ordine distinto avrò una sola tupla.

    Inserire la classe Carrello, credo a questo punto, che sia inutile...e ritorno alla mia idea iniziale, che il carrello appartiene al sito e si riempie e si svuota durante la stessa sessione.


    Però mi resta il dubbio sulla chiave primaria di Ordine, codice........siccome io la setto in Composizione_ordine (codice_ord) in Ordine è chiave esterna di composizione_ordine. Giusto??
    Perchè se facessi che in Composizione_ordine è chiave eserna di Ordine, oracle non mi fa inserire nemmeno una riga in composizione_ordine . Spero si capisca quello che voglio dire

    Ordine(codice, cliente_id, importo_tot, data, pagato,spedito)

    Composizione_Ordine(codice_ord, libro_id, quantità, prezzo)


    Per quanto riguarda i dati del Cliente, si il diagramma non era completo, ho una classe a parte Profilo Cliente

    Provo ad allegare il diagramma, sperando che questa volta si legga

    Grazie mille diagramma.jpg

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.