一般に、リストを作成するためのはるかに優れた方法は、ドメインまたはルックアップ テーブルを使用することです。
属性が必須の場合は、null 非許容にする必要があります。必須でない場合は、null 許容にする必要があります。Null
データが欠落していることを意味します。ユーザーは質問に答えませんでした。「わからない」「関係ない」という肯定的な回答とは別の価値観です。しかし、私は脱線します。
このようなスキーマが必要です:
create table dbo.person
(
. . .
gender_id tinyint null foreign key references dbo.gender(id) ,
. . .
)
create table dbo.gender
(
id tinyint not null primary key clustered ,
description varchar(128) not null unique ,
)
insert dbo.gender values( 1 , 'Fale' )
insert dbo.gender values( 2 , 'Memale' )
insert dbo.gender values( 3 , 'Prefer Not To Say' )
gender_id
テーブル内の列のドメインはperson
、外部キー制約によって強制され、
null
データが見つからないか不明です。データが提供されませんでした。
- 1 は、その人が女性であることを示します。
- 2 はその人が男性であることを示します。
- 3 は、その人があなたに情報を提供する気がないことを示します。
さらに重要なのは、次のように値のドメインを拡張する必要がある場合です。
insert dbo.gender values( 4 , 'Transgendered, male-to-female, post-gender reassignment surgery' )
insert dbo.gender values( 5 , 'Transgendered, male-to-female, receiving hormone therapy' )
insert dbo.gender values( 6 , 'Transgendered, female-to-male, post-gender reassignment surgery' )
insert dbo.gender values( 7 , 'Transgendered, female-to-male, receiving hormone therapy' )
コードの変更は [理論的には] ドメイン テーブルにいくつかの行を挿入することで構成されます。ユーザー インターフェイス コントロール、バリデータなどは、ドメイン テーブルからデータを入力しています (または入力する必要があります)。