2 つのテーブル間に多対多の関係を構築します。クリーン データ テーブル (clean_data テーブル) とユーザー テーブル (ユーザー テーブル) は多対多の関係を確立します。以下の図に示すように:
1. テーブル
を作成します。navicat を開き、clean_data テーブルと user という 3 つのテーブルを作成します。 table 、および 2 つのテーブル間の関係テーブル (clean_data_user テーブル)。
テーブルの構造は次のとおりです。
##関連する推奨事項:Navicat for mysql グラフィック チュートリアル>>2. 外部キーの確立
2.1 まず、clean_data_user テーブルに関連付ける 2 つのフィールド cln_dt_id と user_id を設定します。主キーとして。次の図に示すように: #2.2 [外部キー] ボタンをクリックして、外部キー関係を確立します。フィールドの名前から想像できるように、cln_dt_id は clean_data テーブルの ID に関連付けられ、user_id は user テーブルの ID に関連付けられます。以下の図に示すように:注:
1. データベース内で多対多の関係を確立する場合テーブルでは、まず主キーを確立する必要があります。最初に外部キーが確立されていない場合、以下の図 6 に示すように、エラー 1215 が発生します。この問題でほぼ 2 時間を無駄にしました。本当にそんなはずはありません。##*
後から、主キーを作成する必要はなく、cln_td_id と user_id のインデックスを作成するだけでよいことがわかりました。
**
それでは、1215 エラーの理由を整理しましょう:
MySQL で外部キーを作成する際のエラー: 1215外部キー制約
1を追加できません。2 つのフィールドの型またはサイズが厳密には一致しません。このうち、2 つの単語 short は int(6) と int(7) であり、一致しません。 1 つは署名なし (未署名)、もう 1 つは署名付きで、これも一致しません。
2. 外部キーを設定しようとしているフィールドにはインデックスが付けられていないか、主キーではありません。そのうちの 1 つが主キーではない場合は、まずそのインデックスを作成する必要があります。
3. テーブルのうち 1 つまたは 2 つは MyISAM エンジンのテーブルです。外部キー制約を使用する場合、テーブルは InnoDB エンジンのものである必要があります (実際、両方のテーブルが MyISAM エンジンのものであれば、このエラーはまったく発生しませんが、外部キーは生成されず、インデックスのみが生成されます)テーブルのエンジンタイプを確認する必要があります。
4. 外部キーの名前を繰り返すことはできません。
5. ON DELETE SET NULL を設定している可能性がありますが、関連するキー フィールドは NOTS NULL 値に設定されています。カスケード属性値を変更するか、null を許可するようにフィールド属性を設定することで、問題を解決できる可能性があります。
6. Charset オプションと Collate オプションがテーブル レベルとフィールド レベルで一貫していることを確認してください。
7. 外部キーのデフォルト値 (default=0 など) を設定している可能性があります。
8. ALTER ステートメントに構文エラーがあります。
以上がNavicat for MySQL でマルチテーブル リンクを確立する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。