DBデータベーススペシャリスト試験 午後Ⅰ

平成24年度春期 データベーススペシャリスト 午後Ⅰ 問2

事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。

問題

問2 データベースの設計に関する次の記述を読んで,設問1~3に答えよ。 D社は,教育,生活など,様々な分野にわたる書籍の出版及びメディアを提供する会社である。幾つかの部門では会員制のWebサイトを立ち上げ,販売促進に利用している。しかし,Webサイトごとに会員登録が必要であり,利用者から改善の要望が寄せられていた。また,D社にとっても複数のWebサイトにまたがる共通のサービスを提供できないなどの問題があった。 D社は,各Webサイトがもつ会員情報を統合管理するための会員管理システムを構築することとなり,そのための新データベースの設計を情報システム部のJ君が担当することになった。 〔新データベース上で扱う情報〕 (1) 会員とは,Webサイトを利用するために必要な情報を登録した利用者である。会員には,一般会員と期限付き会員の会員区分がある。 ① 一般会員とは,個人情報,認証情報などをD社に提示して会員登録し,Webサイトの全てのコンテンツを閲覧できる会員である。 ② 期限付き会員とは,簡便な会員登録だけを行い,特定のコンテンツだけが閲覧できる会員である。一般会員と異なり,定められた有効期限を過ぎるとWebサイトを利用できなくなる。 (2) 会員は,Webサイトごとに利用登録を行うことで,そのWebサイトを利用することができる。会員が利用するWebサイトごとに利用開始年月日を管理する。 (3) サービスとは,“ニュース”,“ブログ”など,Webサイトで提供される会員向けの機能である。サービスは,Webサイトごとに複数提供され,WebサイトIDとサービスIDの組合せによって識別される。 (4) コンテンツとは,ブログサービスの“記事一覧”,“コメント投稿”など,サービスを構成する個々の要素である。コンテンツはコンテンツIDによって識別され,コンテンツごとにWebサイトのトップページのURLからの相対パス(ディレクトリ)が特定される。また,会員はログイン後に任意のコンテンツをお気に入りとして登録することができる。お気に入りは,登録した日時の順に表示される。 (5) 権限区分とは,コンテンツに対して利用が可能な権限の種類である。権限区分には“参照可”,“参照不可”,“参照及び投稿可”の3種類があり,コンテンツIDと会員区分の組合せでいずれかに定められる。 (6) 掲示板とは,メッセージを投稿し,会員同士でコミュニケーションを行うための機能である。会員は,タイトルと説明文を入力して掲示板を開設することができる。掲示板は,WebサイトIDと掲示板IDの組合せによって一意に識別される。 (7) メッセージとは,掲示板に投稿された文章である。会員は,掲示板にメッセージを新規投稿できるだけでなく,第三者からの投稿メッセージに対して返信することができる。メッセージの返信が行われると,返信対象の投稿メッセージ(親メッセージ)との関係はツリー構造で表示される。メッセージは,掲示板単位に連番のメッセージ番号によって,一意に識別される。 〔Webサイト,掲示板の例〕 D社で運営しているWebサイトの例を図1に,掲示板の例を図2に示す。 図1 Webサイトの例 図2 掲示板の例 〔新データベースのテーブル構造の設計〕 J君は,新データベースのテーブル構造を図3のように設計した。 なお,“掲示板”はサービスと同様にWebサイトの一機能であるが,サービスとは異なるテーブルとして設計した。 図3 J君が設計したテーブル構造 J君の上司であるK部長は,J君が設計したテーブル構造をレビューし,次の①~③を指摘した。 〔K部長の指摘事項〕 ① 図3中のテーブルの一部に,列名,主キー,外部キーが記入されていない。 ② “掲示板”テーブルは,第3正規形に正規化されていない。 ③ 掲示板に投稿されたメッセージに対する返信が,どのメッセージに対する返信であるかを管理できない。 〔事業部門からの要望〕 設計の途中で,事業部門から次の要望が寄せられ,対応することになった。 (ア) 有償サービスの提供:D社で作成した付加価値の高いコンテンツは,有償で提供したい(例:月額課金制で電子書籍などの特定コンテンツの閲覧・ダウンロードができるサービス)。 J君はこの要望に対応するために,次の内容について概念データモデル上で検討した。 ・会員の区分として,一般会員,期限付き会員の他に,“有償会員”を新規に追加する。 ・サービスの区分として,“有償サービス”を新設する。〔新データベースのテーブル構造の設計〕で定義したサービスは“無償サービス”とする。 ・有償会員が購入したサービスを管理するために,“購入サービス”を新たに定義する。 (イ) メールマガジンの配信:Webサイトに関連する情報を提供するために,会員向けのメールマガジン(以下,メルマガという)を配信したい。 この要望に対する業務要件は次のとおりである。 ・Webサイトは,複数種類のメルマガを配信できる。メルマガはWebサイトIDとメルマガIDの組合せによって一意に識別し,メルマガ名を管理する。 ・配信したメルマガは,バックナンバとしてメルマガ本文を配信日時ごとに管理する。 ・会員は,利用しているWebサイトについて,複数のメルマガを購読できる。会員が購読しているメルマガごとに,購読開始日を管理する。 ・メルマガを購読している会員は,当該メルマガのバックナンバを閲覧できる。 〔データの移行〕 J君は,各Webサイトの重複した会員データを統合することを視野に入れ,データの移行作業の検討を行った。まず,J君は複数の既存Webサイトのデータベースから,“一般会員”テーブルに相当する登録済の会員データを入手し,整理した。WebサイトA~Cから抽出した会員データの一部を,それぞれ表1~3に示す。 なお,表1,2のテーブルの主キーは会員番号であり,それぞれ異なるルールで番号が割り振られている。また,表3のテーブルの主キーはメールアドレスである。 表1 WebサイトAから抽出した会員データ(一部) 表2 WebサイトBから抽出した会員データ(一部) 表3 WebサイトCから抽出した会員データ(一部) 次にJ君は整理した結果を踏まえて,データを移行するための作業内容及び作業方法を検討し,次の表4の手順で移行データの作成を行うことにした。また,表4の作業は,各Webサイトから抽出した会員データが保存された作業用ファイル上で行うことにした。 表4 移行データの作成手順 解答に当たっては,巻頭の表記ルールに従うこと。 なお,テーブル構造の表記は,“関係データベースのテーブル(表)構造の表記ルール”を用いること。さらに,主キー及び外部キーを明記せよ。 設問1 J君が設計したテーブルの構造(図3)に対する〔K部長の指摘事項〕の①~③について,(1)~(3)に答えよ。 (1) 図3中の[a]~[c]に適切な字句を入れ,主キーを示して,“お気に入り”テーブルを完成させよ。また,“サービス”,“コンテンツ”及び“利用権限”テーブルの主キー,外部キーを示せ。 (2) “掲示板”テーブルは,第1正規形,第2正規形,第3正規形のうち,どこまで正規化されているかを答えよ。また,その判別根拠を75字以内で具体的に述べよ。 (3) 〔K部長の指摘事項〕の②,③の問題を解消し,第3正規形に分解した“掲示板”テーブルの構造を示せ。 設問2 〔事業部門からの要望〕について,(1),(2)に答えよ。 (1) 要望(ア)の有償サービスの提供に対応するために,概念データモデル上で検討したときの図を次に示す。エンティティタイプ名及びリレーションシップを記入し,要望(ア)を満たす概念データモデルを完成させよ。 なお,エンティティタイプ間の対応関係にゼロを含むか否かの表記は不要である。 設問2(1)の概念データモデル図(未完成) (2) 要望(イ)のメルマガの配信に対応するためのテーブルの構造を示せ。 なお,列名は本文中の用語を用いること。 設問3 表4の移行データの作成手順について,表1~3に表示されている会員データから考えられる範囲で,次の(1)~(4)に答えよ。 (1) WebサイトBとWebサイトCで実施する手順1のデータの編集内容を一つずつ挙げ,それぞれ20字以内で述べよ。 (2) 手順2の作業方法だけでは,問題が発生する可能性がある。その問題について,原因を含めて60字以内で述べよ。 (3) 手順3の作業方法に示した例以外に標準化すべきことを二つ挙げ,それぞれ30字以内で述べよ。 (4) 手順4中の[d]に入れる適切な作業内容を,50字以内で述べよ。
図1 Webサイトの例。ブラウザ画面の模式図。大学受験ポータルサイトの学校情報ページで、サービスメニュー(トップ、学校情報、予備校情報、掲示板、ブログ)、新着情報欄(会員限定の記事を含む)、ログインIDとパスワードを入れる会員ログイン欄、新規登録へのリンクがある。
図1 Webサイトの例。ブラウザ画面の模式図。大学受験ポータルサイトの学校情報ページで、サービスメニュー(トップ、学校情報、予備校情報、掲示板、ブログ)、新着情報欄(会員限定の記事を含む)、ログインIDとパスワードを入れる会員ログイン欄、新規登録へのリンクがある。
図2 掲示板の例。お料理ポータルサイトの掲示板画面。タイトル、開設日時、開設者、説明文があり、No.1の投稿と、それに返信したNo.2の投稿がツリー構造で表示されている。新規投稿ボタンと返信ボタンもある。
図2 掲示板の例。お料理ポータルサイトの掲示板画面。タイトル、開設日時、開設者、説明文があり、No.1の投稿と、それに返信したNo.2の投稿がツリー構造で表示されている。新規投稿ボタンと返信ボタンもある。
図3 J君が設計したテーブル構造。会員、一般会員、期限付き会員、Webサイト、サービス、コンテンツ、お気に入り(空欄a~c)、利用権限、掲示板、利用Webサイトの各テーブル構造。一部の列に主キーの下線がある。掲示板テーブルには掲示板の列とメッセージの列が混在している。
図3 J君が設計したテーブル構造。会員、一般会員、期限付き会員、Webサイト、サービス、コンテンツ、お気に入り(空欄a~c)、利用権限、掲示板、利用Webサイトの各テーブル構造。一部の列に主キーの下線がある。掲示板テーブルには掲示板の列とメッセージの列が混在している。
表1 WebサイトAから抽出した会員データ(一部)。WebサイトAの会員データ。列は会員番号、姓・名(漢字・ふりがな)、都道府県、住所など。斉藤太郎、田中一郎、沢田三郎、井上吉男、高橋次郎の5件を載せ、注に会員番号は連番7桁+入会年の西暦下2桁とある。
表1 WebサイトAから抽出した会員データ(一部)。WebサイトAの会員データ。列は会員番号、姓・名(漢字・ふりがな)、都道府県、住所など。斉藤太郎、田中一郎、沢田三郎、井上吉男、高橋次郎の5件を載せ、注に会員番号は連番7桁+入会年の西暦下2桁とある。
表2 WebサイトBから抽出した会員データ(一部)。WebサイトBの会員データ。列は会員番号、氏名(漢字・ふりがなを空白区切りで一列に格納)、都道府県、住所。齊藤太郎、高橋次郎、澤田三郎などの5件を載せ、住所は丁目・番地で表記する例がある。注に9桁の連番と、△は空白を表す旨がある。
表2 WebサイトBから抽出した会員データ(一部)。WebサイトBの会員データ。列は会員番号、氏名(漢字・ふりがなを空白区切りで一列に格納)、都道府県、住所。齊藤太郎、高橋次郎、澤田三郎などの5件を載せ、住所は丁目・番地で表記する例がある。注に9桁の連番と、△は空白を表す旨がある。
表3 WebサイトCから抽出した会員データ(一部)。WebサイトCの会員データ。列はメールアドレス、姓・名(漢字・フリガナ)、住所(都道府県を含む)。5件を載せ、旧市名の住所や漢数字・号室を含む住所表記がある。注に埼玉県大宮市が現在はさいたま市大宮区となっている旨がある。
表3 WebサイトCから抽出した会員データ(一部)。WebサイトCの会員データ。列はメールアドレス、姓・名(漢字・フリガナ)、住所(都道府県を含む)。5件を載せ、旧市名の住所や漢数字・号室を含む住所表記がある。注に埼玉県大宮市が現在はさいたま市大宮区となっている旨がある。
表4 移行データの作成手順。手順1~5の作業内容と作業方法の表。手順1は項目の分割・統合、手順2はキー項目の統一と会員番号の付与、手順3はWebサイトAを基準とした標準化、手順4は空欄d、手順5は会員への確認と移行対象データの確定。
表4 移行データの作成手順。手順1~5の作業内容と作業方法の表。手順1は項目の分割・統合、手順2はキー項目の統一と会員番号の付与、手順3はWebサイトAを基準とした標準化、手順4は空欄d、手順5は会員への確認と移行対象データの確定。
設問2(1)の概念データモデル図(未完成)。設問2(1)で完成させる概念データモデル図。上段に会員とサービスの二つのエンティティがあり、その下に名前が空欄の箱が6個並ぶ。右側の上下二つの空欄の箱は矢印で結ばれている。
設問2(1)の概念データモデル図(未完成)。設問2(1)で完成させる概念データモデル図。上段に会員とサービスの二つのエンティティがあり、その下に名前が空欄の箱が6個並ぶ。右側の上下二つの空欄の箱は矢印で結ばれている。
解き方のヒントを見る

