Besoin d'aide pour BD avec muti-choix

Fermé
fleurvar83 - 22 oct. 2009 à 11:20
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 - 22 oct. 2009 à 16:51
Bonjour,

Voilà plusieurs semaines que je reffléchi sur l'achitecture de ma BD (Mysql) mais je coince. Je compte sur votre aide. (:-)))

Je souhaite faire un site ou les internautes rechercheront un service par région, puis par département.
Jusque là ça va. Le problème c'est qu'un service peut faire parti de plusieurs départements. (exemple: Monsieur Dupont peut intervenir dans 10 département)

Donc:
Table Region
Idregion|region
1 | Paca
2 | Loire atlantique
3 | etc ...

Table département ( cela imprique 83 champs, à mon avis il y a une autre solution mais laquelle ?)
Idservice |Vendee| Rhone alpes | tous les autres département .....
1 | 1 | 1 |
2 | 0 | 1 |
3 | 1 | 1 |


Table Service:
Idservice | societe | Contact | etc ...
1 | SARL Dupont | Mr Dupont | etc ...


Ne me proposez pas un champs enum, car en recherchant sur des forums, cela est très déconsillé.

Merci pour votre aide qui sera vraiment précieuse

7 réponses

CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
22 oct. 2009 à 11:30
Bonjour,

Pourquoi ne pas créer une autre table pour faire une relation de plusieurs à plusieurs (services vers départements)

Table département
IdDep |Nom Dep
1 | Ain
2 |Aine

Table Service_Dep
IdDep |idService
1 | 1
1 | 2
.......
2 | 5
2 | 12

Table Service:
Idservice | societe | Contact | etc ...
1 | SARL Dupont | Mr Dupont | etc ...
0
Merci pour ta réponse, mais je pense que ma table ne sera pas optimisée du tout, car de nombreux services seront présents dans de nombreux départements.

Donc les enregistremenst de la table Table Service_Dep seront énormes.

Et puis quand une société s'enregistrera, elle cochera tous les département la concernant. Donc avec ce principe, je ne pense pas que cela aille.

Qu'en penses tu ?
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
22 oct. 2009 à 11:54
Merci pour ta réponse, mais je pense que ma table ne sera pas optimisée du tout, car de nombreux services seront présents dans de nombreux départements.

Ma table sera beaucoup plus optimisée la tienne.
(Si tu rajoute des départements Belges, tu te dois de refaire ta table).

Donc les enregistremenst de la table Table Service_Dep seront énormes.

Oui et alors? Ce sera largement plus rapide et efficace que de traiter 83 champs...

Et puis quand une société s'enregistrera, elle cochera tous les département la concernant. Donc avec ce principe, je ne pense pas que cela aille.

Ouaip, parfait. Petite reqûete SQL sur la table Service_Dep .

Revois tes bases Sql très cher ;) comme les relations 1-N, ou N-N.
Tout site internet utilise cette solution.

Bonne continuation.
0
Ok je vais suivre ton conseil et merci beaucoup.

Bonne AP.
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
22 oct. 2009 à 12:17
Bon App et bonne continuation !
0
Une dernière petite question si tu n'es pas partie, (Et oui je déjeune devant mon PC)

Pour développer la requete que je vais faire en faisant la table que tu me conseilles, cela veut qu'il y aura autant d'enregistrement dans la Table Service_Dep qu'il y aura de département choisi par le client.

La requete se ferai sous quelle forme ?

Puisque je vais insérer dans la table Table Service en même temps que dans la table Table Service_Dep. S'il y n'y a qu'un seule enregistrement j'y arrive, mais autant d'enregistrement qu'il y aura de département choisi, je n'y arrive pas.

Désolée, je suis débutante
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
22 oct. 2009 à 13:35
Pour développer la requete que je vais faire en faisant la table que tu me conseilles, cela veut qu'il y aura autant d'enregistrement dans la Table Service_Dep qu'il y aura de département choisi par le client.

A vrai dire, le total pourra aller du (nombre de département)*1 au(nombre de département)*(le nombre de service).

Puisque je vais insérer dans la table Table Service en même temps que dans la table Table Service_Dep. S'il y n'y a qu'un seule enregistrement j'y arrive, mais autant d'enregistrement qu'il y aura de département choisi, je n'y arrive pas.

Revenons à ton tout 1er exemple soit "Monsieur Dupont peut intervenir dans 10 départements".
En les précisant ça donnerait : "Monsieur Dupont peut intervenir dans les départements n°1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
Il faudrait donc faire faire :
INSERT INTO Service ("Idservice", "societe", "Contact")
VALUES (1, "SARL Dupont",  "Mr Dupont")
INSERT INTO Service_Dep ("IdDep", "idService")
VALUES (1, 1),(2, 1),(3, 1),(4, 1),(5, 1),(6, 1),(7, 1),(8, 1),(9, 1),(10, 1)
0
Ah oui, j'y vois plus clair.
Dernière petite question, étant donné que le IdService est en auto incrémentation, Dois je faire l'insertion en 2 fois.

C'est à dire je rentre le client.
Et quand il est entré dans la base, je récupérère son IdService puis refait un insert avec les IdDépartement ?

Merci
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
22 oct. 2009 à 16:51
Exactement ;)
0