今回は、データベースのテーブルに主キー(プライマリーキー)を設定して利用する方法を紹介します。
目次
主キー(プライマリーキー)とは
主キー(プライマリーキー)とは、テーブルの行(レコード)を一意(重複しないで区別)するために設けるキーの制約になります。
主キーはテーブル内の1つのデータ(行)が特定されることをデータベースが保証するための列になります。
主キーはテーブルの1つ以上(1つまたは複数)の列(カラム)に対して設定されます。
主キー列が複数ある場合は、複数の列の値を組み合わせたものが主キーになります。
テーブルに格納されているデータのそれぞれの行を識別する目的で設定されます。
テーブルの主キー(プライマリーキー)の例
例えば、従業員のデータを管理するテーブルがあるとします。
従業員テーブルには、従業員のID、氏名、性別、部署があり、以下のデータが登録されているとします。
従業員は通常、氏名で特定できる場合がほとんどですが、同姓同名の方が同じ企業に勤めていることもあります。
上記の従業員テーブルでは、近藤 一郎さんが2人いますので、氏名でテーブルの1行を特定することができません。
氏名は同じデータが入る可能性があるので、行を特定することができませんが、従業員IDには同じ名前の2人の近藤さんに別々のデータが割り当てられています。
従業員IDであれば、すべての従業員に対して違う値を持っていますので、主キーに指定することができます。
主キー(プライマリーキー)の役割
テーブルの主キーの役割には、大きく以下の2つがあります。
- データの整合性を保証する
- データの検索スピードを早くする
主キーを作成すると、主キーが設定された列にインデックスと呼ばれるオブジェクトが作成されます。
インデックスとは、インデックスが指定された列の情報を取り出し、検索用にとりまとめたものです。
インデックスを作成しておくことで、データを高速に探すことができるようになります。
主キーに設定した列は、同じ値を格納することができなくなります。
テーブルを編集して同じ値を登録しようとしても、データベースが不正を検知してエラーを出力します。
また、主キーを設定した列にはNULL値を登録することもできなくなります。
SQL Server Management Studio(SSMS)で主キー(プライマリーキー)を設定する
SQL Server Management Studioで主キーを設定する方法を非常に簡単です。
まず、「オブジェクト エクスプローラー」でテーブルエディターで開きます。
既に作成しているテーブルを編集する場合は、編集するテーブルを右クリックして表示されるコンテキストメニューにある「上位 n 行の編集」(すべての行を編集できるようにしている場合は「すべての行の編集」)をクリックします。
テーブルエディターを開いたら主キーを設定する列を右クリックしてコンテキストメニューを表示します。
コンテキストメニューにある「主キーの設定」をクリックします。
列に主キーを設定すると、設定した列に鍵のマーク(アイコン)が表示され、「NULL を許容」のチェックがOFFになります。
テーブルを保存して「オブジェクト エクスプローラー」を見ると以下のように主キー(PK)が作成され、インデックスも設定されていることが確認できます。
上記の例で使用した「従業員」テーブルの列定義は以下のようになります。
列名 | データ型 | NULL 許容 | PK |
---|---|---|---|
従業員ID | int | NO | 1 |
氏名 | nvarchar(50) | YES | |
性別 | nvarchar(10) | YES | |
部署 | nvarchar(20) | YES |
テーブルを作成するSQL(CREATE文)も合わせて掲載しておきます。
1 2 3 4 5 6 |
CREATE TABLE [従業員]( [従業員ID] [int] NULL, [氏名] [nvarchar](50) NULL, [性別] [nvarchar](10) NULL, [部署] [nvarchar](20) NULL ); |
上記のSQLを実行して作成されるテーブルでは、主キーが設定されていませんので、主キーを設定するためのテーブルとして利用してください。