業務ルールから依存関係を読み取る

テーブル設計や移行を考える際は、業務上の決まりごとを根拠に、どの項目がどの項目によって一意に決まるのかを一つずつ確かめることが大切です。思い込みや一般常識ではなく、記述された条件だけで判断しましょう。

この問題で問われていること

問われている箇所がどの業務ルールの記述と対応しているかを特定し、その記述から読み取れる項目間の対応関係(一対一か一対多かなど)と、値を一意に決める項目の組合せを自分の言葉で整理することが検討の出発点です。

視点

データベース設計の多くの論点は、「ある項目の値が決まると、別の項目の値が決まるか」という依存関係の把握に行き着きます。この関係は業務の決まりごとによって変わるため、同じ名前の項目でも状況次第で扱いが異なります。業務の記述を根拠に関係を一つずつ確かめる習慣をつけると、構造の妥当性、モデルの拡張、データの移し替えといった異なる論点も、同じ視点で落ち着いて検討できます。

確認ポイント

  • 問われている箇所に関係する業務ルールの記述を探し、該当する文言に印を付けたか
  • その記述から、どの項目の値が決まると別の項目の値が決まるのかを、根拠となる文言と対応させて書き出したか
  • 一般的な常識や他の事例での経験ではなく、記述された条件だけに基づいて判断しているかを見直したか
