Vous n'êtes pas identifié(e).
Pages :: 1
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
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
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
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
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
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
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
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
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
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
Bon courage ^^
Hors ligne
merci, c'est comme cela que j'ai commencé : une table par critère
merci à tous pour ces aides
Hors ligne
Pages :: 1