Base de données
Fetide68
Messages postés
816
Statut
Membre
-
Fetide68 Messages postés 816 Statut Membre -
Fetide68 Messages postés 816 Statut Membre -
Bonjour,
J'ai lu tous les cours php/sql sur CCM et je m'en sors en faisant des exercices d'entrainement. Rien de tel pour retenir et apprendre correctement les bases.
Je m'apprête à utiliser une base de données un peu plus complexe, utilisant des références de tables en tables (clés étrangères).
Pour cela j'ai deux tables (je fais simple) :
FOURNISSEURS (id, nom, site, email);
PRODUITS (ref, produit, observations, categorie);
CATEGORIE (id_categorie, categorie);
Un produit figure dans 1 seule catégorie.
Une catégorie contient
// Pour l'histoire des catégories, pas de table de jointure mais je sais pas si mon approche est bonne.
Un fournisseur propose 1 ou N produit(s).
Un produit est vendu par 1 ou N fournisseur(s).
Il y a donc contrainte d'intégrité fusionnel... Création d'une table de jointure ?
Mais là en sql, je bloque un peu. Comment cela peut-il fonctionner et quelle est cette table de jointure ?
J'ai lu tous les cours php/sql sur CCM et je m'en sors en faisant des exercices d'entrainement. Rien de tel pour retenir et apprendre correctement les bases.
Je m'apprête à utiliser une base de données un peu plus complexe, utilisant des références de tables en tables (clés étrangères).
Pour cela j'ai deux tables (je fais simple) :
FOURNISSEURS (id, nom, site, email);
PRODUITS (ref, produit, observations, categorie);
CATEGORIE (id_categorie, categorie);
Un produit figure dans 1 seule catégorie.
Une catégorie contient
// Pour l'histoire des catégories, pas de table de jointure mais je sais pas si mon approche est bonne.
Un fournisseur propose 1 ou N produit(s).
Un produit est vendu par 1 ou N fournisseur(s).
Il y a donc contrainte d'intégrité fusionnel... Création d'une table de jointure ?
Mais là en sql, je bloque un peu. Comment cela peut-il fonctionner et quelle est cette table de jointure ?
A voir également:
- Base de données
- Fuite données maif - Guide
- Base de registre - Guide
- Base de données vide tnt - Forum TNT / Satellite / Réception
- Tnt base de données vide - Forum TV & Vidéo
- Effacer les données de navigation sur android - Guide
4 réponses
Bonjour,
Tu es sur la bonne voie de la sagesse pour sql =)
Une table de jointure est une table permettant de faire le lien 0..* dans un sens mais aussi dans l'autre (Un fournisseur propose 1 ou N produit(s) et Un produit est vendu par 1 ou N fournisseur(s))
Cette table se composerait dans ton cas de 2 colonnes ou plus:
FOURNISSEURS (id, nom, site, email);
PRODUITS (ref, produit, observations, categorie);
LIEN_PRODUITS_FOURNISSEURS (id_fournisseur,ref_produit)
Une telle table permet de lier facilement les fournisseurs avec les produits:
si on a des fournisseurs
(1,'fournisseur 1','site 1','email 1')
(2,'fournisseur 2','site 2','email 2')
(3,'fournisseur 3','site 3','email 3')
et des produits
(1001,'produit 1','','cat 1')
(1002,'produit 2','','cat 1')
(1003,'produit 3','','cat 2')
(1004,'produit 4','','cat 2')
Dans la table LIEN_PRODUITS_FOURNISSEURS
Si on veut lier le fournisseur 1 aux produits 1002 et 1003:
(1,1002)
(1,1003)
On a ainsi plusieurs produits pour un fournisseur
Et si le produit 1004 est founit par les 3 fournisseurs:
(1,1004)
(2,1004)
(3,1004)
On a ainsi plusieurs fournisseurs pour un produit
Tu es sur la bonne voie de la sagesse pour sql =)
Une table de jointure est une table permettant de faire le lien 0..* dans un sens mais aussi dans l'autre (Un fournisseur propose 1 ou N produit(s) et Un produit est vendu par 1 ou N fournisseur(s))
Cette table se composerait dans ton cas de 2 colonnes ou plus:
FOURNISSEURS (id, nom, site, email);
PRODUITS (ref, produit, observations, categorie);
LIEN_PRODUITS_FOURNISSEURS (id_fournisseur,ref_produit)
Une telle table permet de lier facilement les fournisseurs avec les produits:
si on a des fournisseurs
(1,'fournisseur 1','site 1','email 1')
(2,'fournisseur 2','site 2','email 2')
(3,'fournisseur 3','site 3','email 3')
et des produits
(1001,'produit 1','','cat 1')
(1002,'produit 2','','cat 1')
(1003,'produit 3','','cat 2')
(1004,'produit 4','','cat 2')
Dans la table LIEN_PRODUITS_FOURNISSEURS
Si on veut lier le fournisseur 1 aux produits 1002 et 1003:
(1,1002)
(1,1003)
On a ainsi plusieurs produits pour un fournisseur
Et si le produit 1004 est founit par les 3 fournisseurs:
(1,1004)
(2,1004)
(3,1004)
On a ainsi plusieurs fournisseurs pour un produit
Encore toi M@dien... Tu es sur tous les fronts et toujours là quand on a besoin de toi.
Ceci explique donc qua la table de jointure n'a pas besoin d'ID... On n'aura jamais deux fois une même entrée...
Mais maintenant, Si je rentre des données dans la table produits et dans la table fournisseurs, la table LIEN_PRODUITS_FOURNISSEURS n'est pas mise à jour automatiquement. Mais bon, je pense que ce n'est pas trop dure à faire depuis une page PHP.
J'ai pourtant bien désigné mes clés étrangères.
Parce que faut que ce soit le cas, sinon il y a un risque d'erreur et ça y'a pas moyen... Même pour les exercices, faut que ça marche ! Sur des BDD plus importantes, attention les dégâts !
Merci en tout cas.
Ceci explique donc qua la table de jointure n'a pas besoin d'ID... On n'aura jamais deux fois une même entrée...
Mais maintenant, Si je rentre des données dans la table produits et dans la table fournisseurs, la table LIEN_PRODUITS_FOURNISSEURS n'est pas mise à jour automatiquement. Mais bon, je pense que ce n'est pas trop dure à faire depuis une page PHP.
J'ai pourtant bien désigné mes clés étrangères.
Parce que faut que ce soit le cas, sinon il y a un risque d'erreur et ça y'a pas moyen... Même pour les exercices, faut que ça marche ! Sur des BDD plus importantes, attention les dégâts !
Merci en tout cas.