正解と解説を見る

解説

複数のWebサイトの会員情報を統合するための新データベースについて、テーブルのキー設定、掲示板テーブルの正規化とメッセージの親子関係、有償サービスとメルマガの追加、旧データの移行手順を問う問題です。本文の識別子に関する記述と表1~3のデータの違いを正確に読み取ることが得点の鍵になります。

問題の全体像

D社はWebサイトごとに別々だった会員登録を一つにまとめるため、会員管理システムの新データベースを設計します。問題は三つの段階で構成されています。一つ目は、J君が作った図3のテーブル構造に対するK部長の指摘(キーの記入漏れ、掲示板テーブルの正規化不足、返信元を管理できないこと)への対応です。二つ目は、事業部門から追加された要望(有償サービスとメルマガ)への対応です。三つ目は、WebサイトA~Cの会員データを移行する手順の検討です。公式解答例の出題趣旨では、業務要件を分析する能力、テーブルを設計する能力、データ移行に関する問題を分析する能力を問うとしています。採点講評では、全体として正答率は低かったと述べています。

設問1(1)(a)

本文(4)に、会員はログイン後に任意のコンテンツをお気に入りとして登録でき、お気に入りは登録した日時の順に表示されるとあります。お気に入りは「どの会員が」「どのコンテンツを」登録したかを表すので、会員を特定する列が必要です。公式解答例では、aを会員番号とし、主キーの一部として下線を付けています。aとbは順不同です。

