Gestionale prenotazione libri

di il
5 risposte

Gestionale prenotazione libri

Ciao a tutti!
Ho bisogno di aiuto per un database che ho creato l'anno scorso per la gestione delle prenotazioni di libri scolastici.
Praticamente l''anno sorso un cliente entrava mi dava la lista di libri, io li prenotavo al fornitore e quando arrivavano glieli consegnavo, molto semplice

Problema n. 1:
Quando vado a inserire un ordine nuovo di un cliente che mi ha già consegnato un ordine l'anno precedente, il programma non mi crea un ordine nuovo, ma va ad aggiornare quello vecchio.

Problema n. 2:
Non riesco bene a inquadrare la relazione tra cliente e ordine: a un cliente corrispondono più ordini, ma a un ordine corrisponde uno ed un solo cliente.....da un parte è una relazione uno-a-molti ma nell'altro senso è una relazione uno-a-uno, proprio non riesco a creare la relazione giusta.

Non sono sicura di avere fatto bene ma ho le seguenti tabelle:
Clienti (anagrafica cliente)
Ordini (anagrafica di ogni singolo ordine)
Dettaglio ordini (sotto-tabella che mi permette di creare la relazione molti-a-molti tra clienti e libri)
Libri (anagrafica libro)

Non riesco proprio a risolvere questi problemi, mi date una mano? E mi dite anche che informazioni avete bisogno?

Grazie mille,
Inoha

5 Risposte

  • Re: Gestionale prenotazione libri

    La risposta al primo quesito mi pare ovvia... se non sei tu a generare l'ordine, a secondo di come hai gestito il tutti mi pare evidente quello che dici...
    L'ordine quando è stato evaso deve essere chiuso... ogni ordine deve essere indipendente da altri ordini... quindi quello che puoi fare è clonare il precedente per generare il nuovo... poi modificare quest'ultimo...
    il tutto è da realizzare nulla di automatico.

    La 2° domanda invece richiede più chiarezza...Anagrafica clienti ed Ordini 1-M ma ogni ordine andrà in Molti-Molti con le anagrafiche dei libri...
  • Re: Gestionale prenotazione libri

    Inoha ha scritto:


    Non sono sicura di avere fatto bene ma ho le seguenti tabelle:
    Clienti (anagrafica cliente)
    Ordini (anagrafica di ogni singolo ordine)
    Dettaglio ordini (sotto-tabella che mi permette di creare la relazione molti-a-molti tra clienti e libri)
    Libri (anagrafica libro)
    Se dai un'occhiata al famoso database di esempio Northwind, troverai una situazione analoga alla tua. Riepilogando, il quadro tabelle-relazioni dovrebbe essere questo:
    Clienti uno-a-molti Ordini
    Ordini molti-a-molti Libri attraverso la tabella di congiunzione DettagliOrdini.
  • Re: Gestionale prenotazione libri

    Grazie a entrambi per le vostre risposte!

    Per il secondo problema, evidentemente sbagliavo la logica delle relazioni, proverò a modificarle.

    Per il primo problema scusate ma non ho proprio capito: se un cliente nel 2014 mi consegna l'ordine n. 7, lo stesso cliente nel 2015 magari mi consegnerà l'ordine n. 63.
    Anche se gli ordini hanno due numeri diversi, il programma mi mette i libri nella stessa lista.

    Ok che è....ovvio (giuro che per me non lo è), il punto è cosa sbaglio? Io voglio ottenere qualcos'altro. Come faccio a far dire al programma che quell'ordine è chiuso e che me ne deve generare un altro con lo stesso nome?
    E qui mi collegherei al problema numero uno: un cliente tanti ordini - un ordine un cliente, dite che se modifico le relazioni alla luce di quanto mi avete spiegato risolvo anche il problema n. 1?

    Comunque ritirerò fuori Northwind (che ho guardato e analizzato, senza cavare un ragno dal buco) e cercherò di trovare risposta ai miei problemi...

    Grazie!
    Valeria
  • Re: Gestionale prenotazione libri

    1. Devi prevedere il comando NUOVO, che genera appunto un nuovo ordine, inizialmente vuoto.
    La maschera dovrebbe essere la tipica Master-Details in cui nella parte superiore Master
    imposterai la 'testata' dell'ordine (dati del cliente, data ordine, ecc.).
    Mentre nella griglia sotto (Details) aggiungi i libri.

    2. Attento che Ordini e Ordini/Dettagli non è sempre bene relazionarle ai Clienti.
    Questo perché in realtà queste due tabelle sono uno storico, in cui i dati del cliente potrebbero cambiare nel tempo (es. cambia indirizzo) quindi è giusto creare una relazione tra padre e figlio (ordini e dettagli) ma così non è per quella Clienti.
    Come regola generale queste tabelle devono 'vivere' indipendentemente.
    Stessa cosa anche per le Fatture (padre e figlio).
  • Re: Gestionale prenotazione libri

    Inoha ha scritto:


    Comunque ritirerò fuori Northwind (che ho guardato e analizzato, senza cavare un ragno dal buco)
    Ti capisco dal punto di vista psicologico. Comprendo che capita spesso e volentieri di perdersi in un bicchier d'acqua.
    Riepilogando bene bene, queste le tabelle e le relazioni:

    Clienti
    IDCliente (numerazione automatica, chiave primaria)
    Cliente
    Indirizzo
    IDComune (se vorrai prevedere una tabella Comuni a parte)
    Telefono
    Cellulare
    e-mail
    ...tanti altri campi tipicamente anagrafici...

    Ordini
    IDOrdine (numerazione automatica, chiave primaria)
    DataOrdine
    ...altri campi...
    IDCliente (numerico)

    Libri
    IDLibro (numerazione automatica, chiave primaria)
    Titolo
    ...altri campi...

    DettagliOrdini
    IDDettaglio (numerazione automatica, chiave primaria)
    IDOrdine (numerico)
    IDLibro (numerico)

    Relazioni:
    Clienti.IDCliente uno-a-molti con Ordini.IDCliente
    Ordini.IDOrdine uno-a-molti con DettagliOrdini.IDOrdine
    Libri.IDLIbro uno-a-molti con DettagliOrdini.IDLibro

    Quando crei le relazioni nella finestra Relazioni, abbi cura di mettere sempre la spunta su "Applica integrità referenziale" per dare piena efficacia alla relazione.

    Con questa struttura tabelle tutte le tue domande assumono un altro significato e noterai tu stessa che molte considerazioni vengono prese da altro punto di vista.
Devi accedere o registrarti per scrivere nel forum
5 risposte