- 更新日: 2017年02月27日
- 公開日: 2015年12月08日
ゼロから始めるPHP講座Vol25 PrimaryKeyとは
ゼロから始めるPHP講座PrimaryKeyとは
PRIMARYKEY
「重複した値がなく」かつ「必ずデータが入力されている」場合、そのカラムだけで「必ずレコードが特定」できるため、重複した値がないカラムを設定することは重要です。
重複がない状態を「ユニーク(unique)ユニーク(unique)一意一意
例えば社員情報を管理しているemp_tableでは、emp_idカラムはユニークである必要があります。
emp_table
emp_name、job、ageのカラムは、どれも値が重複する可能性がある情報のため、emp_idがユニークでないと、全てのカラムが同じデータのレコードが出来てしまう可能性があります。
emp_table1山田太郎manager505山田太郎manager50
もし上記のように、同姓同名で職種も年齢emp_id
このようにユニークなデータを作りたいときには「PRIMARYKEY
PRIMARYKEYには以下の特徴があります。
- 値の重複がない(ユニーク)- データは必ず入力しなければならない。(NULLにはならない)
PRIMARYKEYはカラムに対して設定を行います。
phpMyAdminで既に作成したテーブルには、PRIMARYKEYを設定してあるカラムがあります。
例えばgoods_tableの場合、goods_idに対して以下のような設定をしました。
PRIMARYKEYを設定してあるカラムに既に存在する値を追加しようとした場合、エラーが発生し、SQLが失敗します。
実際にgoods_tableに既に存在するgoods_idを追加してみましょう。
「#1062Duplicateentry‘1’forkey‘PRIMARY’」と、既に’1’というデータがあるのでPRIMARYに違反するという旨のエラーが表示されます。
補足:その他の制約
PRIMARYKEYというカラムに設定する制約を紹介しましたが、その他にも様々な制約があります。
データは必ず入力しなければならない。(NULLにはならない)NOT NULLUNIQUEFOREIGN KEY
NOTNULLはカラム内のデータに値なし(NULL)を不可とします。phpMyAdminでテーブル作成する場合、デフォルトではNOTNULLの制約がついています。
UNIQUEはカラム内のデータがユニークであることを保証しますが、PRIMARYKEYと異なり、値なし(NULL)を入力することは可能です。
FOREIGNKEYは、データの不整合を防ぐための制約で、詳細については別な章にて説明します。
正しい制約をつけることでトラブル発生を未然に防ぐことができ、リレーショナルデータベースを使うことによる利点の1つとなります。
テーブル作成の際には、適切な制約を設定するようにしましょう。
NEXTLESSONAutoIncrement(A_I)とはAutoIncrement(A_I)とは
PREVLESSONデータの変更・削除データの変更・削除
- この記事を書いた人
- CodeCampus編集部