リレーショナルデータベースの設計において、「主キー」の考え方を理解することは必要不可欠です。そこで、今回は「主キー」とはどのようなものなのか、また、Accessでの設定方法や正しい主キーの選定方法を交えて紹介をします。
主キーとは
「主キー」は、「プライマリーキー」とも呼ばれることがありますが、テーブル全体で一意の値を持つ1つのフィールド又は複数のフィールドからなります。各レコードは、主キーとなるフィールドの値が他のレコードの持つ値と必ず異なるため、この値を使用してレコード全体を参照するインデックスに用いることができます。
各テーブルの主キーは1つのみ設定をすることができ、Accessでテーブルの作成時に自動的に主キーフィールドを作成するか、主キーとして使用するフィールドを手動で指定することができます。なお、主キーを設定しなくても問題はありませんが、主キーがないとレコードを参照したり、抽出したりするときに不便になります。
Accessで主キーを設定する方法
Accessでテーブルの主キーを設定するには、図1に示すように、デザインビューでテーブルを開き、使用するフィールド(複数のフィールド)を選択して、リボンの「主キー」アイコンをクリックします。主キーが設定されたレコードの左側には鍵マークがつきます。
正しい主キーの選定方法
ここで、主キーに適した特性を考えていきましょう。主キーに適したフィールドには、いくつかの特性があります。以下にその特性を示します。
① 各行を一意に識別する
② 必ず値を持ち、空または Null でない
③ 保存する値がめったに (理想的にはまったく) 変更されない
上記の条件に合致するフィールドが存在しない場合は、オートナンバー型のフィールドを作成して、主キーとして使用します。 オートナンバー型のフィールドでは、各レコードが初めて保存されたときに値が自動的に生成されます。 このため、オートナンバー型フィールドは、適切な主キーの3つの特性を全て有しています。
次に、主キーに設定するには不適切な特性も考えてみましょう。主キーに適した特性の1つ以上に該当しないフィールドは、主キーとして使用するのに適していません。
例えば、表1に示すようなテーブルがあったとします。このとき、各フィールドで主キーに適さないフィールドを表2に示します。
表1 サンプルテーブル: フィールド項目とデータ型の設定例
フィールド | データ型 | 説明 |
ID | オートナンバー型 | 後ほど紹介する主キーを設定する上で作成するフィールド。インデックスとして、レコードを一意に識別するために用いる。 (オートナンバーは自動で番号が付与される。) |
姓 | 短いテキスト | 氏名は、姓と名を分ける方が管理上、便利になることが多い。 |
名 | 短いテキスト | 同上 |
生年月日 | 日付/時刻型 | 日時情報は、日付/時刻型で保存することで、Accessの様々な機能を活用することができる。 |
電話番号 | 短いテキスト | 電話番号は、「0」から始まるためゼロ落ちを防ぐ目的で数値型に設定するよりも文字列情報として保存することを推奨する。 |
住所 | 長いテキスト | 住所は、長くなる場合があることから、領域を確保するために長いテキストを設定する。なお、「都道府県」、「市区町村」といった分け方でフィールド(短いテキスト)を設定すると、データ整理の際に便利になることが多い。 |
表2 表1で示した各フィールドの内主キーに適さないフィールド
フィールド | 主キーに適さない理由 |
姓 | 同姓がおり一意でない可能性があり、変更されることもあります。 |
名 | 同名がおり一意でない可能性があり、変更されることもあります。 |
生年月日 | 同じ生年月日の人がおり、一意でない可能性があります。 |
電話番号 | 電話番号が変わる可能性があり、複数持つ場合もあります。 |
住所 | 同居人の場合、住所が同じとなり一意でない可能性があり、また長いテキスト型の場合は一字一句を合致させることが困難であることから主キーに設定することはしません。 |
このように、先に示した主キーとできる条件を考慮しながら設定をするようにし、該当するフィールドがない場合は、オートナンバー型のフィールドを新たに作成し、主キーとすることが望ましい方策です。
まとめ
今回はリレーショナルデータベースの設計で必要不可欠な考え方である「主キー」について紹介しました。
主キーを設定してデータベースを構築していくことで、適切かつ迅速なデータ管理、処理ができるようになりますので、是非本記事を参考に主キーの設定をしてみてください。
スポンサーリンク
コメント