0

ブログと画像の間に関係を作成しようとしています。ブログには最大で 1 つの画像 (アバターのように考えてください) を含めることができますが、何も含めることもできません。したがって、blogs テーブルに外部キーを置きます。画像テーブルに制約を作成しようとしていました。ブログが削除されると、関連する画像もデータベースから削除されます。ただし、外部キーがカスケードする必要があるテーブルにない場合、制約を作成する方法がわかりません。関連しないフィールドを除いた私のテーブルは次のとおりです。

CREATE TABLE `blogs` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `image_id` int(10) unsigned default NULL,
  PRIMARY KEY  (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=921 DEFAULT CHARSET=utf8;

CREATE TABLE `images` (
  `id` int(10) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=251021 DEFAULT CHARSET=utf8 

何か助けはありますか?

4

1 に答える 1

0

画像を別のテーブルに置く唯一の理由は、同じ画像が複数のブログで共有される可能性がある場合です。その場合、とにかくカスケードで削除したくないでしょう。その画像を参照しているブログが残っていないかどうかを判断して削除するには、特別なロジックが必要です。これは、DDL では実行できませんでした。

blogs代わりに、テーブルの画像値を null 許容列にするだけです。

于 2013-09-20T17:07:27.757 に答える