HOME»データベーススペシャリスト掲示板»ユニーク索引と非ユニーク索引について
投稿する
»[0426] 平成30年 午後1 問2 設問2(2) 投稿数:11
»[0425] 令和3年午後2問2 設問2 について 投稿数:6
ユニーク索引と非ユニーク索引について [0428]
ほさん(No.1)
ユニーク索引と非ユニーク索引の決め方について、どなたかご教示お願いします。
例えば、平成30年午後2問1のp.13には、(i)「主キー以外で値が一意となる列または列の組み合わせには、必ずユニーク索引を作成する」、(ii)「それ以外の列または列の組み合わせが外部キーを構成する場合は、必ず非ユニーク索引を作成する」とあります。
設問1(2)では{支払予定日、支払い番号}がユニーク索引として連番を振るのが正解でしたが、これらの列の組み合わせは外部キーなので、(ii)の記述から非ユニーク索引とするのだと思いました。
解説では、明記されていたわけではありませんが、参照元(外部キーがある方のテーブル)と参照先(主キーがあるテーブル)の間の関係が1対1なのでユニーク索引であるというロジックでした。
外部キーであっても、外部キーが参照する先のテーブルとの関係が1対1であれば、ユニーク索引を優先して付与するということなのでしょうか?
例えば、平成30年午後2問1のp.13には、(i)「主キー以外で値が一意となる列または列の組み合わせには、必ずユニーク索引を作成する」、(ii)「それ以外の列または列の組み合わせが外部キーを構成する場合は、必ず非ユニーク索引を作成する」とあります。
設問1(2)では{支払予定日、支払い番号}がユニーク索引として連番を振るのが正解でしたが、これらの列の組み合わせは外部キーなので、(ii)の記述から非ユニーク索引とするのだと思いました。
解説では、明記されていたわけではありませんが、参照元(外部キーがある方のテーブル)と参照先(主キーがあるテーブル)の間の関係が1対1なのでユニーク索引であるというロジックでした。
外部キーであっても、外部キーが参照する先のテーブルとの関係が1対1であれば、ユニーク索引を優先して付与するということなのでしょうか?
2022.10.02 15:27
にゃんちゃんさん(No.2)
★DB シルバーマイスター
問題文の条件を書き換えますと
①列値が重複しない列にはユニーク索引を張ろう
※ただし主キー列は主キーの索引があるので含めない
※複数列の組み合わせもOK
※NULLはあってもいい(NULL以外が重複しなければ)
②ユニーク索引が張れない場合、かつ外部キーになっているなら
非ユニーク索引を張ろう
となります。
よって、まずはNULLを除いて一意になる列の組み合わせを探してユニーク索引を張る
ユニーク索引を張れなかった外部キーを探して、非ユニーク索引を張る
という優先順になります。
①列値が重複しない列にはユニーク索引を張ろう
※ただし主キー列は主キーの索引があるので含めない
※複数列の組み合わせもOK
※NULLはあってもいい(NULL以外が重複しなければ)
②ユニーク索引が張れない場合、かつ外部キーになっているなら
非ユニーク索引を張ろう
となります。
よって、まずはNULLを除いて一意になる列の組み合わせを探してユニーク索引を張る
ユニーク索引を張れなかった外部キーを探して、非ユニーク索引を張る
という優先順になります。
2022.10.02 15:49
まぽさん(No.3)
分かりやすい説明ありがとうございます!
今回の場合は、”一般経費申請”と”支払伝票”が1対1で、かつ{支払予定日、支払い番号}が”支払伝票”の主キーなので、ユニーク性をもつのでユニーク索引を作成するのですね。
類題も確認してしっかり理解したいと思います。
ありがとうございました!
今回の場合は、”一般経費申請”と”支払伝票”が1対1で、かつ{支払予定日、支払い番号}が”支払伝票”の主キーなので、ユニーク性をもつのでユニーク索引を作成するのですね。
類題も確認してしっかり理解したいと思います。
ありがとうございました!
2022.10.02 16:21
その他のスレッド
»[0427] R3pm1問3 設問2の? oに入れる字句 投稿数:3»[0426] 平成30年 午後1 問2 設問2(2) 投稿数:11
»[0425] 令和3年午後2問2 設問2 について 投稿数:6