令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ試験 問7を解いてみましょう。
テクノロジ系 >> データベース >> データベース設計
問題
便名に対して、客室乗務員名の集合及び搭乗者名の集合が決まる関係”フライト”がある。関係”フライト”に関する説明のうち、適切なものはどれか。ここで、便名、客室乗務員名、搭乗者名の組が主キーになっているものとする。
フライト
便名 | 客室乗務員名 | 搭乗者名 |
---|---|---|
BD501 | 東京建一 | 大阪一郎 |
BD501 | 東京建一 | 京都花子 |
BD501 | 横浜涼子 | 大阪一郎 |
BD501 | 横浜涼子 | 京都花子 |
BD702 | 東京建一 | 大阪一郎 |
BD702 | 東京建一 | 神戸順子 |
BD702 | 千葉建二 | 大阪一郎 |
BD702 | 千葉建二 | 神戸順子 |
ア 関係”フライト”は、更新時異常が発生することはない。
イ 関係”フライト”は、自明でない関数従属が存在する。
ウ 関係”フライト”は、情報無損失分解が可能である。
エ 関係”フライト”は、ボイス・コッド正規形の条件は満たしていない。
解説
正解は「ウ」です。
アは、更新時異常が発生する可能性があるため、誤りです。
更新時異常とは、ある属性の値を更新する際に、他の属性の値を意図せず変更してしまうことです。
関係”フライト”の表から明らかな事実として、客室乗務員名と搭乗者名の組は、便名によって完全に決定されます。そのため、客室乗務員名と搭乗者名の組を変更する際に、便名も変更する必要があります。
しかし、便名を変更する際に、客室乗務員名と搭乗者名の組を変更する必要はありません。
例えば、BD501便の客室乗務員名を東京建一から横浜涼子に変更する場合、BD501便の搭乗者名をすべて変更する必要はありません。
そのため、客室乗務員名と搭乗者名の組を変更する際に、便名も変更する必要がある場合があり、更新時異常が発生する可能性があります。
イは、自明でない関数従属が存在するため、誤りです。
関数従属とは、ある属性の値が、他の属性の値によって完全に決定される関係です。自明でない関数従属とは、主キー以外の属性が、他の属性によって完全に決定される関係です。
関係”フライト”において、客室乗務員名は、便名と搭乗者名によって完全に決定されます。そのため、客室乗務員名は、自明でない関数従属を持つことになります。
エは、ボイス・コッド正規形の条件を満たしているため、誤りです。
便名、客室乗務員名、搭乗者名の組が主キーとなっているため、ボイス・コッド正規形の条件を満たしています。ボイス・コッド正規形は、すべての非自明な関数従属が候補キーからのものであることを要求しますが、この関係ではその条件を満たしています。
ウは、便名、客室乗務員名、搭乗者名の組が主キーとなっているため、これらの属性を分解しても元の情報を再構成することが可能です。