Question de retranscription d'un heritage en script .sql [Résolu]

Signaler
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012
-
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012
-
Bonjour ,

je suis débutant en sql et il me faut develloper une petite base de donnée pour un site internet .

voila le lien de l'image avec une partie du mcd : ici

Dans un premier temps j'aimerais savoir si j'ai bien conçue celon vous cette partie de mcd .


Et t'il possible ensuite de me donner un exemple de création de script ( jointure ou autre) a creer entre la table mere ( produits ) et la table fille ( carte mere par exemple )

je vous remercie par avance .
A voir également:

17 réponses

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Salut,

ton MCD me parait pas si pire, pour ce qui est de la partie SGBD ça va dépendre de comment tu veux faire ton MLD, il existe plusieurs possibilité. Je te laisse regarder ce lien où tu devrais trouver ton bonheur.
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Re,

que ce soit la table GC ou MB ça change pas grand chose ^^

Alors petite chose sur tes CREATE, je sais pas quel SGBD tu utilises mais pour certains il te faut nécessairement une clé primaire (ce qui n'est pas le cas dans ta table "dérivée").

Pour ce qui est du nouveau schéma que tu as fait il est maintenant plus proche du MLD que du MCD.

Sinon je vois rien de spécial à redire.
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Oui, un id int not null auto_increment référencé en primary key sur chacune de tes tables "dérivées". Ou si tes valeurs du champ `reference` sont uniques tu peux le déclarer comme clé primaire.

Attention, certains SGBD n'ont pas besoin de clé primaire (c'est le cas d'Access il me semble). Par contre, même pour ces SGBD, une clé primaire peut être pratique car elle permettra d'accéder à coup sûr à un enregistrement précis (pour l'update ou le delete), ce qui n'est pas nécessairement possible si aucun des tes autres champs n'est unique.
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Pour connaitre toutes les cartes mères avec un socket 1366 que tu as référencées, tu n'as pas besoin de passer par ta table `produits`.

Par contre si tu veux connaitre toutes les cartes mères avec un socket 1366 ET leur libellé/marque/quantité (les champs de `produits`) alors oui, il faut faire une jointure. Et pour ceci ta requête me parait correcte.
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012

Personne pour me venir en aide ? =(
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012

je te remercie . je regarde tous ceci en profondeur et je reviens a la charge avec une partie du code qui s'applique a mon cas pour voir si je ne fait pas d'hors sujet =D

Merci encore =)
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012

Bonjour ,

bon j'ai donc modifier la partie MCD ici.
Maintenant partie scipt je me demande si c'est comme ça que je doit proceder .


CREATE TABLE `produits` (
`id_produits` int(100) NOT NULL AUTO_INCREMENT,
`libelle` varchard(100) NOT NULL, 
`marque` varchard(25) NOT NULL,
`quantite` int(200) NOT NULL,

PRIMARY KEY (`id_produits`)
);

CREATE TABLE `carte_mere`(
`id_produits` int(100) NOT NULL ,
`reference` varchar(50) NOT NULL,
`memoire` varchar(10) NOT NULL,
`type_mem` varchar(10) NOT NULL,
`prix` varchar(4) NOT NULL,

FOREIGN KEY (`id_produits`) references `produits`(`id_produits`)
);






suis-je dans le bon ? =D
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012

la seconde table c'est carte graphique et non pas carte-mere ^^'
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012

Le mieu serais donc de mettre un champ de plus dans les classe "dérivée" du style id en clé primaire ?
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012

ok je vais donc en mettre une dans chaque classe .

aprés lorsque je voudrais appeler l'integralité des cartes mere ayant un socket 1366 je prosséde comme ceci ?


SELECT produits.id_produits, produits.libelle, produits.marque, produits.quantite, carte-mere.reference, carte-mere.socket, carte-mere.chipset, cartemere.prix
FROM produits, carte-mere
WHERE carte-mere.socket = '1366';





suis-je dans le bon ? =D
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012

je pense avoir oublier la jointure


where produits.id_produits = carte-mere.id_produits
and carte-mere.socket = '1366';
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012

Je te remmercie de tous tes conseils . si j'ai besion un peu d'aide je reviendrais poser une question sur ce sujet ( si le c'est en rapport bien entendu ) =) . encore une fois merci =)
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012

ahah je suis deja de retour

bon voila la question est peu etre toute bete mais je prefere demander .

lorsque je veut faire par exemple un insert pour rajouter un produit , comment je procede ?

je m'explique : etant donnée que des information de mon produits ce trouve a la fois dans produits et ma table "dérivée" comment je dois code mon insert pour que les données ce trouvent dans produits et la fameuse classe "dérivée"
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Je vois pas bien comment le faire en une requête, à voir avec d'autres helpers qui suivraient le fil de la discussion. Perso j'imagine l'insertion en 3 requêtes :
- insert d'un tuple dans la table `produits`,
- select dudit tuple créé pour récupéré l'id auto_incrémenté,
- insert d'un tuple dans la table "dérivée" avec l'id récupéré plus tôt.
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012

je ferais donc ceci avec une fonction non ?
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Tu peux effectivement faire une procédure stockée qui gérera les 3 requêtes.
Et pour bien faire tu peux même le faire lors d'une transaction, histoire que si une des 3 requêtes ne passe pas alors la totalité du processus est annulé.
Messages postés
66
Date d'inscription
vendredi 9 septembre 2011
Statut
Membre
Dernière intervention
4 juin 2012

avec un trigger ?
Mais et t'il possible de faire ceci avec mysql sous easy php ?