なりそこないの綴り

エンジニア(予定)まであと半年の学生です。

主キーの必要性

学校の課題のシステム開発で使いそうなのでメモ程度に。

 

主キーの主な役割は「不変性」と「一意性」です。

 

不変性

不変性を持つことで整合性を取りやすくします。

 

一意性

一意性を持つことで重複レコードを許さず、テーブルから特定のレコードの検索を容易にできます。

 

   主キーのないテーブルでは重複レコードの存在を許してしまいます。重複レコードが存在する場合でもDISTINCT句等を指定して重複を排除すれば大丈夫ですが、そのような手段をとるとパフォーマンスの問題が出てしまいます。重複レコードが存在する場合では、検索はもちろん、処理の重いテーブルの結合の際にも結合レコードが増え処理が遅くなります。

 

そのためにも仮に主キーのいらないテーブル(スコアブック、中間テスト等)の場合でもつけたほうがいいでしょう。

f:id:mori_morio:20171021232951p:plain

といったテーブルにつける場合

f:id:mori_morio:20171021233014p:plain

このように主キーを追加した方が、パフォーマンスがあがるでしょう。

 

 実際のところ受験ID列は↑のテーブルにはなんら関係のない値で設計者が勝手につけたキーです。それを人工キーと言います。このやり方は推奨されていないらしく、原則に基づいて主キーには自然キーを用いた方がいいと言われていますが、私は人口キーの方が楽だしパフォーマンスもいいので人口キーを使っています。

 

早く実際の業務がしたいです。