H11午後I 問1(ITEC 2005予想問題集 午後I 問3-4)
設問2(3)
“試験成績”テーブルの構造を第2正規形にし,主キーとなる列に下線を引け。
※ここでは,表現の都合,テーブル構造ではなく,スキーマで表現する。
試験成績(校番号,児童番号,学力試験番号,教科,得点,校内順位,塾内順位,塾内平均点,塾内標準偏差,塾内偏差値)
を,第2正規形に分割
児童試験成績(児童番号,学力試験番号,教科,得点,校内順位,塾内順位,塾内偏差値)
塾試験統計(学力試験番号,教科,塾内平均点,塾内標準偏差)
ここで,
児童(校番号,児童番号)
を,あえて記載するかどうか悩ましい。児童テーブルは既に存在しているからだ。
ITEC,アイタック,どちらの解答例も,児童を記載している。
やはり,書くべきなのだろうか・・・
ちなみに,こいつの収め先を・・・
児童試験成績に校番号を含めると,
児童番号→校番号の関係があるので,部分関数従属性が存在することになり,設問の第2正規形の条件を満たさない。
塾試験統計に校番号を含めると,
候補キーは,{学力試験番号,教科,校番号}となるが,{学力試験番号,教科}→{塾内平均点,塾内標準偏差}であるため部分関数従属となり,第2正規形の条件を満たさない。
{校番号,児童番号,学力試験番号,教科}→{得点,校内順位,塾内順位,塾内偏差値}
という見解もある。(この場合は校番号は非キー属性ではなく,候補キーの一部である)
設問は「第2正規形の条件を満たせ」ということなんで,第2正規形の条件を満たす第3でもボイスコッドでも第4でも第5でも良い。つまりは,解答例はひとつではないということなのかな?
同意見の方は多いと思いますが、
この問題はかなり悪問と思います。
[悪問と思った点]
1.試験成績詳細テーブルの「教科」と試験配点テーブルの「教科」について
前者は「2教科」「4教科」という値をとり、後者は「国語」「算数」「理科」「社会」という値をとる列なのでしょう。設問3(2)で困ります。
2.「学力試験には、学年、年度、月、週で一意な番号が付与される」という記述からは、学力試験テーブルの主キーが{学力試験番号、学年、年度、月、週}のように解釈されてしまう。
[ほおっと思った点]
iTacの設問2(2)の解答
「児童が転校しても受験した校の記録を正しく反映させるため。」
とありました。
塾内平均点や塾内標準偏差は点数を修正したら変わります。
これってよくあることですよね?
設問1で追加する座席に関するテーブルと学力試験テーブルあたりを参照すれば校番号と児童の関係は時系列で分かりますが
処理が複雑なため試験成績テーブルに保持するという方が解答としていいのではないでしょうか?でもそうすると塾内平均点や塾内標準偏差を保持するのは問題があるのでやっぱり変かも。
乱文ですみません。
>>2 :おみおみ さん
>1.試験成績詳細テーブルの「教科」と試験配点テーブルの「教科」について
私は文面から以下のように受け取りました。
試験成績詳細テーブルの「教科」
「国語」「算数」「理科」「社会」
試験配点テーブルの「教科」
「国語」「算数」「理科」「社会」
教師テーブルの「教科」
「国語」「算数」「理科」「社会」
試験成績テーブルの「教科」
「国語」「算数」「理科」「社会」「2計」「4計」
>2.「学力試験には、学年、年度、月、週で一意な番号が付与される」という記述からは、学力試験テーブルの主キーが{学力試験番号、学年、年度、月、週}のように解釈されてしまう。
学力試験は,正規化理論上では{学年,年度,月,週}が候補キーで「あまりに多くの要素からなるキーは扱いにくい」ので,新たに「学力試験番号」を採番し主キーとしたと思われます。
H16 午前 問27参照
⇒ http://backno.mag2.com/reader/BackBody?id=200412290200000000126616000
主キーの捉え方は,正規化理論と見方(候補キー)とは若干違うように思えます。
>「児童が転校しても受験した校の記録を正しく反映させるため。」
ほぉ~っ。実績値として校番号を持つ(時系列性の保持)ということですな。確かに。
転校について問題文が全く触れていないのに,目の付け所が違いますね。
正規化理論で行くと「校番号」は邪魔モノなワケですが,分析・設計の目で見ると違うということかな。。。
⇒時系列性の保持:新版 データベース技術 P281
>塾内平均点や塾内標準偏差は点数を修正したら変わります。
>これってよくあることですよね?
一人の児童の点数を修正したら,学力試験番号が同じレコードの塾内○○をすべてと,同一校番号を持つ校内順位を更新しなければならないですね。
修正の手順としては,
ファクトテーブルは更新
・試験成績詳細テーブルの更新(修正)
・試験配点テーブルの全校正解率の更新
サマリテーブルは再作成でも良いかもしれません。
・試験成績テーブルの学力試験番号が一致するレコードを一括削除
・試験成績詳細テーブルを元に試験成績テーブルのレコードを再作成
ん?今気付きましたが。。。
設問2(2)の解答はサマリテーブルだから。って解答もアリな気がしますね。
コメントのレスになっているかな?なってなかったらゴメンなさい。
レスありがとうございます。
>試験成績テーブルの「教科」
「国語」「算数」「理科」「社会」「2計」「4計」
なるほど。データとしては各教科の成績を持っている可能性もありますね。というか現実ではそうするでしょうね。
>学力試験は,正規化理論上では{学年,年度,月,週}が候補キーで「あまりに多くの要素からなるキーは扱いにくい」ので,新たに「学力試験番号」を採番し主キーとしたと思われます。
その通りで、私が勘違いしました。
>{校番号,児童番号,学力試験番号,教科}→{得点,校内順位,塾内順位,塾内偏差値}
という見解もある。(この場合は校番号は非キー属性ではなく,候補キーの一部である)
これですが、{児童番号,学力試験番号,教科}だけからでも校内順位は一意に決まると思うので、やはり校番号は非キーではないかと思います。