設問1(1)(b)

(a)と同じく、登録の対象となるコンテンツを特定する列が必要です。本文(4)に、コンテンツはコンテンツIDで識別されるとあります。公式解答例では、bをコンテンツIDとし、主キーの一部として下線を付けています。お気に入りは会員とコンテンツの組で1行と決まるので、{会員番号、 コンテンツID}が主キーになります。

設問1(1)(c)

本文(4)に「お気に入りは、登録した日時の順に表示される」とあるので、表示順を決めるための登録日時を保持する必要があります。公式解答例ではcを登録日時としています。これは主キーではない属性です。

設問1(1)(サービス)

本文(3)に、サービスはWebサイトごとに複数提供され、WebサイトIDとサービスIDの組合せによって識別されるとあります。公式解答例では、サービス(WebサイトID、 サービスID、 サービス名)のうち、WebサイトIDとサービスIDの二つに主キーの下線を付けています。サービスIDだけではWebサイトをまたいで一意にならない点に注意が必要です。

設問1(1)(コンテンツ)

本文(4)に、コンテンツはコンテンツIDによって識別され、サービスを構成する要素だとあります。公式解答例では、コンテンツIDを主キーとし、WebサイトIDとサービスIDに外部キーの破線を付けています。この二つを組み合わせることで、サービステーブルの複合主キーを参照します。

