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

    [MySQL]Consiglio su database per centro estetico

    Ciao a tutti.
    Come da titolo volevo un consiglio su un database che sto facendo per un ipotetico centro estetico. Vengo subito al dunque, ho un dubbio sulle prenotazioni che vengono prese dalla segreteria...in pratica, un cliente può richiedere una prenotazione di un pacchetto(che quindi comprende già diversi trattamenti) oppure la prenotazione di più trattamenti.

    Allora ho pensato di fare una tabella:
    - Prenotazione(idPrenotazione(key),data,oraInizio,or aFine,codiceFiscale);

    ed un'altra:
    - DettaglioPrenotazione(idPrenotazione,codiceFiscale ,idTrattamento,idPacchetto);

    Con la tabella Prenotazione memorizzo una prenotazione per un determinato cliente(codiceFiscale), mentre nell'altra DettaglioPrenotazione memorizzo il trattamento o l'eventuale pacchetto scelto...la cosa che non mi convince è questa:

    Se memorizzo una prenotazione con id=1 con una certa data e ora per un cliente con codiceFiscale xxxxx..xxx, poi nell'altra non mettendo chiavi primarie memorizzo diverse righe con idPrenotazione=1 dove cambiano i relativi idTrattamento. In pratica ho una riga per ogni trattamento scelto dal cliente xxxxx..xxx.

    E' un pò come il discorso che in genere si fa per una fattura dove quest'ultima probabilmente sarà costituita da un certo numero di righe che contengono i vari prodotti acquistati, quindi sarà necessario avere un'altra tabella DettaglioFattura che conterrà:
    ID_Fattura (Per fare il legame con la Fattura),IDProdotto (Per sapere quale prodotto) e Quantità (la quantità di prodotto comperato) ...voi cosa mi consigliate, sto ragionando male?
    Grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Prima di tutto, non utilizzerei mai il CodiceFiscale per identificare un cliente, ma sempre e solo il relativo IDCliente (o la chiave primaria che hai nella tua tabella Clienti).
    Pensa che se l'operatore ha sbagliato ad inserire il CodiceFiscale del cliente (o il cliente stesso l'ha fornito sbagliato, e succede!) poi dovrai andare a correggere una per una anche tutte le righe dei dettagli!
    Se invece usi l'IDCliente (che è univoco) non devi fare assolutamente niente.

    Il tuo paragone con le fatture è corretto.

    Riguardo al tuo dubbio... non si capisce qual'è, nel senso che mi pare corretto agire come hai scritto.
    Comunque non è corretto. a mio avviso, non avere una chiave primaria nelle righe di dettaglio.

    Puoi essere più specifico?


  3. #3
    Ciao. Innanzitutto, grazie mille!!Si effettivamente hai ragione per quanto riguarda il codice fiscale...devo essere più attento e cercare di pensare ai casi reali.
    Per quanto riguarda il mio dubbio, è proprio sul fatto se avere in dettaglioPrenotazione una chiave primaria. Cioè a me interessava avere un'unica prenotazione(si intende per la stessa giornata) dove posso prenotare più trattamenti per un certo cliente.
    Esempio:
    Prenotazione:
    - idPrenotazione=1 di un cliente X con una certa data
    - idPrenotazione=2 di un cliente Y con una certa data

    DettaglioPrenotazione:

    - idPrenotazione=1 codTrattamento=T01
    - idPrenotazione=1 codTrattamento=T02
    - idPrenotazione=2 codTrattaemtno=T01

    Sottolineo che idPrenotazione è una references con la tabella Prenotazione...
    In pratica per una giornata il cliente X ha prenotato due trattamenti, mentre il cliente Y un solo trattamento...Questo però è possibile se non uso la chiave primaria in questo modo non ho problemi di duplicati...altrimenti dovrei semplicemente fare una sola tabella prenotazione che comprende il codTrattamento e faccio una query in questo modo: SELECT codTrattamento FROM Prenotazione WHERE idCliente = X AND data = Z
    E dovrei ottenere le prenotazioni di quel cliente per quella giornata, giusto?

    Per quanto riguarda invece il discorso delle fatture, per certi versi è simile perché in DettaglioFattura devo avere una traccia dei prodotti associati quella determinata fattura con id=k. Pertanto, idFattura non deve essere chiave primaria altrimenti ho problemi sui duplicati...
    Spero di essere stato più chiaro...

    Grazie mille!!

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.