PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 29-01-2010 16:06:41

debe
Membre
Inscription : 25-06-2009
Messages : 87

organisation base de donnée

bonjour,
j'ai une base de donnée qui va recenser les disponibilités de bénévoles
en plus de nom prénom etc..., je veux rentrer si la personne est disponible le lundi matin, lundi après midi, lundi soir, mardi matin mardi après midi etc...

je peux donc rentrer 21 colonnes (7 jours + matin après midi et soir) et leur attribuer la valeur oui ou non.

Je suppose, mais ne trouve pas, qu'il y a une autre solution ?

Hors ligne

#2 29-01-2010 16:25:12

Cyrilpop
Membre
Inscription : 11-01-2010
Messages : 20

Re : organisation base de donnée

Ce que tu peux faire c'est une table pour rentrer tous les bénévoles,
une table pour la disponibilité,
une table pour le jour de la semaine.
Ca va limiter le nombre de colonnes comme ca.

Je te propose les structures des différentes tables

benevole(ID_benevole, nom_benevole, prenom_benevole)
disponibilite(ID_dispo, disponible, ID_benevole, ID_jour)
jour_semaine(ID_jour, jour)


Comme tu peux le voir, il y a des clés étrangères. Avec cette structure tu vas gagner énormément de place dans la base (en fonction du nombre de bénévoles...

Hors ligne

#3 29-01-2010 16:41:05

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : organisation base de donnée

merci, je vais essayer de voir avec cela

j'avais oublié une condition, c'est vacances ou hors vacances, mais je pense que ces options sont à rentrer dans la table jour_semaine ?

jour_semaine.jour aurait donc 42 colonnes (vacances lundi matin, vacances lundi am, etc...)
mais pour mes recherches multi-critères (cases à cocher jour, plage horaire, vacances) je fais un concaténation qui me ramène la bonne colonne

ai-je bon ?

Hors ligne

#4 29-01-2010 16:45:39

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : organisation base de donnée

Pourquoi ne pas entrer dans la base que les jours où il y a quelqu'un ?
Cela réduirait fortement le nombre d'enregistrements si personne n'est disponible.

Hors ligne

#5 29-01-2010 16:50:44

Cyrilpop
Membre
Inscription : 11-01-2010
Messages : 20

Re : organisation base de donnée

Le problème de la condition vacances scolaires est que c'est une colonne variable. Si tu ne veux pas faire 50 changements de table, le mieux je pense est de faire une autre table vacances(ID_vacances, debut vacances, fin vacances, ID_bénévole) dans laquelle tu entres les congés des différents bénévoles.
Quand tu veux faire un planning tu joins les différentes tables et tu fais le test si le bénévole est en vacances à laquelle tu veux le planifier. S'il n'est pas dans la table vacances à la date voulue, c'est qu'il est disponible (bien sur s'il y a oui pour la table disponibilité le concernant).

Dernière modification par Cyrilpop (29-01-2010 16:51:10)

Hors ligne

#6 29-01-2010 17:04:31

Cyrilpop
Membre
Inscription : 11-01-2010
Messages : 20

Re : organisation base de donnée

Voici la structure SQL que j'ai pu faire via mysql:
[code sql]


SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `asso`
--

--
-- Structure de la table `benevole`
--

CREATE TABLE IF NOT EXISTS `benevole` (
  `id_benevole` int(11) NOT NULL AUTO_INCREMENT,
  `nom_benevole` varchar(20) NOT NULL,
  `prenom_benevole` varchar(30) NOT NULL,
  PRIMARY KEY (`id_benevole`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


--
-- Structure de la table `disponibilite`
--

CREATE TABLE IF NOT EXISTS `disponibilite` (
  `id_disponibilite` int(11) NOT NULL AUTO_INCREMENT,
  `disponibilite` varchar(3) NOT NULL,
  `id_benevole` int(11) NOT NULL,
  `id_jour` int(11) NOT NULL,
  PRIMARY KEY (`id_disponibilite`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



--
-- Structure de la table `jour_semaine`
--

CREATE TABLE IF NOT EXISTS `jour_semaine` (
  `id_jour` int(11) NOT NULL AUTO_INCREMENT,
  `jour` varchar(15) NOT NULL,
  PRIMARY KEY (`id_jour`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


--
-- Structure de la table `vacances`
--

CREATE TABLE IF NOT EXISTS `vacances` (
  `id_vacances` int(11) NOT NULL AUTO_INCREMENT,
  `debut_vacances` date NOT NULL,
  `fin_vacances` date NOT NULL,
  `id_benevole` int(11) NOT NULL,
  PRIMARY KEY (`id_vacances`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

[/code]

Dernière modification par Cyrilpop (29-01-2010 17:09:45)

Hors ligne

#7 29-01-2010 17:13:12

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : organisation base de donnée

en fait, je ne veux pas entrer les différentes vacances, mais seulement dire qu'il est dispo pendant les vacances (quelque soient les dates des vacances).

j'essaye de poster une réponse, mais en formulant la réponse, je me rends compte que je suis encore plus perdu qu'au début mad

en fait, il peut y avoir énormément de solutions (dispo vacance lundi après midi, vacances mardi soir, hors vacances mercredi am etc...)
dans mes recherche de baby sitter par la suite, il me faudra plus de souplesse pour les parents (par exemple, il peuvent vouloir quelqu'un un jour de la semaine, mais peu importe l'heure, par exemple)
il faut donc que je puisse ressortir un truc du genre => vacances : oui /  lundi : oui

or, avec la concaténation, pour cette personne, il y aura tous ses choix (par exemple, une entrée du style vacance_lundi_matin vacances_mardi_soir hors_vacances_merci_am etc....

Hors ligne

#8 29-01-2010 17:25:24

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : organisation base de donnée

le temps d'écrire ma réponse, je n'avais pas vu les tables proposées. merci.

mais je suis toujours perdu : qu'est-ce que j'entre dans la colonnejour ? je pensais incrémenter avec des cases à cocher
Disponibilité
période scolaire
lundi  matin  après midi  soir
mardi  matin   après midi  soir
etc  matin   après midi  soir
vacances scolaire
lundi  matin  après midi  soir
mardi  matin   après midi  soir
etc  matin   après midi  soir

Hors ligne

#9 29-01-2010 17:51:08

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : organisation base de donnée

je crois avoir pigé
une table dispo avec
id_dispo / id_user / jour  / vacance (o/n) / matin / am / soir
   
une entrée par exemple :
id_dispo = 1 | id_user = 2 | jour=5 |vac=o|matin=oui (= il est dispo jeudi matin)

une autre entrée avec le même user mais avec des données différentes s'il est dispo (et il le sera) un autre moment

je pense que j'ai bien compris ?

reste à entrer mes données à partir de champs de formulaire simples. je devrais m'en sortir et re-posterai si je suis coincé ;-)

merci pour ces réponses efficaces et rapide

en fait, ce projet semble bien compliqué car je vais avoir plein de tables différente pour ces baby_sitter (préférence d'age : 4 ages avec choix multiples / niveau de formation et formations en animation : 8 choix multiples) / moyen de locomotion ...)
j'ai pas fini !!

Hors ligne

#10 31-01-2010 09:03:00

Cyrilpop
Membre
Inscription : 11-01-2010
Messages : 20

Re : organisation base de donnée

Bon désolé pour tout ce retard, mais j'étais plus au tafn donc plus derrière mon pc..


Pour le coup de numéroter les jours de la semaine, c'est bien vu ça fait gagner un peu de place dans la table semaine...
Imaginons Juliette DUPONT c'est la première personne que tu as entré dans la base elle a donc l'ID 1.
Elle est disponible les mercredi PM, samedi AM et PM et dimanche AM et PM.
Elle t'as prévenu qu'elle est en vacance du 10/02/2010 au 17/02/2010.
Nous sommes le dimanche 31/01/2010,
Tu interroges ta base ce qui donne.
Juliette est bien disponible le dimanche matin et après midi. Le 31/01/2010 n'est pas entre le 3/02/2010 et le 10/02/2010. Elle est donc effectivement disponible aujourd'hui.

Pour les critères supplémentaires c'est le même principe, je te conseille de faire une table pour les critères, une table pour les formations. En fait à chaque fois que tu veux une information récurrente et qui se répète plusieurs fois, je te conseille de l'extraire dans une table, ca fait un gain de place dans la base wink


Bon courage ^^

Hors ligne

#11 02-02-2010 12:07:44

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : organisation base de donnée

merci, c'est comme cela que j'ai commencé : une table par critère

merci à tous pour ces aides

Hors ligne

Pied de page des forums