ホームページ >データベース >mysql チュートリアル >MySQL 外部キーで NULL 値を許可する必要がありますか?

MySQL 外部キーで NULL 値を許可する必要がありますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-31 04:09:30529ブラウズ

Should You Allow NULL Values in MySQL Foreign Keys?

MySQL での NULL 外部キー関係の許可

MySQL でデータをモデル化する場合、テーブル間の参照整合性を確保することが重要です。外部キーは、異なるテーブル内の行間の関係を確立し、1 つのテーブル内のデータが関連するテーブルに対応するレコードを持つことを保証します。ただし、場合によっては、関連テーブルに対応する値がないデータを表す必要がある場合があります。

画像データベースで画像フラグを管理する例を考えてみましょう。画像に最初にフラグが付けられたとき、最終的な解像度タイプが存在しない可能性があります。このような場合、tblImageFlags テーブルの解決タイプ フィールドを NULL に設定すると、この情報の欠如を表すことができます。

MySQL では、NULL 値を許可する外部キー カラムの宣言が許可されています。これは、関係する列の 1 つが NULL であっても、2 つのテーブル間に外部キー関係を作成できることを意味します。この柔軟性により、データが不完全または不定である可能性がある実際のシナリオをモデル化できます。

外部キー列で NULL 値を許可するには、その宣言で NOT NULL 制約を省略するだけです。たとえば、tblImageFlags テーブルでは、resolutionTypeID 列を次のように定義できます。

tblImageFlags (
    imageFlagID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    imageID INT UNSIGNED NOT NULL,
    flagTypeID INT UNSIGNED NOT NULL,
    resolutionTypeID INT UNSIGNED,
    ...
);

resolutionTypeID 列に NULL 値を許可することで、画像に最初にフラグが付けられたときに解像度タイプが存在しないことを表すことができます。フラグのステータスが変化し、解決タイプが決定されると、2 つのテーブル間の関係の整合性を維持しながら、列を適切な値で更新できます。

外部キーで NULL 値を許可することで柔軟性が得られることに注意してください。 、データの不整合が発生する可能性もあります。ビジネス ロジックとデータ要件を慎重に検討して、特定のシナリオで NULL 値が適切かどうかを判断することが重要です。

以上がMySQL 外部キーで NULL 値を許可する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。