3値論理を絡めて考えてみた システム間での誕生日の取り扱い。 2008/03/29
2008/03/31

はじめに


実際あるかどうかわからないけど、ちょっと考えてみました。

誕生日って、年月日のことをさしていると思います。
で、誕生時刻っていうのもありそうです。

birth_day
birth_time
とかなんとかなるのでしょうか。

で、これをリレーショナルデータベースで取り扱うというふうに考えてみます。

まあ、一般に、誕生日というのは大抵の人が知っています。
が、しかし、誕生した時刻っていうのは知らない人がいるのではないかと思います。会話の中では、あまりでてこないような気がします(僕だけかもしれませんが...)

誕生時刻を知らない場合には、birth_timeは不明でunknownです。そこで、NULLを入れちゃいたいわけです。

ちなみに、インドの占星術とかで、占うと誕生時刻が必要です。

システム間でおこりそうな問題



あるシステムAでは、ユーザの誕生日しか扱っていませんでした。
あるシステムBでは、ユーザの誕生時刻も必要としていました。

システムAからユーザ情報をシステムBに移行します。
※このときに欠けた情報を収集しなおすことができないという条件とします。

すると、何が起こるでしょうか。

あるシステムAでは、誕生時刻を扱っていないので、あるシステムBに移行する際に、「正しくない」もしくは「明らかではない」情報が入りこむことになります。

システムBは、RDBを使って、SQLを使用してデータベースの操作を行っています。
birth_timeには、NOT NULL制約になっていたとしたら、移行の際に、「正しくない」情報が入ることになります。
たとえば00:00もしくは、23:59で値を入れるとかです。
birth_timeにNULLを入れることができるのであればNULLを入れて《不明(unknown)》ということにできそうです。

さらに...



さらに、あるシステムCにユーザ情報を移動させないといけなくなりました。
あるシステムCは、インド占星術にともなった占いをサポートしています。ユーザの誕生時刻が必要です。

システムCにデータを移行するもととなるシステムBでは、bitrh_timeに「正しくない」情報が入っている可能性があります。「正しくない」情報が、存在する可能性がある理由は、あるシステムAからデータを移行させたことが原因です。

こういうことってありそうな気がするんですがどうでしょうか。

と、いろいろ思考実験していくと、データベースが「あいまい」になる可能性はあるのだなぁと。

: