Structure BDD pour calendrier réservations

  • Auteur de la discussion Auteur de la discussion OJAL
  • Date de début Date de début
WRInaute impliqué
Bonjour,

Je dois développer une appli qui est un calendrier de réservations.
Ce calendrier indique simplement jour par jour un attribut binaire libre ou occupé.
Le planning est géré sur 2 années glissantes à partir de la date actuelle.
A terme le service devrait gérer jusqu'à 5.000 plannings et on peut penser avoir jusqu'à 10.000 consulations de planning par jour...

Je me pose la question de la modélisation des données en BDD...
Basiquement, on peut faire un enregistrement par date en indiquant la disponibilité, mais cela va donc générer jusqu'à 700 enregistrements par planning. De plus pour chaque consultation, chauqe jour affiché génèrera une requête MySQL ce qui me semble un peu important.

Aussi pour minimiser les requêtes SQL, je pensais enregistrer une chaine de caractères pour chaque année. Dans cette chaine, on retrouve autant de caractères que le nombres de jour de l'année et on associe par exemple la valeur 0 si l'attribut est libre et 1 s'il est occupé. Le premier caractère représente l'état de disponibilité du premier jour de l'année et anisi de suite...
Ceci génère plus de traitements au niveau de PHP, mais minimise les requêtes SQL...

Une solution intermédiaire est aussi de stocker mois par mois plutôt qu'année par année...?

Qu'en pensez-vous?
Y-a-t-il une meilleure solution à laquelle je n'aurais pas pensé?

Merci par avance pour vos conseils ;-)
 
WRInaute discret
Vas-y avec un enregistrement par date (insère seulement une ligne si il y a réservation). C'est très simple et tu ne devrais pas avoir de problème de performance car c'est des SELECT simples que tu auras à faire. N'oublie pas de mettre des index sur tes champs.

De plus pour chaque consultation, chauqe jour affiché génèrera une requête MySQL ce qui me semble un peu important.

Je comprend pas trop... Peu importe la solution, chaque chargement de page va engendrer une requête.

Si tu veux récupérer toutes les réservations du mois pour un planning, t'auras juste à faire:

SELECT count(*) FROM reservations WHERE YEAR(la_date)='2007' AND MONTH(la_date)='6';


ps: Même avec 10 millions de lignes la durée typique de la requête mysql devrait tourner autour du centième de seconde dans le cas d'un simple SELECT.
 
Nouveau WRInaute
J'ai développé un calendrier de réservations en php que l'on peut inclure sur son site perso.

Pour l'essayer, rendez-vous sur http://www.shared-house.com , créez un compte, une location et cliquez sur l'option "Webmaster". C'est gratuit.

Vous pourrez alors copier le code HTML proposé sur votre site web et disposer ainsi d'un calendrier de réservation / disponibilités.

Toutes les fonctionnalités sont expliquées en détail sur cette page:
http://www.shared-house.com/index_booking_calendar.php

Le système permet également de gérer soi-même une liste d'utilisateurs avec 2 profils (profil propriétaire et profil utilisateur simple avec droits restreints) pour le cas des logements de vacances dont l'occupation peut être partagée entre membres d'une même famille ou d'un groupe.
 
Discussions similaires
Haut