設問1(1)(利用権限)

本文(5)に、権限区分はコンテンツIDと会員区分の組合せで決まるとあります。そのため、この組合せが主キーとなり、権限区分はそれに従属する属性です。公式解答例では、利用権限(コンテンツID、 会員区分、 権限区分)のうち、コンテンツIDと会員区分に主キーの下線を付けています。

設問1(2)(正規形)

図3の掲示板テーブルは、掲示板の情報(タイトル、開設日時、説明文、開設者)とメッセージの情報を1行にまとめています。メッセージは掲示板単位に連番で識別されるので、候補キーは{WebサイトID、 掲示板ID、 メッセージ番号}です。すべての列は単一の値なので第1正規形は満たしますが、キーの一部だけで決まる属性があるため、第2正規形は満たしません。公式解答例では第1正規形としています。

設問1(2)(判別根拠)

根拠として示すべき要素は二つあります。①すべての属性が単一の値をとること(第1正規形であること)。②タイトル、説明文などの掲示板の属性が、候補キーの一部であるWebサイトIDと掲示板IDだけで決まる、つまり部分関数従属していること(第2正規形でないこと)。公式解答例もこの二点を示しています。75字以内で書くには、属性名とキーの一部を具体的に挙げることがポイントです。

設問1(3)

指摘②を解消するため、部分関数従属している掲示板の属性を別のテーブルに分けます。指摘③を解消するため、返信元のメッセージを示す列を追加します。公式解答例では次の二つのテーブルに分解しています。掲示板(WebサイトID、 掲示板ID、 タイトル、 掲示板開設日時、 説明文、 掲示板開設者会員番号)では、WebサイトIDと掲示板IDが主キーで、開設者会員番号が外部キーです。メッセージ(WebサイトID、 掲示板ID、 メッセージ番号、 メッセージ本文、 メッセージ投稿者会員番号、 メッセージ投稿日時、 親メッセージ番号)では、3列の組が主キーで、投稿者会員番号と親メッセージ番号が外部キーです。親メッセージ番号は同じ掲示板内のメッセージを参照するので、図2のようなツリー表示ができます。採点講評では、主キーをメッセージ番号だけにした答案や、返信先を管理する列がない答案が散見されたと指摘しています。

設問2(1)

要望(ア)では、会員の区分に有償会員を追加し、サービスを無償サービスと有償サービスに区分し、購入サービスを定義するとしています。公式解答例の概念データモデルは次の構成です。会員をスーパータイプとし、期限付き会員・一般会員・有償会員をサブタイプとして汎化の記号でつなぎます。サービスをスーパータイプとし、無償サービス・有償サービスをサブタイプとします。図にすでにある矢印は、有償サービスから購入サービスへの1対多の関係です。さらに、有償会員から購入サービスへの1対多の関係を記入します。採点講評では、正答率は高かったものの、有償会員から購入サービスへの1対多のリレーションシップが書かれていない答案もあったと指摘しています。

