画像サイトをまとめています。基本的なスキーマは非常に単純な MySQL ですが、画像に関連付けられている可能性のある管理者フラグ (「不適切」、「著作権」など) を表現しようとすると、問題が発生します。私の現在の考えは次のとおりです。
tblImages (
imageID INT UNSIGNED NOT NULL AUTO_INCREMENT,
...
);
tblImageFlags (
imageFlagID INT UNSIGNED NOT NULL AUTO_INCREMENT,
imageID INT UNSIGNED NOT NULL,
flagTypeID INT UNSIGNED NOT NULL,
resolutionTypeID INT UNSIGNED NOT NULL,
...
);
luResolutionTypes (
resolutionTypeID INT UNSIGNED NOT NULL AUTO_INCREMENT,
resolutionType VARCHAR(63) NOT NULL,
...
);
(読みやすくするために省略しています。さまざまな外部キーとインデックスが順番に並んでいます、誓います)
tblImageFlags.flagTypeIDは、フラグ型のルックアップ テーブルで外部キー化されており、ご想像のとおり、 で外部キー化するtblImageFlags.resolutionTypeID 必要luResolutionTypes.resolutionTypeIDがあります。当面の問題は、フラグが最初に発行されたときに、論理的な解決タイプがないことです (これは の適切な使用法であると宣言しますNULL)。ただし、値が設定されている場合は、ルックアップ テーブルに対して外部キーにする必要があります。
この状況に対する MySQL 構文の回避策が見つかりません。それは存在しますか?最高の準優勝者は次のとおりです。
- 「モデレートされていない」解像度タイプを追加する
NULLエントリを追加しますluResolutionTypes.resolutionTypeID(これは列でも機能しAUTO_INCREMENTますか?)
洞察をありがとう!
PSボーナスは、データベースの場合、それが「インデックス」か「インデックス」かを教えてくれた人に指摘します。
フォローアップ: テーブル構造の構文エラーであることが判明したことを指摘してくれた Bill Karwin に感謝します (NOT NULL許可したい場合は、列を に設定しないでくださいNULL!)。そして、それらのボーナスポイントを与えるのに十分なカルマが得られたら、私はします:)