Costruire un sistema di prenotazione

1

Sto avviando un nuovo progetto su cui sto creando un sistema di prenotazione come applicazione web PHP / MySQL.

Le funzionalità di base dovrebbero essere:
admin può aggiungere appuntamenti predefiniti (diversi giorni pro day)
utenti possono partecipare agli appuntamenti (con un set di admin max ).

Attualmente sto cercando di capire come creare la struttura del database.

Stavo pensando di creare due database del calendario:

default_calendar
- description
- day_of_week
- time_start
- time_end
- spots

extra_calendar
- description
- date_start
- date_end
- time_start
- time_end
- spots
- status  (1: available | 0: not available)

Questo è abbastanza semplice e fattibile.

La mia sfida è registrare gli appuntamenti.

Due soluzioni sono state pensate:

Una tabella

Crea una tabella con le prenotazioni:

reservations
- id
- name
- date
- time_start
- time_end
- status (1: paid | 0: not paid)

O due tabelle

Uno per l'evento
Uno per le prenotazioni

event
- event_id
- date
- time_start
- time_end
- number_attending

reservation
- res_id
- event_id
- name
- status (1: paid | 0: not paid)

Il vantaggio della prima soluzione è che è necessaria solo una tabella. Inoltre, quando le prenotazioni vengono annullate, è più semplice da elaborare

Il vantaggio della soluzione due è che la gestione delle query è più semplice, mentre per ogni evento esiste un singolo record del database.

Che cosa suggerisci o hai un'idea ancora migliore?

    
posta LinkinTED 03.07.2017 - 15:41
fonte

1 risposta

2

L'opzione 1 viola NF1 .

Ciò significa che il nome dell'evento verrà ripetuto in ogni prenotazione (ridondanza dei dati) e consentendo anomalie di aggiornamento e di inserimento.

Ciò significa che sarebbe possibile modificare il nome o l'evento per le prenotazioni che appartengono allo stesso ID evento. Oppure fai lo stesso quando inserisci. Ciò significa anche che gli utenti probabilmente dovranno digitare il nome stesso dell'evento invece di selezionare da un elenco, poiché non esiste un elenco di eventi. Si finirà con le prenotazioni per "Concerto di beneficenza", "Concerto di beneficenza", "Concerto di Hcarity", "CONCERTO DI BENEFICENZA" ecc., Tutti riferiti allo stesso evento.

  • L'opzione 1 è un no-go.
  • L'opzione 2 è la strada da percorrere.
risposta data 03.07.2017 - 22:14
fonte

Leggi altre domande sui tag