主キーの必要性
学校の課題のシステム開発で使いそうなのでメモ程度に。
主キーの主な役割は「不変性」と「一意性」です。
不変性
不変性を持つことで整合性を取りやすくします。
一意性
一意性を持つことで重複レコードを許さず、テーブルから特定のレコードの検索を容易にできます。
主キーのないテーブルでは重複レコードの存在を許してしまいます。重複レコードが存在する場合でもDISTINCT句等を指定して重複を排除すれば大丈夫ですが、そのような手段をとるとパフォーマンスの問題が出てしまいます。重複レコードが存在する場合では、検索はもちろん、処理の重いテーブルの結合の際にも結合レコードが増え処理が遅くなります。
そのためにも仮に主キーのいらないテーブル(スコアブック、中間テスト等)の場合でもつけたほうがいいでしょう。
といったテーブルにつける場合
このように主キーを追加した方が、パフォーマンスがあがるでしょう。
実際のところ受験ID列は↑のテーブルにはなんら関係のない値で設計者が勝手につけたキーです。それを人工キーと言います。このやり方は推奨されていないらしく、原則に基づいて主キーには自然キーを用いた方がいいと言われていますが、私は人口キーの方が楽だしパフォーマンスもいいので人口キーを使っています。
早く実際の業務がしたいです。