1

私はこの状況を達成したいデータベースを設計しています。CategoryテーブルとProductsテーブルがあります。既存のカテゴリが割り当てられていない製品を追加できないようにしたい(ProductsテーブルのFKを使用して追加したと思います)。カテゴリでDELETEを強制して、そのカテゴリに割り当てられているすべての子(製品)を削除したいと思います。カテゴリに属する​​すべての製品が削除された場合、カテゴリを削除したくありません。

現在、私が思いついたのはこれです:http: //codepad.org/eSGqtyOs

よくわかりませんが、ある人は、CategoriesテーブルのFKにより、製品なしでカテゴリを追加できなくなり(キャッチ22 ..)、製品テーブルにOn delete CASCADEを追加すると、カテゴリが自動的に削除されます。そのカテゴリの最後の製品が削除されます...

これをまっすぐに正しくするために助けてください。

また、古いカテゴリ/製品を「販売」しないように説得しようとしないでください。理由があります。このシステムの要件を知っています。

4

1 に答える 1

3

要件から判断すると、カテゴリ (製品の参照) に FK は必要ありません。実際、これらの FK を円形にした方法では、ニワトリが先か卵が先かの問題により、データを挿入することはできません。

商品のFKのみが必要です(カテゴリを参照)。

既存のカテゴリが割り当てられていない製品を追加できないようにしたい (製品テーブルの FK でそれを行ったと思います)。

それは正しい。

カテゴリを強制的に削除して、そのカテゴリに割り当てられたすべての子 (製品) を削除したいと考えています。

ON DELETE CASCADE がそれを処理する必要があります。

カテゴリに属する​​すべての製品が削除された場合、カテゴリを削除したくありません。

FK は、子のない親を許可します。

したがって、あなたの場合、カテゴリを参照する製品の FK により、製品がなくてもカテゴリが存在できます。

于 2012-11-04T02:18:32.763 に答える