8797 sujets

Développement web côté serveur, CMS

Bonjour,

Je mets en place un projet pour mon entreprise de conseil.
Notre objectif, créer un extranet pour nous et nos clients afin que nous puissions (ajouter et ou modifier des informations) avoir accès au informations de leurs partenaires.

Voici ci-joint les différentes tables que j'ai mis en place, avec les exemples de requête que je souhaiterais pour faire.

Une fois les tables établies, il va y avoir une relation entre ces différentes tables. ( c'est la première fois que je structure une base de donnée donc si mes tables ne sont pas bonnes, merci de bien vouloir me le dire ou me donner un conseil).
Le problème et que je connais ces relations, mais je ne sais pas trop comment les réaliser dans l'univers Mysql.
Si quelqu'un pouvais m'aider ce serait trés sympa. !! merci


Table : Tour Opérateur
ID
Raison Sociale du TO
Adresse
Ville
Pays
Commission
Statut du contrat (en cours ou en ligne)
Date de début
Date de Fin
Date de Rétrocession
Remarques 

Table : IDS
ID
Raison Sociale IDS
Adresse
Ville
Pays
Commission
Statut du contrat (en cours ou en ligne)
Date de début
Date de Fin
Date de Rétrocession
Remarques 


Table : Contact TO/IDS etc
ID
Contact To ou IDS 
Type de Contact
Nom 
Prenom
tél 
fax
Email
Table : Typologie de chambre choisie
ID
Type
Allotement (1, 2 etc…)





Table : Facturation
ID
Frais d'annulation
Modalités de facturation 
Qui paye ?
Adresse
Table : Identifiant connexion extranet
Lien de l'extranet
Numero hotel 
Login
Mot de passe 
Observation
Table : Clients
ID
Nom









upload/17281-DATABASE.jpg
Modifié par dreadstock (12 Jun 2009 - 15:13)
Salut,

Perso, ce que je crois comprendre :
- tu as une liste de clients
- chacun de tes clients peut posséder un (seul) contrat avec chacun des IDS et chacun des TO
- chaque IDS ou TO peut posséder une (seule) personne dénominée le "contact"

Ce que tu vas probablement devoir développer :
- la signification de la table "Typologie de chambre choisie"
- la signification de la table "Facturation"
- la signification de la table "Identifiant connexion extranet"

Alors, en ne parlant que de ce que je crois avoir compris :
- ça me semble pas trop mal
- si la table TO et la table IDS sont appelées à avoir toujours la même structure (jamais d'ajout de champs différents), pourquoi ne pas les regrouper en une seule table appelée "organisme", "société", ou un truc dans le style, en rajoutant un champ qui indique si c'est un TO ou un IDS.
- il manque probablement un champ id_organisme à ta table contact, pour pouvoir établir qui est contact de quoi (ceci seulement si on est dans une relation 1-1 (un seul contact pour un seul organisme))

Voilà, pour le reste, il faudra comprendre un peu plus de quoi il retourne Smiley smile
Merci pour ta réponse,

Je te confirme que tu as bien compris.

Mis à part qu'il peux y avoir plusieurs contact pour un même to ou IDS. (contact market manager, chef de projet, directeur etc...)

Chaque client à signe des contrats avec des to et des IDs.

Chaque ids/to ( car tu as raison, je pense que je vais pouvoir les regrouper dans une même table "organisme") à un système de facturation différent et a en gestion des typologies de chambre.

Il y a un identifiant de connexion (login mot de passe) pour chaque client pour chaque IDS/TO.


Voila un petit peu le fonctionnement.

Je vous avoue avoir un peu du mal avec le
a écrit :
il manque probablement un champ id_organisme à ta table contact

En effet, je comprends pas comment liée les table entre elle. id_organisme ?

merci
a écrit :
je comprends pas comment liée les table entre elle
Vu qu'il peut y avoir plusieurs contacts pour un même TO ou IDS, on est dans une relation 1-n (1 organisme possède n contacts) et il te faut donc une table de liaison.

De manière simplifiée :
Table organisme
--------------------------------
| id | raison Sociale     | etc.
--------------------------------
|  1 | ACME corporation   | etc.
|  2 | Cyberdyne Systems  | etc.
|  3 | Tyrell Corporation | etc.
|  4 | Genco Olive Oil    | etc.
--------------------------------

Table contact
----------------------------
| id | nom            | etc.
----------------------------
|  1 | Jacky          | etc.
|  2 | Corbier        | etc.
|  3 | Ariane         | etc.
|  4 | Dorothée       | etc.
|  5 | Patrick        | etc.
----------------------------

Table liaison_org_cont (ou autre nom qui te parle)
-----------------------------
| id_organisme | id_contact |
-----------------------------
|       2      |      5     |
|       3      |      4     |
|       1      |      1     |
|       1      |      2     |
-----------------------------
Cette table se lit ainsi :
Le contact de l'organisme 2 est le contact 5
Le contact de l'organisme 3 est le contact 4
Les contacts de l'organisme 1 sont le contact 1 et le contact 2


Pour savoir quels sont les contacts d'un organisme :
SELECT
    <les champs que tu veux>
FROM
    liaison_org_cont

    [#gray]# si tu veux plus d'infos sur l'organisme que simplement son id, 
    # tu joins la table[/#]
    LEFT JOIN organisme ON organisme.id = liaison_org_cont.id_organisme

    [#gray]# si tu veux plus d'infos sur le(s) contact(s) que simplement leur id,
    # tu joins la table[/#]
    LEFT JOIN contact ON contact.id = liaison_org_cont.id_contact

WHERE
    id_organisme = <l'id de l'organisme>


Si on ne pouvait avoir qu'un contact par organisme (liaison 1-1), on aurait simplement ajouté :
- un champ contact dans la table organisme, contenant l'id du contact (présent dans la table contact)
- ou à l'inverse, un champ organisme dans la table contact (même si la première solution me paraît plus logique)
Bref, on aurait pas eu besoin d'une table de liaison.

Pour le reste de ton schéma, je t'avoue ne pas comprendre à fond ("typologie de chambre", "un identifiant de connexion [...] pour chaque client pour chaque IDS/TO"), mais le principe devrait être similaire à la liaison organisme-contact
Modifié par marcv (14 Jul 2009 - 08:06)
Merci pour ta réponse.

Plus clairement, je souhaite faire une sorte d'extranet, ou notre client pourra remplir certaines informations sur un IDS ou un to.

Je m'explique, sur l'extranet, il y a aura un onglet "nouveau" ou le client pourra créer "un contrat".

Exemple :

Le client A, rentre un contrat sur l'extranet :

Organisme
Nom IDS : booking.com
COmmission : 15%
Adresse : 134 rue de la paix

Info contact :
Nom du contact : Michel Bridge
Email : ui@mhj.fr

Facturation :
Qui paie (hôtel ou client)
etc...

Typologie de chambre choisie :
CHamp texte : Maison 2 pièces/ Appartements 2 pièces etc ...
Nombre de chambre

Identifiant pour ce connecter à l'extranet TO ou IDS :
Login
Mot de passe
Url pour extranet


Voila, l'objectif est, une fois que le client à rentré ces différentes informations, il doit pourvoir les visionner.
Exemple : le client A fait une requete sur l'extranet :
" je voudrais voir tous les TO et tous les IDS"

Le résultat de la requête apparaît dans la page sous la forme suivante:

a écrit :





Type : IDS
Raison Social : Booking.com
adresse : 1234 avenue de la paix
Nom du contact : Michel
Typologie de chambre choisie : maison 2 pièces mezzanine
Nombre de chambre : 5
Facturation : C'est le client qui paie sur place à l'hôtel


Voila,

J'ai donc essayé d'organiser ma base de donnée de la manière suivante :
a écrit :

Table : Clients
ID
Nom


Table : Organisme
ID
Type
Raison sociale de l'organisme
Adresse
Ville
Pays
Commission
Statut du contrat (en cours ou en ligne)
Date de début
Date de Fin
Date de Rétrocession
Remarques


Table : Contact organisme
ID
Contact To ou IDS
Type de Contact
Nom
Prenom
tél
fax
Email



Table : Typologie de chambre choisie
ID
Type
Allotement (1, 2 etc…)




Table : Identifiant connexion extranet
Lien de l'extranet
Numero hotel
Login
Mot de passe
Observation

Table : Facturation
ID
Frais d'annulation
Modalités de facturation
Qui paye ?
Adresse




Toutes ces tables on une relation entre elles, car elles sont toutes reliés au à l'"organisme".

La je pense que mes table sont bonnes, mais je ne vois pas comment les relier entre elles.

Et en effet, il peut y avoir plusieurs contact pour un organisme ( le contact pour la facturation , le contact pour la mise en place du contrat, le contact pour les plaintes etc...)


Merci pour ton aide

Nico
Modifié par dreadstock (15 Jun 2009 - 13:02)
Est ce que je ne pourrai pas faire cela :

Créer toutes les tables et dans la table "Organisme" rajouter (voir les 5 dernières lignes) :


TABLE ORGANISME :

ID
Type 
Raison sociale de l'organisme
Adresse
Ville
Pays
Commission
Statut du contrat (en cours ou en ligne)
Date de début
Date de Fin
Date de Rétrocession
Remarques 
ID_CONTACT
ID_TYPOLOGIE CHAMBRE
ID_FACTURATION
ID_IDENTIFIANT 


??
Modifié par dreadstock (15 Jun 2009 - 13:16)
Salut,
a écrit :
je ne vois pas comment les relier entre elles. Et en effet, il peut y avoir plusieurs contact pour un organisme
Mon dernier post répondait précisément à cette question Smiley sweatdrop

a écrit :
Créer toutes les tables et dans la table "Organisme" rajouter (voir les 5 dernières lignes)
.................... Smiley sweatdrop :
marcv a écrit :
Si on ne pouvait avoir qu'un contact par organisme (liaison 1-1), on aurait simplement ajouté :
- un champ contact dans la table organisme, contenant l'id du contact (présent dans la table contact)
Es-tu bien sûr d'avoir lu mon post avant de répondre ?
Oui j'ai bien lu le post et je t'en remercie, je l'ai même compris Smiley smile

Voici ce que j'ai commencé à faire.

upload/17281-DATABASE.jpg

J'ai l'impression que je suis pas loin de trouver la solution.

Problèmes :
- je ne sais pas comment configurer les ID_contact, ID_Facturations etc...
SI je dois mettre clé primaire, clé index ..
- Si je dois mettre aussi autoincrementé pour les ID des autres tables

Merci pour ton aide
Modifié par dreadstock (15 Jun 2009 - 15:02)
Si j'ai bien compris, pour la table contact, je ne met pas ID_contact dans la table "organisme", car on est dans une relation 1-n et qu'il peux y avoir plusieurs contact.

Je fais plutôt :


Table liaison_org_cont
------------------------------
Id_organisme Id Contact
------------------------------
1 2
2 6


Là, c assez facile si on fait dans phpmyadmin "Inserer" à la main.

Mais comment ca va marcher quand c le client qui va rentrer le "contact" pour un organisme sur l'extranet ?

J'ai un peu de mal a savoir quand je mets un id ou quand j'en met pas dans une table.
a écrit :
comment ca va marcher quand c le client qui va rentrer le "contact" pour un organisme
1. Si c'est un contact existant tu récupères son id. Si c'est un nouveau contact, tu l'insères et tu récupères son id (last_insert_id)
2. Tu insères le lien contact organisme dans la table de liaison

a écrit :
J'ai un peu de mal a savoir quand je mets un id ou quand j'en met pas dans une table.
Mets-en tout le temps, ça mange pas de pain et ça t'évite de te rendre compte au bout de trois semaines de dev que tu en avais besoin. Ça me fait penser que SQLite, par exemple, te laisse même pas le choix : tu en as sur toutes les tables, que tu le veuilles ou non.
Modifié par marcv (15 Jun 2009 - 15:36)
Merci pour tes conseils.

Je vais bosser dessus.
Je vais bien organiser cela, et je reviens vers toi.

Merci encore pour la précieuse aide
Voici ce que j'ai fais .

Pourrais tu me dire si ca peux le faire, si je peux commencer à la rentrer dans phpmyadmin ?


Merci infiniment pour ton aide upload/17281-tn1.jpg
Merci parceque la je galère avec les jointures de tables.

Par contre, pourrais tu m'expliquer en quelques mot à quoi ca sert ton logiciel. Je suis pas top en anglais !! thanks