画像サイトをまとめています。基本的なスキーマは非常に単純な 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
!)。そして、それらのボーナスポイントを与えるのに十分なカルマが得られたら、私はします:)