Base de données
Fetide68
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Fetide68 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Fetide68 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
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
- Tnt base de données vide - Forum TV & Vidéo
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
- Données de navigation - 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.