1

したがって、InnoDBテーブル(Products)と(Categories)を使用する必要があります。Productsテーブルの「Category」フィールドとCategoriesテーブルの「CategoryId」の関係を設定したいと思いました。

ただし、FKを作成しようとすると、Productsテーブルで主キー「ProductsId」を選択し、CategoriesテーブルでPK「CategoryId」にマップすることしかできません。

たぶん私は外部キーを設定する方法/理由を逃しています。私の考えと私が間違っているかどうか教えてください:

1)追加時に商品をカテゴリに追加する必要がある場合は、カテゴリが存在するか、最初に作成する必要があります。削除するカテゴリから製品を削除するために(プログラムまたはDBバックエンドで)何らかのタスクを実行しない限り、カテゴリを削除することはできません。

2) CategoryId値がProductsテーブルの「Category」フィールドに格納されることを期待していました。次に、ビューに表示するときに、Categories.NameフィールドをCategoriesId値で検索する必要があります。

編集: 外部キーに含まれる2つのフィールドは同じでなければならないことを理解しています、サイズ、タイプ...など。ただし、ProductIdとCategoryIdをリンクすることは、私がやりたいと思っていることとの関連でどのように機能しますか。ProductIdとCategoryIdの間にFKを作成したとき、製品レコードを追加させません。

また、[カテゴリ名]フィールドと[製品カテゴリ]フィールドは同じタイプ、サイズなどですが、外部キータブでそれらを選択するオプションがありませんか?

カテゴリテーブルが各カテゴリの一部である製品を認識できるように設定するにはどうすればよいですか。

4

2 に答える 2

2

残念ながら、私は自分の質問に答える必要があります。私の技術的な問題のほとんどの理由は、作成しようとしているフィールドが「インデックス化されている必要がある」ためです。

私が抱えていた包括的な問題は、Products テーブルの実際の「Category」varchar フィールドを取り除き、Category テーブルの CategoryId フィールドに存在する値のみを持つ CategoryId フィールドを作成する必要があることでした。

次に、Products.CategoryId 値を介して Categories.Name フィールドを参照する必要があります。

少なくともこれは私が理解するようになったことです。

于 2010-11-23T18:12:10.797 に答える
1

Workbench を使用している場合は、FK に含まれる両方の列の型、長さ、および属性が同じであることを確認してください。

于 2010-11-23T17:39:34.050 に答える