設問2(2)

業務要件を一文ずつテーブルに対応させます。公式解答例では次の三つです。①メルマガはWebサイトIDとメルマガIDの組合せで識別し、メルマガ名を管理するので、メルマガ(WebサイトID、 メルマガID、 メルマガ名)。②会員は複数のメルマガを購読でき、購読開始日をメルマガごとに管理するので、購読メルマガ(WebサイトID、 メルマガID、 会員番号、 購読開始日)で、主キーは前の3列。③バックナンバは配信日時ごとにメルマガ本文を管理するので、バックナンバ(WebサイトID、 メルマガID、 配信日時、 メルマガ本文)で、主キーは前の3列。列名は、問題の指示どおり本文中の用語を使います。

設問3(1)(B)

表2のWebサイトBでは、氏名が「齊藤△太郎」のように姓と名を空白でつないだ一つの項目になっています。一方、新データベースの一般会員テーブルでは姓と名が別の列です。公式解答例では「氏名を姓と名に分離する。」としています。20字以内で「何を」「どう分ける」かを示します。

設問3(1)(C)

表3のWebサイトCには都道府県の列がなく、住所が「東京都文京区…」のように都道府県から始まっています。新データベースには都道府県の列があるため、分割が必要です。公式解答例では「住所に含まれる都道府県を分離する。」としています。

設問3(2)

手順2では、WebサイトAとBの会員番号をそのまま使うとしています。しかし、表1の注によるとAの番号は「連番7桁+入会年の西暦下2桁」の9桁、表2の注によるとBの番号は「000000000」~「999999999」の連番です。両者は同じ9桁の値の範囲に収まるため、同じ番号が重複するおそれがあります。公式解答例では、AとBで採番されている番号の範囲が重複するので、データを投入するときに一意制約違反が発生するとしています。60字以内の答案では、原因(番号の範囲が重複する)と問題(投入時の一意制約違反)の両方を書きます。

設問3(3)(①)

手順3の例(フリガナをひらがなに変換する)以外で、表1を基準にしたときの表記の違いを探します。表2では「齊藤」「澤田」、表1では「斉藤」「沢田」と、旧字体と新字体が混在しています。公式解答例では、一つ目として「姓と名に含まれる旧字体の漢字を新字体に変更する。」を挙げています。

設問3(3)(②)

住所の表記にもばらつきがあります。表1は「1-1」のように算用数字とハイフンで書かれていますが、表2・表3には「1丁目1番地」「二丁目28番9号」のような表記があります。また、表3の注4によると、埼玉県大宮市は合併により現在はさいたま市大宮区です。公式解答例では二つ目として、「住所の丁目以降の表記を、算用数字とハイフンに変換する。」と「市町村合併などで変更された住所を現在のものに修正する。」を示しています。後者は、作業内容にある「過去のデータを最新データに変換する」に当たります。

設問3(4)

〔データの移行〕では「各Webサイトの重複した会員データを統合することを視野に入れ」とあり、手順5では「手順4で整理した会員に対して必要に応じて確認を取り」とあります。表1~3には、同じ斉藤太郎さんや高橋次郎さんと思われるデータが複数のサイトにあります。公式解答例では、d を「複数のWebサイトを利用している、同一人物であると考えられる会員の会員データを特定する。」としています。採点講評では正答率が低かったとし、手順1~3で標準化した上で同一人物の会員データを特定する必要があることに気付いてほしいと述べています。

学習のポイント

主キーと外部キーを本文から導く力、部分関数従属の見抜き方、自己参照による階層の表現、スーパータイプ・サブタイプの描き方、データ移行での分割・統合と標準化、名寄せの考え方を重点的に学びましょう。

出典:独立行政法人 情報処理推進機構(IPA)平成24年度春期 データベーススペシャリスト試験 午後Ⅰ 問2(公式資料:問題冊子(PDF) / 解答例 / 採点講評)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針