Probléme de MCD pour application php/mysql

Résolu
Utilisateur anonyme - 12 juin 2008 à 14:55
 Utilisateur anonyme - 13 juin 2008 à 09:34
Salut a tous.

Débutant dans le milieu professionel (stage), je suis un peux perdu face a un MCD que je dois réaliser. Nous avons survolé la méthode MERISE en cours mais le manque d'éxperience ne me permet pas d'être totalement autonome. Je poste ici afin d'avoir un peux d'aide de la par de la communauter si possible.

Je travail donc sur un petit projet d'application php/mysql censé via une googlemap et des marker, montrée tout les points de connexions du pays nivernais (Morvan). Voila les donnée que je doit traitées:

- Type de point (Hotspot wifi, cybercafé, cyberbase, cyberespace, etc)
- Nom (Mission numérique, Café du centre, etc)
- Adresse
- Ville
- CP
- N° télephone
- Longitude et Latitude (pour permettre au utilisateur de télecharger des fichier POI pour gps)
- Jours d'ouverture (pas d'heure, seulement les jours)
- Tarif (Gratuit ou payant seulement)
- Type de connection proposées (Cablé, sans fil, ou les deux)

Voici un debut de MCD que j'ai réaliser (j'éspere que ce sera compréhensible) :

Type_de_point:
- ID (cléf primaire, BIGINT)
- Intitulé (varchar de 50)

Coordonnées:
- ID (clef primaire, BIGINT)
- Longitude (double)
- Latitude (double)

points_de_connexion:
- ID (clef primaire, BIGINT)
- Nom (varchar de 100)
- Adresse (varchar de 100)
- CP (varchar de 5)
- Telephone (varchar de 10)
- Ville (varchar de 50)
- Payant (bool)
- Cable (bool)
- Sans_fil (bool)
- ID_type_point (BIGINT, clef étrangére -> Type_de_point) (note: j'ai chercher sur google mais il ne semble pas y avoir de clef étrangére dans mysql)   
- ID_coordonnées (BIGINT, clef étrangére -> Coordonnées)

Et c'est là que je suis perdu :
- Pour les jours de la semaine, est-ce que je dois lister du lundi au dimanche dans ma table Point_de_connection, en spécifiant qu'il sont boolean (fermer - ouvert)
- la table Coordonnées devrait elle contenir Adresse, Ville et Code_postale
- Faut-il crée une table "connections_disponible" avec les champ Payant, Sans_fil et Cable ?

Désolé d'avoir ecrit un -presque- roman, et aide ou pas, mercie a la communauter de faire vivre codes-sources.
Romano58

2 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
12 juin 2008 à 18:54
Salut,

Manquent les relations, mais c'est vrai que là, c'est pas facile de les dessiner :o))

"Pour les jours de la semaine, est-ce que je dois lister du lundi au
dimanche dans ma table Point_de_connection, en spécifiant qu'il sont
boolean (fermer - ouvert)"
=> C'est un peu toi qui vois... Il n'y a pas de MCD qui soit une vérité absolue pour un cas donné : il peut y en avoir plusieurs, tout aussi valables ; cela dépend de contraintes de gestion imposées (par le contexte, un cahier des charges, ...), de ce qui te parait cohérent...
Tu peux tout à fait gérer les jours d'ouverture/fermeture dans une entité :
-------------
| ouverture |
-------------
| lundi |
| mardi |
| mercredi |
| jeudi |
| vendredi |
| samedi |
| dimanche |
-------------

Dans ta base de données, plus tard, chaque enregistrement sera un booléen (inutile de le préciser pour le moment, sauf dans le dictionnaire de données)

Mais tu peux faire autrement : coder les jours d'ouverture en binaire, en attribuant des puissances de 2 comme valeur aux jours de la semaine, et en additionnant ceux pour les jours ouverts.
Lundi : 1
Mardi : 2
Mercredi : 4
Jeudi : 8
Vendredi : 16
Samedi : 32
Dimanche : 64

Ouvert samedi et dimanche, ça ferait : 96
Ouvert tous les jours sauf le lundi, ça ferait : 127

"la table Coordonnées devrait elle contenir Adresse, Ville et Code_postale"

=> La gestion des adresses dans les bases de données est toujours un problème (c'en est même un cas d'école). Le problème, c'est que tu te poses déjà la question des tables. Et tu ne devrais pas. Tu devrais penser "entités". Les entités pourront devenir des tables après le MLD, mais pas uniquement : une relation n-aire deviendra aussi une table.
Tout dépend en fait de comment tu souhaites gérer les adresses.
L'adresse peut être décomposée (n°, étage, voie, complément, CP, ville, pays), ou non. Pour une facturation, la décomposition peut être utile. Dans ton cas, pas forcément.
Les adresses peuvent donc être une simple propriété de l'entité Point_de_connexion.

"Faut-il crée une table "connections_disponible" avec les champ Payant, Sans_fil et Cable"

=> J'ai pas le temps, de répondre, les collègues me mettent à la porte...

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
3
Utilisateur anonyme
13 juin 2008 à 09:34
Pour commencer : merci bôcoup neigedhiver.

Mon MCD me paraît terminer, voici ce que cela donne (4 entitées)

types_point_accees:
- id_type_point   
- nom_type_point

types_connexions:
- id_type_connexion
- nom_type_connexion

jours:
- id_jour
- nom_du_jours

points_accees:
- id_point_accee
- nom
- adresse
- code postale
- ville
- n° telephone
- longitude
- latitude
- payant

Voila, ensuite il y a le MLD qui va avec:

est_ouvert:
- id_point_accee
- id_jour

possede_connexion:
- id_point_accee
- id_type_connection

on ajoute à "points_connexions" une propriétée id_type_point.

Et hop, taaddaaa :) content le Romano58.
Encore merci et a+.
0
Rejoignez-nous