<< April 2018 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >>
<< セキュア・プログラミング講座/セキュア Unix/Linux プログラミング | main | IPAからの発表 >>

部分関数従属と正規形

某巨大掲示板の書き込みから
=======================================================
914 Name: 名無し検定1級さん [] Date: 2007/03/13(火) 23:49:21 ID: Be:
質問です。
アイテック模試 問1 設問1(3)のセット料理の部分関数従属の例を挙げる問題ですが。

解答は、「なし」となっています。
しかし、

{料理番号、構成料理番号}は候補キーで、
{構成料理名、構成料理単価}は、{料理番号、構成料理番号}の一部である構成料理番号に
関数従属するので、部分関数従属が存在することになると思うのですが。

勘違いでしたらごめんなさい。

916 Name: 914 [] Date: 2007/03/14(水) 00:18:59 ID: Be:
>>915
やっぱりおかしいよね。上と重複しますがもう少し詳しく、
関係スキーマと関数従属関係だけを示すと、

セット料理(セット料理番号、通番、構成料理番号、構成料理名、構成料理単価)

{セット料理番号、通番}→構成料理番号→{構成料理名、構成料理単価}という関数従属図があり
また、問題文から、{セット料理番号、構成料理番号}も候補キーであることが分かる。

です。何故だろう???
=======================================================
問題文を見ていないの何とも言えないが、914氏の書き込みが正しいとすると、
構成料理番号→{構成料理名, 構成料理単価}
という部分関数従属が存在する。

ちなみに、そもそも、部分関数従属の定義には候補キーは関係ないので、問題文中に「候補キーからの部分関数従属」という限定がなければ候補キーが関連しない部分関数従属を答えても良いはずであるが、それだとほとんど意味がない。(たとえば、上の例で言えば、{セット料理番号, 通番}→構成料理番号も部分関数従属である。)
したがって、試験では、候補キーからの部分関数従属を答えるべきである。
JITECの試験では、その辺も考えたようで、H18の午後1問1では、「候補キーからの部分関数従属」と記述している。
ss2004 * テクニカルエンジニア(データベース) * 21:39 * comments(10) * trackbacks(0)

コメント

解説をして頂きありがとうございます。大変恐縮です。

試験問題で「部分関数従属の例を挙げる」とは、
「候補キーからの部分関数従属の例を挙げること」であり、言い換えれば、
「非キー属性が候補キーの真部分集合に関数従属する例をあげる」ことだと思います。

折角なので正確な情報を伝えるべく“セット料理”に関する説明、問題文、アイテック解答をコピペします。
問題提起した設問は、(3)及び(4)でした。

-----
図1 注文管理システムの関係スキーマ
セット料理(セット料理番号、通番、構成料理番号、構成料理名、構成料理単価)
-----
表1 関係の意味及び制約
関係“セット料理”は、セット料理を構成する料理を管理する。例えば、セット料理の“サラダスープセット”では、構成料理としてサラダとスープとライスの料理番号が管理される。
-----
表2 主要な属性の意味および制約
・料理番号:全店舗で共通な一意な料理番号。
・通番:セット料理の料理ごとの通番。
・構成料理番号:セット料理を構成する料理の料理番号。
 同じセット料理のなかに同じ構成料理番号が複数
 含まれることはない。
-----
図2 属性間の主な関数従属性
{セット料理番号、通番}→構成料理番号→{構成料理名、構成料理単価}
-----
設問1 図1の関係スキーマについて、(1)〜(4)に答えよ。
(1)関係“セット料理”について、候補キーをすべて列挙せよ。

アイテック解答では、
{料理番号、通番}、{料理番号、構成料理番号}

(2)関係“セット料理”について、推移的関数従属があれば、その例を一つ挙げよ。なければ、“なし”と記述せよ。

アイテック解答では、
{料理番号、通番}→構成料理番号→{構成料理名、構成料理単価}

(3)関係“セット料理”について、候補キーに部分関数従属するものがあれば、その例を一つ挙げよ。なければ、“なし”と記述せよ。

アイテック解答では、
「なし」

(4)関係“セット料理”は第何正規形か、最も適切な正規形名を答えよ。(BCNF、第4正規形、第5正規形は除く)。また、
“セット料理”については、その正規形と判定した根拠を、80字以内で述べよ。

アイテック解答では、
第2正規形(根拠は、省略します)

Comment by Miny @ 2007/03/15 11:48 PM
上で記載した問題文の「セット料理番号」は、
「料理番号」を意味の分かる名称に個人的に置き換えたものですが、そのままだと設問、アイテック解答内容と整合性がとれないので、「料理番号」に訂正致します。済みません。
Comment by Miny @ 2007/03/16 12:05 AM
関係「セット料理」の、
1 候補キーは、
 {料理番号, 通番}, {料理番号, 構成料理番号}
2 非キー属性は、
 {構成料理名, 構成料理単価}
