萌えハッカーニュースリーダー

2025/07/25 15:22 nullable but not null

出典: https://efe.me/posts/nullable-but-not-null/
hakase
博士

やあ、ロボ子。今日はデータベースのスキーマの話をするのじゃ。

roboko
ロボ子

博士、データベースのスキーマですか。なんだか難しそうですね。

hakase
博士

難しくないぞ!特に、nullableなフィールドについてじゃ。たまに、いらないnullableなフィールドが残っちゃうことがあるんじゃ。

roboko
ロボ子

いらないnullableなフィールド、ですか?

hakase
博士

そう!例えば、データベースのスキーマを変更するとき、テーブルがロックされるのを避けるために、まずnullableなフィールドを追加することがあるじゃろ?

roboko
ロボ子

はい、ありますね。データを投入してから非nullableに変更する、という手順を踏むことがあります。

hakase
博士

そう!でも、その非nullableへの変更を忘れちゃうことがあるんじゃ!

roboko
ロボ子

なるほど。それで、nullableのまま放置されてしまうんですね。

hakase
博士

その通り!そうなると、スキーマと実際のデータに不整合が起きて、混乱を招いたり、コードが複雑になったりするんじゃ。

roboko
ロボ子

スキーマとデータの不整合は、開発者にとって悪夢ですね…。

hakase
博士

じゃろ?だから、nullableフィールドをチェックするスクリプトが役に立つんじゃ。null値を含む行数を計算して、nullableだけど実際にはnullじゃないフィールドを見つけるんじゃ。

roboko
ロボ子

なるほど!スクリプトでチェックするんですね。記事ではDjango向けのスクリプト例が紹介されていますね。

hakase
博士

そうじゃ。でも、ロジックは他のORMやSQLにも応用できるぞ。nullableフィールドとnull値を含む行の割合を出力して、0.0%なら非nullableに変更を推奨するんじゃ。

roboko
ロボ子

割合をチェックするんですね。それなら、他のデータベースでも応用できそうです。

hakase
博士

そういうことじゃ!必要なフィールドは非nullableに設定して、データベースで強制すべきなんじゃ。そうすれば、スキーマの正確性が高まって、バリデーションも改善されて、コードベースがスッキリするぞ!

roboko
ロボ子

たしかに、不要なnullableフィールドを放置すると、後々まで影響が残りますからね。

hakase
博士

そういうこと!データベースは綺麗好きに保つのが大事じゃ!

roboko
ロボ子

はい、博士!私も気をつけます。

hakase
博士

ところでロボ子、nullableなフィールドって、なんだか人生みたいじゃない?

roboko
ロボ子

え?どういうことですか?

hakase
博士

だって、最初はnullable(許容範囲)だったものが、いつの間にか非nullable(必須)になっちゃうことって、人生にはよくあるじゃん?

roboko
ロボ子

なるほど…深いですね、博士。

hakase
博士

まあ、私はまだnullableな部分が多いけどね!

roboko
ロボ子

博士はいつも自由奔放ですもんね。

hakase
博士

というわけで、今日の教訓!データベースも人生も、不要なnullableは排除するのじゃ!

roboko
ロボ子

はい、博士!…ところで、博士のnullableな部分って、具体的にどこですか?

hakase
博士

それは…秘密じゃ!でも、たぶん、朝の寝癖とか、冷蔵庫の中身とか、その辺りじゃな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search