アカウント名:
パスワード:
よくあるバグですね.
データベース(SQLやCSV)で「ワクチン接種の有無」という項目をつくり値は,有,無,NULL,の3値となるような設計&実装をしますつまり,不明の場合はNULL,確定した場合は有or無, です.
これを2値と勘違いして,「有」と「それ以外(つまりNULL or 無)」と集計したりSQLで SELECT * FROM hogehoge WHERE "ワクチン接種の有無" == TRUE などとクエリを書いてしまうと,今回のようなバグが発生します.
ワクチン接種の有無,という一見2値のような項目名に対して,データは3値になるという「矛盾」が混乱を招くのでしょう.(今回の場合は,日付の入力
いや、普通にNULL無いと困るだろ。諸悪の根源はNULLではなく、仕様書を良く読まずに勘違いしたまま実装しちゃう方々ね。
例えば計算結果を格納するintカラムにおいて、not nullにしたら計算をした結果の0と初期値の0とを見分けなければ行けないという点で、nullは有用に思える。が、その他のnullの悪行を考えると、冗長に見えようと、calculatedのboolカラムを別で持たせる方法を私は採用するよ。
そのような手法を用いてもアプリケーション実装側が意識しないといけないのは同じです。intカラムで0と初期値の0を区別せずに集計してしまう問題が起きます。
nullのほうが一般的だろうと思います。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー
NULLは諸悪の根源 (スコア:5, すばらしい洞察)
よくあるバグですね.
データベース(SQLやCSV)で「ワクチン接種の有無」という項目をつくり
値は,有,無,NULL,の3値となるような設計&実装をします
つまり,不明の場合はNULL,確定した場合は有or無, です.
これを2値と勘違いして,「有」と「それ以外(つまりNULL or 無)」と集計したり
SQLで SELECT * FROM hogehoge WHERE "ワクチン接種の有無" == TRUE などとクエリを書いてしまう
と,今回のようなバグが発生します.
ワクチン接種の有無,という一見2値のような項目名に対して,データは3値になるという「矛盾」が
混乱を招くのでしょう.(今回の場合は,日付の入力
Re: (スコア:0)
いや、普通にNULL無いと困るだろ。
諸悪の根源はNULLではなく、仕様書を良く読まずに勘違いしたまま実装しちゃう方々ね。
Re:NULLは諸悪の根源 (スコア:0)
例えば計算結果を格納するintカラムにおいて、
not nullにしたら計算をした結果の0と初期値の0とを見分けなければ行けないという点で、nullは有用に思える。
が、その他のnullの悪行を考えると、冗長に見えようと、
calculatedのboolカラムを別で持たせる方法を私は採用するよ。
Re: (スコア:0)
そのような手法を用いてもアプリケーション実装側が意識しないといけないのは同じです。
intカラムで0と初期値の0を区別せずに集計してしまう問題が起きます。
nullのほうが一般的だろうと思います。