Question

Je dois donc les tables InnoDB (Produits) et (catégories). Je voulais installer une relation entre le champ « Catégorie » sur la table des produits, et le « CategoryId » de la table Catégories.

Mais en essayant de créer un FK il ne me permet de sélectionner la clé primaire « ProductsId » sur la table Produits et carte au PK « CategoryId » sur la table Catégories.

Peut-être que je manque le chemin / raison de configurer une clé étrangère. Mes pensées et dites-moi si je me trompe:

1) était d'exiger un produit ajouté à une catégorie lorsqu'elle est ajoutée, la catégorie doit exister ou vous devez créer d'abord. Vous ne pouvez pas supprimer une catégorie à moins que vous effectuez une tâche (programmically ou sur le backend DB) pour éliminer les produits d'une catégorie que vous êtes désireux de supprimer.

2) Je me attendais à la valeur CategoryId à stocker dans le champ « Catégorie » de la table Produits. Puis lors de l'affichage à mon avis, aurait besoin de regarder le champ Categories.Name par la valeur CategoriesId.

EDIT: Je comprends donc que deux domaines impliqués dans les clés étrangères doivent être les mêmes, la taille, les types ... etc. Cependant, comment ne liant le travail ProductId et CategoryId dans le contexte de ce que je l'ai mentionné ci-dessus, je suis désireux de le faire. Quand j'ai créé un FK entre ProductId et CategoryId, je ne me laisse pas ajouter un enregistrement du produit.

En outre, le champ Nom de catégorie et le champ Catégorie de produits sont du même type, size..etc, mais je ne suis pas la possibilité de sélectionner ceux dans l'onglet clé étrangère?

Comment dois-je mise en place de telle sorte que la table catégories saura quels produits font partie de chaque catégorie.

Était-ce utile?

La solution

Ok, malheureusement, je dois répondre à mes propres questions. La raison de la plupart de mes problèmes techniques parce que le champ que vous essayez de faire « doit être indexé ».

La question comprehesive j'avais été que je devais me débarrasser du champ réel varchar « Catégorie » sur la table des produits, et créer un champ de CategoryId qui aurait seulement une valeur qui existe dans la table Catégorie champ CategoryId.

Maintenant, je vais juste avoir à référencer le champ Categories.Name par la valeur Products.CategoryId.

ce que j'ai au moins arriver à comprendre.

Autres conseils

Si vous êtes sur le Workbench, vérifiez que les types, les longueurs et les attributs des deux colonnes impliquées dans le FK sont les mêmes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top