2009-10-01 5 views
0

J'ai actuellement ajouté un peu de fonctionnalité qui gère les locations de vacances sur un CMS qui fonctionne sur PHP et MySQL.Mise à jour des tables de liens

Le CMS stocke les détails de la propriété sur deux tables et j'ajoute une troisième table (letting_times) qui contiendra des informations sur le moment où les personnes séjournent dans la propriété. Fonctionnalité de base permettrait à l'utilisateur d'ajouter de nouveaux moments quand un invité reste, modifier les heures que le client reste et supprimer la réservation si le client ne veut plus rester à la propriété.

À l'heure actuelle, la meilleure façon de penser à la mise à jour des heures d'occupation de la propriété consiste à supprimer tous les temps contenus dans la base de données letting_times et à les réinsérer. La seule autre façon que je peux penser pour faire cela serait d'inclure la clé primaire de la table et faire une mise à jour si elle est présente et a une valeur, sinon faire une insertion, mais cela ne supprimerait pas les lignes de données.

Y a-t-il une meilleure façon de procéder?

Répondre

0

Voilà ma recommandation pour la table LETTING_TIMES:

  • PROPERTY_ID, pk & fk
  • EFFECTIVE_DATE, pk, DATE, non null
  • EXPIRY_DATE, DATE, non null

Réglage le pk pour être une clé composite (PROPERTY_ID et EFFECTIVE_DATE) tous vous permet d'avoir plus d'un enregistrement pour une propriété donnée tout en les empêchant d'être le même jour. Il n'existe pas de moyen facile d'empêcher le chevauchement des sous-locations, mais cela réduirait la nécessité de supprimer tous les temps contenus dans une propriété &.

+0

Cela permet d'éviter la double réservation des locations, mais je ne vois pas comment cela serait utile si une réservation est annulée. Par exemple, il y a trois réservations pour une propriété. Si la réservation n ° 2 est annulée et qu'une autre réservation est ajoutée, je ne vois pas comment ajouter la nouvelle réservation et supprimer la réservation annulée sans tout supprimer et recommencer à zéro. – Sasha

+0

Pour gérer une annulation, vous supprimez l'entrée appropriée - pas tous les enregistrements. La suppression en gros est une mauvaise approche. –

Questions connexes