/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

2023/10/18 令和5年 データベーススペシャリスト受験 振り返り

10月頭に IPA のデータベーススペシャリストの試験を受けました。午後2で大きくつまづいたので振り返りをします。

午前2, 午後1は多分大丈夫

午前1は免除、午前2はマークシートですが23/25点でした。合格点は15/25点なので無事通過しているはずです。

午後1は大問3つから2つ選択で、予行練習では大問1と2を選ぶ予定でした。ただ解答欄を見ると大問1だけ問題数が多く、問題文も多かったことから、急遽大問2と3へ変更。午後1は午後2以上に時間との勝負だったので、良い判断だったと思います。自己採点では7割を超えているので恐らく通過しているはずです。

午後2で問題文を読み違える

午後2は大問2つから1つ選択で、予行練習通り大問2の概念データモデルの問題を選びました。

この大問2が思ったように点数が取れず、合格水準の60点ギリギリ届くか、採点が厳しいと届かないかもしれません。

問題を見たい方はこちらからどうぞ: IPA データベーススペシャリスト 令和5年 午後2

問題が短くて潔すぎる

問題文の指示と関係スキーマの相違

午後2大問2は決して難しい問題ではなく、問題量も2時間の割には多くないのですが、問題文の表現が過去数年分と違ったように感じます。

一番顕著なのは、店舗と支線ルートに関する以下の記述です:

②支線ルートは、TCごとの支線ルートコートで識別している。また、支線ルートには、車両番号、配送先店舗とその配送順を定めている。支線ルートの配送先店舗は8店舗前後にしている。支線ルート間での店舗の重複はない。

この段落ではエンティティ「支線ルート」についての説明がされていて、「支線ルート」の属性に「車両番号、配送先店舗とその配送順」があると読めます。一方で「支線ルートの配送先店舗は8店舗前後」という記述があり、「支線ルート」と「配送先店舗」は1対多の関係です。1対多であれば、多側に外部キーを持たせなければいけないので、回答としては以下のようになります(上記問題文の属性についてのみ言及。実際は支線LTなどが加わります):

  • 「支線ルート」には「車両番号」のみもたせる
  • 「店舗」には「支線ルート」への外部キーとして「支線ルートコード」を持たせ、「配送順」も「店舗」ごとの属性であることから、「店舗」側へ持たせる

実際に概念データモデルでも、TACやiTECの回答では「支線ルート」から「店舗」に1対多(→)が引かれており、「店舗」側から外部キーで「支線ルート」に参照を持たせなければいけません。

b(支線ルート)->店舗

指示書に関する表現も同様です:

(中略)積替指示書の明細は、配送先店舗ごとに作り、その内訳に店舗へ運ぶコンテナの配送指示番号を印刷する。

これは「積替指示明細」に関する説明です。この「内訳」は「積替指示明細」の内訳と読めます。しかし実は「積替指示明細」の属性ではなく、「DC出庫指示」に「積替指示番号」を記載するという意図を汲まなければなりません(「積替指示明細」→「DC出庫指示」(1対多)であるため)。

このような表現箇所がトランザクション部分でとても多く、時間制限や緊張もある中で問題文側に沿った回答をしてしまったので、かなり減点されている可能性があります。

以前の問題文を見てみる

令和3年の問題文を一部見てみます:

出荷指示ごとに、出荷指示番号を付与し、適用した締め契機、出荷指示対象の納入先を記録する。対象の受注番号に出荷指示番号を記録する。

これは「出荷指示」エンティティの説明ですが、合わせて「受注」エンティティにも「出荷指示番号」を追加する必要がある、と丁寧に説明があります。

令和2年は配送順についての問題があり、今回の令和5年と近いように見えます。ただ令和2年は関係スキーマの穴埋めが少なく、ある程度出題意図に沿った回答ができたので、空欄だらけの令和5年では本番でちょっとパニックになってしまいました。

反省:問題文の説明と、実際のリレーションや関係スキーマは異なると考える

直近で解いた問題がほとんど問題文に沿って考えればよかったものばかりだったので、問題文の指示と関係スキーマや概念データモデルの相違に混乱してしまいました。

概念データモデルの問題は「問題文」「概念データモデル」「関係スキーマ」の3つを統合して回答する必要がありますが、今回は「問題文」に寄り過ぎて回答してしまったため、来年再受験する場合は関係スキーマや概念データモデルの情報も踏まえて回答するようにしたいです。