3 候補キーからの推移的関数従属は、
 {料理番号, 通番} → 構成料理番号 → {構成料理名, 構成料理単価}
4 候補キーからの部分関数従属は、
 構成料理番号 → {構成料理名, 構成料理単価}
5 正規形は、
 第1正規形
6 その根拠は、
 繰り返し属性がなく、候補キー{料理番号, 構成料理番号}の一部「構成料理番号」に{構成料理名, 構成料理単価}が従属するという部分関数従属性があるから。
7 更新異常の例をあげよ
(事前)主キーの非ナル制約により、料理番号が決まらないと、構成料理名と構成料理単価が登録できない。
(重複1)構成料理名、構成料理単価を重複して登録しなければならず、冗長である。
(重複2)構成料理名、構成料理単価に変更があった場合、複数行を変更しなければならず、変更漏れが生じる場合がある。
(削除)レコードを削除する際に、構成料理番号→{構成料理名,構成料理単価}という関数従属が失われる場合がある。
8 第3正規形に分割せよ
 セット料理{料理番号, 通番, 構成料理番号}
 構成料理{構成料理番号, 構成料理名, 構成料理単価}

と言った感じでしょうか。

アイテックの解答は明らかに間違いですね。

見た感じ、設問のパターンは、平成18年の午後1問1のパターンなので、ほかの関係についても同様に問われているのでしょうか?
Comment by ss2004 @ 2007/03/16 8:11 PM
>>ss2004さん
こんばんは。

>ほかの関係についても同様に問われているのでしょうか?

同様に“注文”、“セットメニュー”について問われてましたが、初歩的な問題でした。
と言うより今回の部分関数従属性の話も初歩的な問題ですよね。アイテックの解答解説に誤りさえなければ“さらっと”終わっていたはずなのに、まさか自社で作問した解答解説に誤りがあるとは想定してませんでした。

他の設問では、平成15年-午後-問1-設問3(メタデータ)をまねて出題してました。

当問題のテーマは(分かってらっしゃるとは思いますが)、平成15年-午後-問3データベース設計を流用されてました。
Comment by Miny @ 2007/03/17 12:36 AM
一昨日アイテックにメールで問い合わせをしてた回答が来ました。

---ここから-----------------------------------
この度はご連絡ありがとうございました。
ご質問いただいている二つともご指摘のとおりでございます。

<質問1>
午後1の問題 問1 設問1(3)
“セット料理”の部分関数従属の例を挙げる問題ですが、解答は「なし」となっています。
しかし、{料理番号、構成料理番号}は候補キーで、
{構成料理名、構成料理単価}は、{料理番号、構成料理番号}の一部である構成料理番号に 関数従属するので、部分関数従属が存在することになると思います。

《回答1》
ご指摘のとおりです。図2だけ見て,誤って判断しています。部分関数従属性になります。

<質問2>
午後1の問題 問1 設問1(4)
同じく“セット料理”には部分関数従属性が存在するため、第1正規形であると考えます。

《回答2》

第1正規形が正解です。現在採点中で,影響範囲を考慮して,第2正規形も一応正解として採点する予定です。ご指摘ありがとうございました。今後,同様の
誤りがないように十分注意いたす所存です。

---ここまで-----------------------------------

>影響範囲を考慮して,第2正規形も一応正解として採点する予定です。

・・・。意味が分かりませんが、とりあえず解決しました。
お騒がせしました。
Comment by Miny @ 2007/03/17 12:48 AM
>>影響範囲を考慮して,第2正規形も一応正解として採点する予定です。
>・・・。意味が分かりませんが、とりあえず解決しました。

ぶはははは(笑)
本当に意味が分かりませんね。
どうしたんだ、アイテック。
Comment by ss2004 @ 2007/03/17 2:24 AM
>>ss2004さん
>どうしたんだ、アイテック。
多分、作問者自身(西川氏以外?)の問題でしょうね。
セット料理の非キー属性(構成料理名、構成料理単価)が
取って付けたようでセンスがないと言うか不自然過ぎます。
Comment by Miny @ 2007/03/17 3:10 AM
「構成料理の単価が構成料理ごとに決まっている」というビジネスルールも疑問ですね。
試験問題だから、別に不自然でも良いのかもしれないけど。
Comment by ss2004 @ 2007/03/17 7:55 AM
読んでとてもいい復習になりました。
いつもITECの模試はイマイチですが、
本試験はかなりの手間かけて作ってるんでしょうね。
それか単純に作成者のレベルが違うのでしょうか。
Comment by お悔やみ @ 2007/03/17 10:02 AM
>本試験はかなりの手間かけて作ってるんでしょうね。
>それか単純に作成者のレベルが違うのでしょうか。
両方ともあると思います。
作成委員もそれなりの人でしょうし、チェック体制も模試とは比較にならないでしょうね。
それにしてもアイテックは今回特にお粗末だったと思います。
Comment by ss2004 @ 2007/03/17 12:34 PM
コメントする









トラックバック

このページの先頭へ