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に示す。
〔新データベースのテーブル構造の設計〕
J君は,新データベースのテーブル構造を図3のように設計した。
なお, “掲示板” はサービスと同様に Web サイトの一機能であるが, サービスとは異なるテーブルとして設計した。
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のテーブルの主キーはメールアドレスである。
次にJ君は整理した結果を踏まえて、データを移行するための作業内容及び作業方法を検討し、次の表4の手順で移行データの作成を行うことにした。 また, 表4の作業は,各 Web サイトから抽出した会員データが保存された作業用ファイル上で行うことにした。
解答に当たっては、 巻頭の表記ルールに従うこと。
なお,テーブル構造の表記は, "関係データベースのテーブル (表) 構造の表記ルール” を用いること。 さらに, 主キー及び外部キーを明記せよ。