DB agenzia

di il
4 risposte

DB agenzia

Ciao a tutti, sono nuovo alla progettazione dei db e mi servirebbe un aiuto per far partire il mio progetto PHP+MYSQL.

La traccia è quella di un'agenzia viaggi che vende tour (che hanno varie date di partenza durante l'anno e prevedono pacchetti per hotel di 3/4/5 stelle): il sito deve avere un'area di amministrazione in cui si possano aggiungere nuovi tour e creare preventivi per i clienti che lo richiedono. Escluso il lato PHP, ho qualche difficoltà a strutturare il database.

Le informazioni note sono:

nome del tour, Paese del tour (es. Spagna), date di partenza, Descrizione, prezzo per adulto, prezzo per bambino, tipo di viaggio (di gruppo o privato).

Immaginavo di strutturare il db in questo modo

Tabella Tour
id_tour
nome
descrizione


Tabella Paese
id_paese
nome
moneta
clima

Tabella Clienti (da raccogliere dal form dei preventivi?)
id_cliente
nome
cognome
email
telefono

Tabella Hotel (da incrociare coi tour?)
id_hotel
nome
stelle
prezzo_a_persona


Ho anche i seguenti problemi, a questo punto:
- gli hotel sono legati a pacchetti (es. tot da gennaio a giugno, tot diverso da settembre a dicembre), quindi non so come relazionarli con i tour.
- dove inserisco le date di partenze? Sono parecchie, per ogni tour

Grazie a chi potrà darmi una mano

