2016-12-21 1 views
0

Je suis en train de développer un système de réservation de rendez-vous pour les patients et de suivre le schéma que j'ai établi. Pourriez-vous vérifier et laissez-moi savoir si les entités et leurs relations sont correctes. Je regarde un système de base où, lorsque l'utilisateur se connecte, il peut prendre rendez-vous pour un médecin et un patient. Il devrait être en mesure de voir la liste des médecins et leur créneau horaire disponible lors de la réservation.Conception d'un système de réservation de rendez-vous

**Patient** 
Id 
FirstName 
LastName 
DateOfBirth 
Gender 
Phone 
Email 
Address 
City 

**Apppointment** 


    Id 
    AppointmentTypeId 
    Date 
    Time 
    Notes 
    PatientId 
    PractionersId 

AppointmentType Id Nom

Praticien

Id 
FirstName 
LastName 
PractionerTypeId 

PractionerType

Id 
PractionerType 

Répondre

0

Si vous utilisez le schéma en étoile, vous pouvez supprimer les notes de la table de rendez-vous car cela ressemble à votre table de faits. Si vous avez des chaînes de caractères massives, cela pourrait vous causer des problèmes de performance à l'avenir car pratiquement toutes les requêtes concevables devraient passer par cette table. Bien sûr, ça dépend de la taille. Some tips on star schemas here

+0

Salut JIm, si je déplace les notes, alors où il devrait résider. Pourriez-vous situer l'exemple du schéma en étoile dans ce cas. Je suis passé par le lien que vous avez partagé mais je n'ai pas beaucoup de sens pour moi à ce stade. Peut-être un exemple de la façon dont cela est fait va me donner une meilleure compréhension – Tom

+0

Eh bien, tout comme vous avez le type de rendez-vous sur une autre table, vous pouvez avoir un tableau de détails de rendez-vous avec les notes. http://datawarehouse4u.info/Data-warehouse-schema-architecture-star-schema.html pourrait être un meilleur résumé d'un schéma en étoile – Jim

0

Il vous manque une table PractitionerAvailableHours.

PractitionerAvailableHours Table

  • PractitionerId
  • AvailableDate
  • AvailableHours

Qu'Info jumelé avec les rendez-vous déjà faites par ce praticien devrait vous donner l'ordre du jour disponible pour chaque un.

+0

Devrait-il être AvailableHours ou Temps disponible. Quel type de données devrait-il être. – Tom

+0

Cela dépend de vos besoins. Mais vous pouvez utiliser un Time (ou la partie temps d'un datetime) et avoir autant de lignes dans cette table que de slots disponibles pour le PractitionerHas. Vous devriez définir les slots comme vous le souhaitez, bien que le slot 15min ou 30min devrait suffire. Cela ferait partie de votre interface utilisateur. Dans la base de données, vous disposez d'une ligne pour chaque emplacement disponible et les rendez-vous doivent prendre autant d'emplacements que nécessaire. –