Conception BDD et relation

Eléphant du PHP | 135 Messages

06 janv. 2009, 16:18

Bonjour à tous !

voila j'ai trouver un tutoriel sur la Conception de bdd

http://www.asp-php.net/tutorial/asp-php ... php?page=4

Voila je voudrais savoir comment fait on join la table

Acheteur avec ville et pays tous en joignant après liste achat ?

PS je sais faire des jointure classiques avec JOIN, LEFT JOIN....

mais cette form de conception en Y est un peu speciale pour moi et j'en ai besoin pour un de mes projets !

Merci d'avance pour votre aide !
Zend PHP 5.3 certified ^^

Eléphant du PHP | 254 Messages

06 janv. 2009, 17:30

Salut

Quelle est ta question exactement ? Ici la relation entre l'acheteur et l'article est de type n-n, c'est a dire que chaque article peut etre acheté par plusieurs acheteur, et que chaque acheteur peut acheter plusieurs articles, conceptuellement pour résoudre ca il utilise une table de relation contenant des clefs étrangere vers ses deux tables.

Niveau requetes SQL les jointures se passent exactement comme pour le reste, c'est a dire entre une clef étrangere et une clef primaire pour faire les liaisons

Eléphant du PHP | 135 Messages

06 janv. 2009, 18:03

alors ma question se pose sur la relation entre acheteur et les 2 tables ville et pays ?

exemple:

Code : Tout sélectionner

SELECT * FROM MARQUE JOIN ARTICLE ON condition .... JOIN LISTE_ACHAT ON condition .... JOIN ACHETEUR ON condition .... JOIN PAYS ON condition .... # pour joindre acheteur à pays JOIN VILLE ON condition .... # pour joindre acheteur à ville
donc ma question est :

comment je peux joindre une table à 2 comme joindre acheteur avec PAYS puis joindre acheteur avec VILLE

ou bien ma requete est elle bonne (ce qui m'étonnerais je penses)

en fait je comprend très bien la relation n:n de LISTE_ACHAT avec ACHETEUR
mais je ne comprends pas la relation ACHETEUR avec VILLE ET PAYS !
d'ailleurs comment tu appellerais cette relation en forme d'Y en se basent sur le schéma ?


Voila !

Merci !
Modifié en dernier par hi-logik le 06 janv. 2009, 18:07, modifié 1 fois.
Zend PHP 5.3 certified ^^

Eléphant du PHP | 254 Messages

06 janv. 2009, 18:07

Oui syntaxiquement parlant ta requete est bonne, sous reserve que tes conditions comprennent bien les jointures elles memes

Eléphant du PHP | 135 Messages

06 janv. 2009, 18:10

ah ok cool !

je pensais pas qu'on pouvais faire ça comme ça !

et puis je le faire avec par exemple une 3eme table ?

je penses pas le faire pour le moment mais est faisable ?
Zend PHP 5.3 certified ^^

ViPHP
ViPHP | 2287 Messages

06 janv. 2009, 18:12

et puis je le faire avec par exemple une 3eme table ?
Tu peux y aller, la limite est de 61 jointures par requête (mais j'espère pour toi que tu t'arrêteras bien avant ;-) )
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 135 Messages

06 janv. 2009, 18:26

61 lol en effet je crois je m'arrêterais bien avant :D

j'en profite donc pour vous faire pars de ma conception d'une base de gestion client simple !
c'est de type sav

CLIENT:
id_client
nom
prénom....

VILLE:
id_ville
ville

REPRESENTANT
id_representant
nom,
prénom....

DOSSIER
id_product
model
marque
date d'achat
# un dossier équivaut à un produit sinon on créer un autre dossier

MARQUE
id_marque
marque

MAGASIN
id_magasin
magasin

COMMENT
id_comment
comment
date

Qu'en penser vous ?
Zend PHP 5.3 certified ^^

ViPHP
ViPHP | 3607 Messages

06 janv. 2009, 18:45

Et où sont les relations entre les tables ?

Eléphant du PHP | 135 Messages

06 janv. 2009, 18:53

en effet !

mille excuse les voilas !

representants - clients 1:n
car je souhaite qu'un client n'est qu'un représentant mais un représentant peux avoir n client

CLIENTS - VILLE 1:n
car une ville peut appartenir à plusieurs clients

CLIENTS - DOSSIERS 1: n
car un client peut avoir plusieurs Dossier, produits

DOSSIERS - MARQUE 1:n
pour éviter les donnée redondantes

DOSSIERS - MAGASINS
pour les données redondante aussi


Et la table comments je la laisse seul
avec dedans un clé étrangères de ID_CLIENT et une autre ID_REPRESENTANT

comme ça je pourrais sélectionne tous les commentaires de tel client ou de tel représentant !

voila j'espère que c'est pas trop mal

dommage qu'on ne peut pas mettre de photo je l'ai fait avec MYSQL WORKBENCH

thank you !
Zend PHP 5.3 certified ^^

Eléphant du PHP | 254 Messages

06 janv. 2009, 20:13

ok donc dans ta table client tu a un champ id_representant, un champ id_ville, dans ta table dossier tu a un champ id_client etc ?

Eléphant du PHP | 135 Messages

06 janv. 2009, 20:20

oui c'est exact c'est ce que j'ai comme champ !
Zend PHP 5.3 certified ^^

Eléphant du PHP | 254 Messages

06 janv. 2009, 20:24

Bon ben y a plus qu'a :)

Eléphant du PHP | 135 Messages

06 janv. 2009, 20:58

Ok parfais !

Merci à tous pour votre aide !


:D
Zend PHP 5.3 certified ^^