応用情報22年秋 午前 問29
【中分類】
データベース−2. データベース設計−(2)データベースの設計
【問題を解く前に】
候補キーというのは、レコードがあったとき、ある項目(列)ないしは、項目を2個、3個と複数集めたもの(列の組)の値を1つ取り出すと、それは「どのレコード」と特定できてしまう項目ないしは、項目のあつまり。
-
- -
具体的にいうと、以下の商品レコードがあったとする。
商品番号 商品名 価格(円)
1 りんご 50
2 みかん 30
3 かき 50
4 バナナ 30
このとき、価格をとってきても、 価格=50円というのは、
りんごと、かき2つあるので、決まらない。
よって、候補キーではない。
-
-
- -
-
商品名は、りんごといったら、
1 りんご 50
で1つの行にきまる。たぶん、だぶらない。もし、たぶったら、
たとえば、
5 りんご 100
とあって、お店で、「りんごくださーい!」って言ったら、
50円とられるか、100円とられるか、わからない(>_<!)
こりゃ困る。
なので、たぶん、だぶらない。
1レコードに商品名は値1個。
よって、候補キー
-
- -
でも、さっきの話。
5 りんご 100
とあって、お店で、「りんごくださーい!」って言ったら、
50円とられるか、100円とられるか、わからないから困ると書きました。
じつは、こまらない。「50円のりんごくださーい」って
言えばいい。このとき、(商品名、価格)の組で言っている
ことになる。
つまり、(商品名、価格)の組も候補キー
-
-
-
- -
-
-
つぎに、商品番号。
これは、商品番号がきまったら、必ず商品が決まる・・・ように作っている。
じゃなきゃ、番号振る意味がない。
だから、1レコードに商品番号は値1個。
よって、候補キー
-
-
-
- -
-
-
今見てきたように、商品番号、商品名、(商品名、価格)などが、候補キーとなる。この中から、主キーを決める。
一般にこのときには、商品番号だけど、商品名の可能性もある。
システム上、商品名を直接入力することがあまりにも多い場合、
もし、商品番号を主キーとして、他データベースと結合するときのキー
(=外部キー、参照キー)にしていると、
JOINするときは、かならず、商品名から商品番号を求めるために、
商品テーブルをJOINしないといけなくなる。このJOINを減らすために、
商品名をあえてキーにすることもある(他の理由もあるけど、それを聞いている
設問でないので省略)
【解き方】
で、それはいいんです。問題は、この設問、答えが2つあるように、読める人、いませんか?
まず、(エ)は、だれも疑いません。定義ですから・・・
問題は、(ア)。もし、候補キーの中から主キーを選ぶんなら、主キーはnullにできないから(ア)も正しいということになってしまいます。
実は、Wikipediaで候補キーを見てもらうと判るけど、候補キーにNULLを認めるか、認めないかは両方の立場があります。
試験出題者の主張は、NULLを認める立場なのでしょう(じゃないと、正解が2つになり、問題が成立しない)。このような、立場によって、正解が2つになるような問題の場合、たいてい、あいまいさを防ぐために、だれしも認めるような項目が正解(今回はエ)として入っています。
その正解を選びましょう。
【答え】
(エ)
【解き終わって】
データベース関係には、正規化の手法でも、まったく違う2つの方法があって、(じつはどちらでもよい=手法は定義されていない)のですが、どちらも「私が正解!」ということがあります。
試験的には、正解が2つになるような問題の場合、たいてい、あいまいさを防ぐために、だれしも認めるような項目が正解として入っていますので、そちらを選びます。
現場的には、上司ないしは、お客さんのいうほうに合わせてください。
したがって、同じ会社で、同じ時期に、同じ用語を、(上司や顧客が無知なために)まったく違うもや、違う手法を指して言うことがあります。それは、あわせたほうが、身のためです。宗教論争ですから・・・新興宗教の信者に、「あなたの宗教は間違っている」というのと同じで、めちゃくちゃ大変です。
特に、(第一正規形の手法など)複数の方法があるのに、知らない人は、「知らないの、バカじゃない?」と罵倒すると思うので、「はーい!教えてくれてありがとう」みたいな形で、バカにされてください。それも、お仕事です。バカにされてなんぼの世界かもしれません。SEの仕事なんて・・・
でも、それを見ている後輩などは、混乱しますので、その辺の悲哀を説明してあげてください。
(ただし、間違った手法で、炎上する場合があります。そういうときは、「さらっ」と自分の手法でこっそりやってしまいますけどね!正規化手法、2つあるうち、一方のほうをやると、確実に炎上します)
【受験テクニック】
試験的には、正解が2つになるような問題の場合、たいてい、あいまいさを防ぐために、だれしも認めるような項目が正解として入っている・・・と思います。そちらを選んでください。