2017-12-11 15 views
0

EDIT別のテーブルから外部キー列を:それは一見用語の「橋渡しの表は、」私は私がして、テーブルprodu_tagにレコードを挿入しようとしている主のレコードの挿入;

を必要とするものですプライムキーと外部キーを列として使用します。

produ_tag

link to the table structure

製品

products structure

タグ

最初の列refHeproductsテーブルの製品のコードであり、2番目のフィールドにはtagsテーブルの製品タグが含まれています。モデリングソフトウェアはこの追加テーブルを作成し、必要なタグがどの製品に含まれているかを保存できます。

問題はそれらがプライマリなので、2つのタグを持つ商品がある場合、以前に同じ商品が挿入されているため、そのレコードは挿入されません。

両方の主なものを削除する必要がありますか?あるいは、モデリングソフトウェアがそのようにレンダリングするので、これを処理する別の方法があります。

+0

あなたはブリッジテーブルを探しているようですが、 'products'テーブルと' tags'テーブルの構造を分かち合うことができますか? –

+0

件名に両方を追加しました – GantzisGoat

+1

異なるモデリングツールは、PKをブリッジテーブルで別々に扱います。 1つの方法は複合キーです。あなたの記述を読んでいるなら、複合キーであるprodu_tsagのPKは(refHe、namCh)です。それはうまくいくはずで、2つのタグを持つ製品、または同じタグを持つ2つの製品を挿入できるようにすべきです。 –

答えて

1
produ_tag

テーブルが「ブリッジテーブル」であり、複合主キーは、タグの任意の数(namCh)が製品(refHe)に関連付けられることを可能にする、タグはtagsテーブルに、その存在することを条件とします(refHe, nameCh)のペアは固有です(つまり、同じ商品とタグを複数回関連付けることはできません)。

タグを挿入しようとしたときにエラーが発生した場合は、誤ったPK設定が原因ではありません。存在しないタグを参照しようとしているか、すでにテーブルに存在する値の組み合わせを挿入しようとしています。

主キーは削除しないでください。私が見る唯一の明らかな問題は、produ_tag.refHeからproducts.refHeまでのFK制約がないことです。

+0

欠けているFK制約を指摘するのに適しています。 –

+0

多対多マッピングテーブルの最適なスキーマについては、http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_tableを参照してください。 –

関連する問題