ユニーク索引と非ユニーク索引について

さん  
(No.1)
ユニーク索引と非ユニーク索引の決め方について、どなたかご教示お願いします。

例えば、平成30年午後2問1のp.13には、(i)「主キー以外で値が一意となる列または列の組み合わせには、必ずユニーク索引を作成する」、(ii)「それ以外の列または列の組み合わせが外部キーを構成する場合は、必ず非ユニーク索引を作成する」とあります。

設問1(2)では{支払予定日、支払い番号}がユニーク索引として連番を振るのが正解でしたが、これらの列の組み合わせは外部キーなので、(ii)の記述から非ユニーク索引とするのだと思いました。
解説では、明記されていたわけではありませんが、参照元(外部キーがある方のテーブル)と参照先(主キーがあるテーブル)の間の関係が1対1なのでユニーク索引であるというロジックでした。

外部キーであっても、外部キーが参照する先のテーブルとの関係が1対1であれば、ユニーク索引を優先して付与するということなのでしょうか?
2022.10.02 15:27
にゃんちゃんさん 
DB シルバーマイスター
(No.2)
問題文の条件を書き換えますと
①列値が重複しない列にはユニーク索引を張ろう
  ※ただし主キー列は主キーの索引があるので含めない
  ※複数列の組み合わせもOK
  ※NULLはあってもいい(NULL以外が重複しなければ)
②ユニーク索引が張れない場合、かつ外部キーになっているなら
  非ユニーク索引を張ろう

となります。
よって、まずはNULLを除いて一意になる列の組み合わせを探してユニーク索引を張る
ユニーク索引を張れなかった外部キーを探して、非ユニーク索引を張る
という優先順になります。
2022.10.02 15:49
まぽさん 
(No.3)
分かりやすい説明ありがとうございます!

今回の場合は、”一般経費申請”と”支払伝票”が1対1で、かつ{支払予定日、支払い番号}が”支払伝票”の主キーなので、ユニーク性をもつのでユニーク索引を作成するのですね。

類題も確認してしっかり理解したいと思います。
ありがとうございました!
2022.10.02 16:21

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop