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