64

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

4

1 に答える 1

98

NULLこれは、外部キー列を許可することで解決できますtblImageFlags.resolutionTypeID


PSボーナスは、データベースの場合、それが「インデックス」か「インデックス」かを教えてくれた人に指摘します。

indexの複数形はindexである必要があります

ブライアン・A・ガーナーによる「現代アメリカの用法」によると:

通常の目的では、 index ではなく、 index好ましい複数形です。... Indicesは、foradogmata ほど大げさではありませんが、それでも大げさです。一部のライターは、数学や科学のように、技術的なコンテキストでインデックスを好みます。indexの複数形としては最適ではありませんが、「指標」という意味ではインデックスを使用できます。... 複数のインデックスからのバックフォーメーションである単数のインデックス避けます。

于 2009-01-14T05:22:02.790 に答える