Construisez une relation plusieurs-à-plusieurs entre deux tables : la table de données propres (table clean_data) et la table utilisateur (table utilisateur) ont établi une relation plusieurs-à-plusieurs. Comme le montre la figure ci-dessous :
1. Créez une table
Ouvrez navicat et créez trois tables, la table clean_data et l'utilisateur. table et la table de relations entre les deux tables (table clean_data_user).
Les structures des tableaux sont les suivantes :
Recommandations associées : " Tutoriel graphique Navicat pour mysql》
2. Établir les clés étrangères
2.1 Définissez d'abord les deux champs cln_dt_id et user_id à associer dans le clean_data_user table comme clé primaire. Comme le montre la figure ci-dessous :
2.2 Cliquez sur le bouton de clé étrangère pour établir une relation de clé étrangère. Comme vous pouvez l'imaginer d'après le nom des champs, cln_dt_id sera associé à l'identifiant dans la table clean_data et user_id sera associé à l'identifiant dans la table user. Comme le montre la figure ci-dessous :
Remarques :
1 Lors de l'établissement d'une relation plusieurs-à-plusieurs dans une base de données. table, vous devez d’abord établir la clé primaire. Si la clé étrangère n'est pas établie en premier, une erreur 1215 se produira, comme le montre la figure 6 ci-dessous. J'ai perdu près de deux heures sur cette question. Cela ne devrait vraiment pas être le cas.
**
Plus tard, j'ai découvert qu'il n'était pas nécessaire de créer une clé primaire, il suffit de créer des index pour cln_td_id et user_id !
**
Alors, trions les raisons de l'erreur 1215 :
Erreur lors de la création de clés étrangères dans MySQL : 1215 Impossible d'ajouter la contrainte de clé étrangère
1. Les types ou tailles des deux champs ne correspondent pas strictement. Parmi eux, les deux mots courts sont int(6) et int(7), qui ne correspondent pas. L'un n'est pas signé (non signé) et l'autre est signé, ce qui est également inégalé.
2. Le champ essayant de définir une clé étrangère n'est pas indexé ou n'est pas une clé primaire. Si l'une d'elles n'est pas la clé primaire, vous devez d'abord créer un index pour celle-ci.
3. Une ou deux des tables sont des tables du moteur MyISAM. Si vous souhaitez utiliser des contraintes de clé étrangère, la table doit être du moteur InnoDB (en fait, si les deux tables sont du moteur MyISAM, cette erreur ne se produira pas du tout, mais la clé étrangère ne sera pas générée, seul l'index le sera être créé) Vous devez vérifier le type de moteur du tableau.
4. Les noms des clés étrangères ne peuvent pas être répétés.
5. Vous avez peut-être défini ON DELETE SET NULL, mais les champs clés associés sont définis sur des valeurs NOTS NULL. Vous pouvez résoudre le problème en modifiant la valeur de l'attribut cascade ou en définissant l'attribut field pour autoriser null.
6. Veuillez vous assurer que vos options Charset et Collate sont cohérentes au niveau de la table et au niveau du champ.
7. Vous avez peut-être défini une valeur par défaut pour la clé étrangère, telle que default=0.
8. Il y a une erreur de syntaxe dans l'instruction ALTER.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!