部分関数従属性を指摘する場合の非キー属性に注意!
設問1(1)
主キーの識別、外部キーの指摘。
設問1(2)
第2正規形でない理由。発生時点の管理(非正規化の手法)。
非キー属性のうち、取引先コード・受注年月日は受注番号に関数従属することが
“受注”から明らかだが、発注年月日・納品年月日・請求年月日・入金年月日は、
具体的な説明がない。そのためこれら(発注年月日・納品年月日・請求年月日・入金年月日)
を回答に記述してしまうと思わぬ減点を食らうことになるので、「分からないことは書かない。」が鉄則である。
設問1(3)
第2正規形でなくても良い理由。
①性能向上(第3正規形にした場合に必要となる結合処理不要・結合演算不要)。
②時系列性の保持が行える。
③参照系であれば重複更新がない(一度設定されると変更されることはない)。
この場合は②である。
第2正規形でなくても良い理由を述べよ。と問われれば、
・商品名や単価が変わっても受注時点(発生時点)での商品名と単価で取引実績データを管理するためである。
・商品データに関する時系列性を保持するためである。
第3正規形にした場合の(構造上の)問題点を指摘せよ。と問われれば、
・商品名や単価が変わった場合、受注時点での商品名と単価が分からなくなる(参照できない)。
・商品名と単価が時系列管理されていない。
・最新の商品名や単価しか分からない(参照できない)。
設問2
1対多関係を見い出しテーブル構造を考える問題。
①既存のエンティティに属性追加
②独立のエンティティを追加
この問題は「テーブル追加」なので②。
多側のテーブルに1側の主キーを埋め込む。
設問3(1)
設問2で追加したテーブルを時系列管理したい場合に
追加すべき列名の指摘。設問3は、全て期間の管理に関する問題。
列名について特に条件がなければ、
発生時点の管理(年月日)でもいいが、「列名を2つ指摘せよ」とあるので、
期間の管理(開始年月日、終了年月日)を指摘する。
設問3(2)
設問3(1)で指摘した項目(開始年月日、終了年月日)についての
現時点を管理する場合の値の設定方法と期間(過去)を管理する場合の値の設定方法を指摘させる問題。現時点を管理する場合、終了年月日をナル値とすれば良いが、
ALL‘9’でも問題ないと思う。
設問3(3)
設問3(1)で列名を追加した場合の主キーの指摘。
設問3(2)で現時点を管理する場合、終了年月日をナル値とする考えた場合は、
主キーに開始年月日を追加するが、
終了年月日にALL‘9’を設定すると考えた場合は、主キーに開始年月日を追加してもよいし、終了年月日を追加しても良い。
設問1(1)
主キーの識別、外部キーの指摘。
設問1(2)
第2正規形でない理由。発生時点の管理(非正規化の手法)。
非キー属性のうち、取引先コード・受注年月日は受注番号に関数従属することが
“受注”から明らかだが、発注年月日・納品年月日・請求年月日・入金年月日は、
具体的な説明がない。そのためこれら(発注年月日・納品年月日・請求年月日・入金年月日)
を回答に記述してしまうと思わぬ減点を食らうことになるので、「分からないことは書かない。」が鉄則である。
設問1(3)
第2正規形でなくても良い理由。
①性能向上(第3正規形にした場合に必要となる結合処理不要・結合演算不要)。
②時系列性の保持が行える。
③参照系であれば重複更新がない(一度設定されると変更されることはない)。
この場合は②である。
第2正規形でなくても良い理由を述べよ。と問われれば、
・商品名や単価が変わっても受注時点(発生時点)での商品名と単価で取引実績データを管理するためである。
・商品データに関する時系列性を保持するためである。
第3正規形にした場合の(構造上の)問題点を指摘せよ。と問われれば、
・商品名や単価が変わった場合、受注時点での商品名と単価が分からなくなる(参照できない)。
・商品名と単価が時系列管理されていない。
・最新の商品名や単価しか分からない(参照できない)。
設問2
1対多関係を見い出しテーブル構造を考える問題。
①既存のエンティティに属性追加
②独立のエンティティを追加
この問題は「テーブル追加」なので②。
多側のテーブルに1側の主キーを埋め込む。
設問3(1)
設問2で追加したテーブルを時系列管理したい場合に
追加すべき列名の指摘。設問3は、全て期間の管理に関する問題。
列名について特に条件がなければ、
発生時点の管理(年月日)でもいいが、「列名を2つ指摘せよ」とあるので、
期間の管理(開始年月日、終了年月日)を指摘する。
設問3(2)
設問3(1)で指摘した項目(開始年月日、終了年月日)についての
現時点を管理する場合の値の設定方法と期間(過去)を管理する場合の値の設定方法を指摘させる問題。現時点を管理する場合、終了年月日をナル値とすれば良いが、
ALL‘9’でも問題ないと思う。
設問3(3)
設問3(1)で列名を追加した場合の主キーの指摘。
設問3(2)で現時点を管理する場合、終了年月日をナル値とする考えた場合は、
主キーに開始年月日を追加するが、
終了年月日にALL‘9’を設定すると考えた場合は、主キーに開始年月日を追加してもよいし、終了年月日を追加しても良い。