4 Risposte

  • Re: DB agenzia

    Per creare le relazioni tra tabelle devi avere corrispondenti campi ID che svolgono il ruolo di FK=ForeignKey=ChiaveEsterna.

    La tabella Tour deve avere un campo IDPaese dal lato molti. Quindi relazione Paesi.IDPaese uno-a-molti Tours.IDPaese.
    Un Tour ha molte Partenze...che forse sono legate anche agli Hotel. Penserei una tabella DettagliTours dove indichi queste cose. Quindi Tours uno-a-molti DettagliTours. Ovviamente tabella Hotels uno-a-molti DettagliTours.
    Un Tour ha molti Clienti. Un Cliente può partecipare a molti Tours. Quindi Tours molti-a-molti Clienti da esplicitare con tabella di congiunzione Partecipanti.
    Forse mancano le Località delle tappe intermedie...anche queste ce le vedrei in DettagliTours.

    Questo a grandi linee. Se servono altri dettagli...devi fornirli.
  • Re: DB agenzia

    OsvaldoLaviosa ha scritto:


    Per creare le relazioni tra tabelle devi avere corrispondenti campi ID che svolgono il ruolo di FK=ForeignKey=ChiaveEsterna.

    La tabella Tour deve avere un campo IDPaese dal lato molti. Quindi relazione Paesi.IDPaese uno-a-molti Tours.IDPaese.
    Un Tour ha molte Partenze...che forse sono legate anche agli Hotel. Penserei una tabella DettagliTours dove indichi queste cose. Quindi Tours uno-a-molti DettagliTours. Ovviamente tabella Hotels uno-a-molti DettagliTours.
    Un Tour ha molti Clienti. Un Cliente può partecipare a molti Tours. Quindi Tours molti-a-molti Clienti da esplicitare con tabella di congiunzione Partecipanti.
    Forse mancano le Località delle tappe intermedie...anche queste ce le vedrei in DettagliTours.

    Questo a grandi linee. Se servono altri dettagli...devi fornirli.
    Ciao Osvaldo, intanto grazie per la risposta.

    Provo a spiegarti meglio la logica con un esempio:

    - Ho un tour "Giro dell'Andalusia"
    - Appartiene alla Paese "Spagna"
    - Appartiene alla tipologia "Tour di gruppo" (che si alterna a "Tour privato")
    - Durata "10 giorni"
    - Ha date di partenza varie (3 e 15 gennaio, 10 e 22 febbraio, etc etc) tutto l'anno
    - Il giro tocca diverse città: Valencia, Granda, Cordoba.
    - Gli hotel dei pernottamenti nelle città possono essere 3 o 4 stelle.
    - Il prezzo del viaggio a persona dipende dal numero di stelle dei pernottamenti, con relativi supplementi "uso singola", prezzo per letto extra, etc.
    - il prezzo è 500 da Gennaio ad Aprile e da Ottobre a Dicembre, 600 da Maggio a Settembre (se scegli 3 stelle, aumentano entrambi nel pacchetto da 4 stelle)
    - Il tour ha alcuni costi extra: obbligatori (voli domestici) e opzionali (escursioni varie).


    Sulla base delle tue indicazioni ho provato a buttare giù uno schema di relazioni, considerato che :

    Tabella Tour id_tour, titolo, id_paese, id_tipo, durata?, id_partenze, descrizione, itinerario
    Tabella Paese id_paese, nome_paese
    Tabella Hotel id_hotel, id_località, nome, stelle
    ipotesi Tabella Partenze id_partenza, anno, mese, giorno, prezzo ipotesi
    Tabella Località id_località, nome_località, id_paese
    Tipologia Tour id_tipo_tipologia

    cosi da estrarre tutti i dati richiesti relativi ad ogni tour.
    Qui ti domando una cosa extra: come posso strutturare il form di inserimento di un nuovo tour?

    E per ultima, per consentire di creare un preventivo, il cui nome cliente vorrei recuperarlo dal form di contatto sul sito

    Tabella Clienti _id_cliente, nome, cognome, email, id_tour.

    Pensi che cosi strutturati possano funzionare e avere una logica?

    Grazie ancora
  • Re: DB agenzia

    Io vedrei alcune cose così:

    Paesi
    IDPaese
    Paese

    NomiTours
    IDNomeTour
    NomeTour
    IDPaese

    Tours
    IDTour
    DataPartenza
    IDNomeTour
    Tipologia

    Clienti
    IDCliente
    Cognome
    Nome
    Indirizzo
    ...altri campi tipicamente anagrafici…

    Partecipazioni
    IDPartecipazione
    IDCliente
    Prezzo
    IDTour

    DettagliTours
    IDDT
    ...qua mi perdo un po'...perché secondo me puoi descrivere sia le Località da visitare, sia gli hotels. Praticamente tracci passo passo i vari steps del tour con i corrispondenti Times (Data/Ora).

    Relazioni che credo di aver capito finora:
    Paesi.IDPaese uno-a-molti NomiTours.IDPaese
    NomiTours.IDNomeTour uno-a-molti Tours.IDNomeTour
    Tours.IDTour uno-a-molti Partecipazioni.IDTour
    Clienti.IDCliente uno-a-molti Partecipazioni.IDCliente
    ...poi ci potrebbero essere ancora…
    Tours.IDTour uno-a-molti DettagliTours.IDTour
    Luoghi.IDLuogo uno-a-molti DettagliTours.IDLuogo (dove per Luogo intendo sia un Luogo da visitare, sia un hotel…)

    lore21 ha scritto:


    Qui ti domando una cosa extra: come posso strutturare il form di inserimento di un nuovo tour?

    lore21 ha scritto:


    E per ultima, per consentire di creare un preventivo, il cui nome cliente vorrei recuperarlo dal form di contatto sul sito
    Tabella Clienti _id_cliente, nome, cognome, email, id_tour.
    In questa sezione del forum discutiamo solo la struttura tabelle. Per rispondere a queste domande apri nuove discussioni nella sezione dedicata all'applicazione che usi tu.
  • Re: DB agenzia

    Credo che dovresti lavorare su una tabella CALENDARI (o tour)
    inserisci la data, verifichi le disponibilità da tabella ALBERGHI, filtrata per luoghi, capienza, stelle, disponibilità ecc...( tutti i dati della stanza) man mano che crei il tour azzeri la disponibilità della stanza.
Devi accedere o registrarti per scrivere nel forum
4 risposte