Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1682 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Crénaux horaires

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Crénaux horaires

n°2218002
teddi
Posté le 29-01-2014 à 11:29:51  profilanswer
 

Bonjour tout le monde,
 
je suis nouvelle sur ce forum et en prog de base de données et je sollicite votre aide.
en effet dans le cadre d' un projet de fin fin d`étude je voudrais faire évoluer une application de réservation de salles de conférence (certes programmée au départ par un collègue mais sur laquelle j'ai déjà eu à ajouter un certain nbre de modules ).
Là où je coince depuis maintenant plusieurs semaines c'est l' élaboration d' un concept qui me permette d' installer un créneaux horaires flexible.
Qui permettrait aux administrateurs pour chaque salle de fixer une Tranche horaire  pendant laquelle la dite salle pourrait être réservée.
 
Site: j'ai deux sites et sur un des sites j' ai 2 bâtiments
intervalles réprésente ici l' intervalle de temps qui séparera 2 réservations
 
Cet intervalle servira par exemple au nettoyage de la salle.
 
Les tables que j' ai ciblées comme étant importantes de ma base sont:
-Réservation(id : numéro identifiant de la réservation (clé de la table)
heure_debut  :  l'heure du début de la séance
 
heure_fin  :  l'heure de la fin de la séance  
 
date_début  : date de début de la séance
 
date_fin  :  date  de la fin de la séance
 
salle_id : l'identifiant de la salle réservée): qui contient la liste de toutes les réservations  
 
Salle: (id : numéro identifiant de la ressource (clé de la table)
domaine_id : identifiant du domaine  auquel elle est rattachée
 
nom_salle: nom de la ressource
 
description : description courte des fonctionnalités de la ressource
 
capacité : capacité (nombre de place dans le cas d'une salle, 0 sinon)
 
max_Pers : nombre maximum de réservations par utilisateur (-1 si illimité)
 
typ_salle: type de salle)  
 
Elle contient la liste des ressources (des salles)
Merci  pour vos conseils

mood
Publicité
Posté le 29-01-2014 à 11:29:51  profilanswer
 

n°2218241
gpl73
Posté le 31-01-2014 à 12:24:40  profilanswer
 

si tu te fais une table des interventions avec  une durée d'intervention...
avec une durée spécifique...
puis tu integres ça dans ton planning? c'est pas assez flexible?
Intervention
intervention1 type 1  15 min ....
intervention2 type 2  30 min
 
Dans ton planning:
Réservation
ID, Date-Heure Debut, Date-Heure Fin, Id_Intervention (+/- Durée Intervention (venant de ta table à toi de voir) , Date-Heure Libre (= champ calculé = Date-heure Fin + Durée intervention ...
 
Après... plus qu'à travailler avec cette nouvelle date-heure "libre"...
 
Pourquoi mettre -1 dans ton nombre max de réservations par utilisateur?
Tu n'as pas la possibilité de créer un champ spécifique à cette notion?
En plus, cela ne semble, pas lié à ta salle... mais à celui qui réserve...
Bizzard :)
 
2 petits conseils, de vieux :)
Moins tu devoies la signification d'un champ, mieux tu te porteras ...  
Au lieu de mettre une valeur "bidon", style -1, 9999999,0, utilises la valeur null  (vide, non renseignée, nada) ... :)
... avec un alter table, cela doit passer ou alors à la création...
et après gères le fait que ta zone est null dans tes requetes...
=> pas de valeur parasite en cas de sum (pas exemple)... et tu dois avoir au pire une fonction du style ifnull(mazone, 0) ...
Guillaume

n°2218276
teddi
Posté le 31-01-2014 à 17:56:09  profilanswer
 

Merci Guillaume pour cette réponse,
j' aimerai Stp néanmoins avoir une petite précision:  
lorsque tu dis: (+/- Durée Intervention (venant de ta table à toi de voir)
de quoi parles-tu?
 
nombre max de réservations par utilisateur?  
Tu n'as pas la possibilité de créer un champ spécifique à cette notion?  
En plus, cela ne semble, pas lié à ta salle... mais à celui qui réserve...  
 
Si max de réservation par utilisateur est bien lié à ma salle.
 
"Moins tu devoies la signification d'un champ, mieux tu te porteras " Ici non plus je ne comprends pas ce que tu veux dire.
En tout cas merci beaucoup pour tes conseils qui me sont d' une aide précieuse et que je met de suite en pratique.

n°2218435
gpl73
Posté le 03-02-2014 à 14:29:03  profilanswer
 

Bonjour!
1er point :
si tu crées la table intervention  (id, description, type, durée...)
et que dans ta table reservation tu ajoutes la clé de l'ID_intervention pour retrouver la durée de cette intervention...
tu peux dans certains cas dénormaliser ta base et ajouter la durée correspondante dans ton enregistrement (réservation)?
c'est à toi de voir... si cela est profitable en traitement, performance...
et aussi en évolutivité...
 
Concernant le 2nd point :
max_Pers : nombre maximum de réservations par utilisateur (-1 si illimité)  
Cela me semble (comme ça, sans trop connaitre ta base), une notion de droit lié à un utilisateur et non à la réservation de la salle en elle même. Non?
Si c'est bien le nombre max de réservation pour un utilisateur:
c'est bizzard que tu "stockes" cette information à cet endroit.
Ne serais ce pas plus dans la table utilisateur que tu devrais avoir ça ?
et si celui ci est couplé à une notion de droit (illimitée ou non)
crées plutot un champ boolean reprenant cette notion...
tu te feras moins c...r dans tes requetes et tes regles de gestions ne seront que plus simples à écrire et à maintenir...
exemple : USER X : Pas illimité  et salle max d'autorisée  
=> select count (*) from reservation where user ='X' sur 1 période donnée
en fonction de ces 3 info : tu gères la gestion la possibilité de reserver une nouvelle salle ou pas... super simple , non?
 
Plus simple que de faire un select max (max de reservation) sur ta table réservation? et de le comparer à quoi?  
 
Et on en arrive au 3eme point:
un champ = un type d'information...
Plus tu resteras fidele à ce principe... moins tu seras embétée dans la maintenance, l'évolutivité de tes regles de gestions et de ta base.
ex :
Je reviens au nombre de réservation...:)
le nombre max de réservation  est un nombre de salle reservée au dela duquel ton utilisateur ne peut plus réserver de salle, ok?
et donc un nombre de salle ne peut pas être négatif au pire il sera null, car pas renseigné.
 
Le fait que ce nombre de réservation peut être illimité ou pas, n'est pas de son "ressort", car ce n'est pas sa propriété, pas sa définition, et donc quand tu as besoin de cette notion, tu ne dois pas aller chercher ce champ, mais le champ relatif à cette notion "de droit" ...
Pour cela, tu crées un champ "propre" , Réservation illimitée Oui/Non
et un champ nombre de réservation autorisée : (>= 0 et /ou null )
Null dans le cas (où ce n'est pas renseigné, à toi de voir) ou dans le cas où Reservation illimitée (vrai) (à gerer dans tes règles de gestion).
J'espère que j'ai été plus clair lol  
 
Guillaume

Message cité 1 fois
Message édité par gpl73 le 03-02-2014 à 14:31:05
n°2218484
teddi
Posté le 03-02-2014 à 21:31:39  profilanswer
 

Tout simplement genial Guillaume! Merci à toi.  
Sonia

n°2228371
teddi
Posté le 19-05-2014 à 13:51:31  profilanswer
 

Bonjour Guillaume!,
après avoir en vain essayé d' appliquer tes conseils, me voici à nveau avec une autre proposition.
Tout d' abord je pense que j' ai du mal à évoluer par ce que non seulement je reprends une BD crée par quelqu' un d'autre
mais aussi par ce qu' en programation je ne sui pas un as.
Pour faire simple, j' ai pensé que je pourrais peut-être ajouter 2 colones(tranches horaires et Limitation) à la table qui répertorie les salles.
 
tranches horaires: pour fixer les heures où la salle serait indisponible entre deux réservations
Limitation:nbre de réservations maxi par jour pour une salle
 
j'aimerai savoir ce que tu en penses
Merci

gpl73 a écrit :

Bonjour!
1er point :
si tu crées la table intervention  (id, description, type, durée...)
et que dans ta table reservation tu ajoutes la clé de l'ID_intervention pour retrouver la durée de cette intervention...
tu peux dans certains cas dénormaliser ta base et ajouter la durée correspondante dans ton enregistrement (réservation)?
c'est à toi de voir... si cela est profitable en traitement, performance...
et aussi en évolutivité...
 
Concernant le 2nd point :
max_Pers : nombre maximum de réservations par utilisateur (-1 si illimité)  
Cela me semble (comme ça, sans trop connaitre ta base), une notion de droit lié à un utilisateur et non à la réservation de la salle en elle même. Non?
Si c'est bien le nombre max de réservation pour un utilisateur:
c'est bizzard que tu "stockes" cette information à cet endroit.
Ne serais ce pas plus dans la table utilisateur que tu devrais avoir ça ?
et si celui ci est couplé à une notion de droit (illimitée ou non)
crées plutot un champ boolean reprenant cette notion...
tu te feras moins c...r dans tes requetes et tes regles de gestions ne seront que plus simples à écrire et à maintenir...
exemple : USER X : Pas illimité  et salle max d'autorisée  
=> select count (*) from reservation where user ='X' sur 1 période donnée
en fonction de ces 3 info : tu gères la gestion la possibilité de reserver une nouvelle salle ou pas... super simple , non?
 
Plus simple que de faire un select max (max de reservation) sur ta table réservation? et de le comparer à quoi?  
 
Et on en arrive au 3eme point:
un champ = un type d'information...
Plus tu resteras fidele à ce principe... moins tu seras embétée dans la maintenance, l'évolutivité de tes regles de gestions et de ta base.
ex :
Je reviens au nombre de réservation...:)
le nombre max de réservation  est un nombre de salle reservée au dela duquel ton utilisateur ne peut plus réserver de salle, ok?
et donc un nombre de salle ne peut pas être négatif au pire il sera null, car pas renseigné.
 
Le fait que ce nombre de réservation peut être illimité ou pas, n'est pas de son "ressort", car ce n'est pas sa propriété, pas sa définition, et donc quand tu as besoin de cette notion, tu ne dois pas aller chercher ce champ, mais le champ relatif à cette notion "de droit" ...
Pour cela, tu crées un champ "propre" , Réservation illimitée Oui/Non
et un champ nombre de réservation autorisée : (>= 0 et /ou null )
Null dans le cas (où ce n'est pas renseigné, à toi de voir) ou dans le cas où Reservation illimitée (vrai) (à gerer dans tes règles de gestion).
J'espère que j'ai été plus clair lol  
 
Guillaume


n°2228377
gpl73
Posté le 19-05-2014 à 14:46:38  profilanswer
 

salut !
Aie, je vais pas pouvoir non plus trop t'aider... :)
Car là on touche vraiement "au métier"... si tu as besoin des ces 2 info... ajoutes les...
Perso, je ne vois pas en quoi, le nombre de réservation (d'une salle) max par jours est "important"... (mais je ne connais pas ton métier)
Par contre, fais "gaffe", il faut que tu ajoutes un champ correspondant aux nombres de réservation encours...
(les règles de gestion sont à définir, mais entre les plages horraires d'ouverture, ta nouvelle plage d'indisponiblité, la durée de la réservation, le nombre de reservation max... cela commence déjà à devenir l'usine à gaz)...
Ce champ devra être remis à "0" quotidiennement. et devra être updater (+/-1) des réservations/annulations de ta salle.
 
Guillaume


---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2228443
teddi
Posté le 19-05-2014 à 19:57:03  profilanswer
 

Limitation:nbre de réservations maxi par jour pour une salle  
Car en fonction du type de salle (salle de séminaire, grde salle de conférence, petite salle de conf ) il y a un nbre de réservation max. par jour
 
le champ correspondant aux nombres de réservation en cours. devrait-il m'aider à décompter à chaque fois ?
 
merci
 

gpl73 a écrit :

salut !
Aie, je vais pas pouvoir non plus trop t'aider... :)
Car là on touche vraiement "au métier"... si tu as besoin des ces 2 info... ajoutes les...
Perso, je ne vois pas en quoi, le nombre de réservation (d'une salle) max par jours est "important"... (mais je ne connais pas ton métier)
Par contre, fais "gaffe", il faut que tu ajoutes un champ correspondant aux nombres de réservation encours...
(les règles de gestion sont à définir, mais entre les plages horraires d'ouverture, ta nouvelle plage d'indisponiblité, la durée de la réservation, le nombre de reservation max... cela commence déjà à devenir l'usine à gaz)...
Ce champ devra être remis à "0" quotidiennement. et devra être updater (+/-1) des réservations/annulations de ta salle.
 
Guillaume


n°2228450
gpl73
Posté le 19-05-2014 à 21:50:57  profilanswer
 

c'est pas bien compliqué :
tu as un nombre max de reservation , tu as un nombre de reservation en cours...
et lors d'une reservation ou d'une annulation , tu updates la zone...
tant que tu n'es pas au max :) ou à zero cela dépend à quoi tu initialises le champ (tout les matins par un job schédulé)...
si tu n'as pas un champ max et un autre champ... comment  initialiser chaque jours, celui-ci?

 

Message cité 1 fois
Message édité par gpl73 le 19-05-2014 à 21:52:56

---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2228479
teddi
Posté le 20-05-2014 à 11:34:05  profilanswer
 

gpl73 a écrit :

c'est pas bien compliqué :
si tu n'as pas un champ max et un autre champ... comment  initialiser chaque jours, celui-ci?
 


 
Je ne comprends pas ta question :??:

mood
Publicité
Posté le 20-05-2014 à 11:34:05  profilanswer
 

n°2228509
rufo
Pas me confondre avec Lycos!
Posté le 20-05-2014 à 13:48:07  profilanswer
 

Il te demande comment tu réinitialises tes compteurs ? Car si tu le fais ps à une certaine périodicité (a priori, tous les jours), le compteur va bien finir par atteindre sa valeur max...
 
Edit : au passage, tout ce qui peut être calculé n'est pas stocké en base. Typiquement, les infos que t'as en base doivent te permettre de calculer en temps réel le nb de réservations en cours (que ça soit au total ou pour chaque utilisateur). Pas besoin de stocker ce genre de valeur. :o


Message édité par rufo le 20-05-2014 à 13:50:15

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2228510
rufo
Pas me confondre avec Lycos!
Posté le 20-05-2014 à 13:51:15  profilanswer
 

Tiens, un petit lien précisant certaines règles de base pour bien modéliser une BD : la forme 3 NF de Codd
http://fr.wikipedia.org/wiki/Forme [...] me_normale


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2228569
gpl73
Posté le 20-05-2014 à 20:13:00  profilanswer
 

ruffo, tu as raison , je n avais pas pensé aux champs calculés...
Il y a des fois qd meme que c'est bien pratique de ne pas avoir à recalculer certaines informations... meme si c'est pas dans les "normes"

Message cité 1 fois
Message édité par gpl73 le 20-05-2014 à 20:15:59

---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2228606
rufo
Pas me confondre avec Lycos!
Posté le 21-05-2014 à 10:07:48  profilanswer
 

gpl73 a écrit :

ruffo, tu as raison , je n avais pas pensé aux champs calculés...
Il y a des fois qd meme que c'est bien pratique de ne pas avoir à recalculer certaines informations... meme si c'est pas dans les "normes"


Non, il ne faut pas les calculer et stocker sauf si ça pose des pbs de perfs et qu'on a tout tenté avant pour les réduire (matériel, index, optimisation des requêtes, tuning du SGBD...). Alors, seulement, on peut stocker des champs calculés, et tant qu'à le faire bien, via des procédures stockées pour éviter les incohérences.
 
Ne pas respecter la forme 3NF avec des raisons justifiées, OK, sinon, tu peux être sûr que ça va t'introduire des bugs, des complications de codage et des pbs de maintenance... La BD, dans une appli de gestion, c'est l'équivalent des fondations d'une maison : si celles-ci sont pourries, tout ce qui est dessus finira par s'écrouler. :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2228735
gpl73
Posté le 21-05-2014 à 17:19:50  profilanswer
 

:jap:  
tout à fait d'accord avec toi, Rufo :)
c'était juste pour l'exemple que je disais ça...


---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2228742
rufo
Pas me confondre avec Lycos!
Posté le 21-05-2014 à 17:30:59  profilanswer
 

Attention, moi, je suis un intégriste de la forme 3NF de Codd :o... :D


Message édité par rufo le 21-05-2014 à 17:31:35

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Crénaux horaires

 

Sujets relatifs
besoin de code java pour horairesGestion de dates et d'horaires
[Oracle] tranches horairesPlages horaires & php
Gestion de tranches horaires sur deux joursRestreindre les horaires de l’ordinateur
Affichages differents selon l'heure, le jour...(genre horaires de bus)lib conversion dates/fuseaux horaires
Script perl qui convertit les fuseaux horairescomment créer une liste d'horaires par exemple
Plus de sujets relatifs à : Crénaux horaires


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR