- PR -

主キーにブランクの可能性がある項目はありですか?

投稿者投稿内容
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2005-09-13 21:09
「ブランク」を素直に理解すると「空白文字」ですかね? 1文字か、複数文字かという問題がありますが。

でも今回の質問の場合は、どちらかというと「長さ0の文字列」とか「NULL」のことを指していると理解したほうが妥当そうですね。

DB2は良く知りませんが、さすがに主キー制約を定義するのであれば、NULLは不可能と思います。一意制約ならNULLもOKそうですが、実はRDBMSによって一意制約におけるNULLの扱いが違う場合があるので、DB2はどうなのかを念のため確認してみてください。

Oracleの場合、一意制約においてのみ、NULLとNULLは等しくなります。例えば一意制約の定義される2つの列に対して、('A', NULL)の組み合わせは1つしか許されません。NULLとNULLの比較結果はNULLであるという原則からすると、おかしな実装です。

PostgreSQLやMySQLは、この原則に従っています。

以上、純粋に実装の観点からの意見です。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-09-13 22:05
CHARだったら1文字も複数文字も空白文字も長さ0の文字列も同じですが。
そして主キーであれば普通CHARを利用します。

[ メッセージ編集済み 編集者: Anthyhime 編集日時 2005-09-14 07:25 ]

スキルアップ/キャリアアップ(JOB@IT)