A社は,都市近郊で複数の日帰り温泉施設(以下,施設という)を運営している。
A社では,リピータを増やすために,全施設で利用できる会員カードを希望する客に発行し,新たにシニア向けの割安な利用料金を設定することにした。 また,この計画に伴いシステムを拡張することが決まり、Fさんが物理データベースの設計及び実装(以下,物理 DB 設計及び実装という)を担当することになった。
〔RDBMS の主な仕様〕
(1) テーブル及び索引のストレージ上の物理的な格納場所を, 表領域という。
(2) RDBMSとストレージ間の入出力単位を,ページという。同じページに異なるテーブルの行が格納されることはない。
(3) 索引は,ユニーク索引と非ユニーク索引に分けられる。
(4) 索引は,クラスタ性という性質によって,高クラスタな索引と低クラスタな索引に分けられる。
・高クラスタな索引: キー値の順番と, キーが指す行の物理的な並び順が一致しているか、完全に一致していなくても、隣接するキーが指す行が同じページに格納されている割合が高い。
・低クラスタな索引: キー値の順番と, キーが指す行の物理的な並び順が一致している割合が低く, 行へのアクセスがランダムになる。
(5) DML のアクセスパスは, RDBMS によってテーブル及び索引に関する統計情報に基づいて索引探索又は表探索に決められる。 ただし, 次の場合は除く。
・WHERE 句の AND だけで結ばれた等値比較の対象列がユニーク索引のキー列に一致している場合 : 統計情報にかかわらず,その索引の索引探索に決められる。
・統計情報からテーブルが空 (0行) と判断した場合: 表探索に決められる。
(6) 主キー制約及び UNIQUE 制約は,制約を定義する列の構成に一致したユニーク索引が RDBMSによって自動的に作成されることで一意性が保証される。
〔施設運営及び会員カードの概要〕
1.施設運営
(1) 営業時間帯は、 9:00〜24:00である。
(2) 各施設には,エステ, 理容,食事処,売店など,一つ以上の店舗がある。
(3) 受付では,客が一人1枚ずつ入館券を購入し, 入館券ごとに腕輪付きロッカ一鍵(以下,鍵という)を一つ受け取り, 帰るときに返却する。
(4) 客は,鍵のバーコードに記録されている鍵番号を店舗のレジに読み取らせることで,店舗の有料サービスを含む商品を利用できる。 レジに記録されたデータは,客が精算するまでにシステムのデータベースに送られる。
(5) 未精算の利用額は, 退館時に複数台のいずれかの精算機で精算する。
(6) 同じ客が同じ日に、同じ施設を複数回, 利用することができる。 この場合,入館券を再度, 購入する必要がある。
2.会員カード
(1) 客は,会員カード申込書(以下, 申込書という)に必要な情報(氏名,生年月日など)を記入する。 未就学児の入館は無料なので申込対象外である。
(2) 客は,会員 ID が刻印された会員カード (申込書に添付) を受け取り,その日から利用することができる。 会員には,鍵を用いた利用の額に応じてポイントを付与する。 ポイントは,次回以降の施設利用に使うことができる。
(3) システムは,翌朝の開館までに申込書に基づいて会員情報を登録し,また,毎日の営業時間外に, 会員の生年月日に基づいて年齢及び年齢区分を設定する。
(4) 登録の翌日以降、客は,会員カードを提示して,年齢に応じた入館券を購入する。その際,年齢を示す証明書の提示を求められることはない。
〔物理 DB 設計及び実装〕
1.物理 DB 設計及び実装の前提
(1) テーブル構造は,既に決まっている
(2) テーブルごとの行数は、過去の実績及び伸び率の予想に基づいて見積もる。
(3) 利用実績データは,分析のために1年分を保存する。
(4) システムで用いられるユーザ, ロールは,定義済みである。
(5) プログラム開発者は, DML を設計し, プログラムの開発 単体テストを行う。
(6) 索引は,プログラム開発者が設計した DML に基づいてFさんが設計を行う。
2.主なテーブル構造及び主な列の意味と制約
主なテーブル構造を図1に, 主な列の意味・ 制約を表1に示す。 また, “会員”テーブルの年齢区分と年齢の組合せを限定する検査制約を、 図2に示す。
3.物理 DB 設計及び実装の作業工程表
Fさんが作成中の物理DB設計及び実装の作業工程表を, 表2に示す。
(1) 作業 W4 (追加索引設計)で、利用額の精算時に実行される DML の例を表 3に,F さんが DML2 及び DML3のために追加した索引を表4に示す。
(2) 作業 W5 (表領域設計), 可変長列があるテーブルのストレージ所要量を見積もる計算の手順を, 表 5に示す。 また, 作業 W6 (DML 性能予測) で DML性能の指標としてDMLのテーブルからの読込みページ数を, 表5の見積結果を用いて予測する計算の手順を, 表6に示す。
〔G部長の指摘〕
表2の作業工程表について, Fさんは,表に示した作業順で逐次, 各作業を行うつもりであったが, G部長から次のような指摘があった。
指摘1:作業を並行して進めることで, 作業工程期間を短縮できる。
指摘2:作業 W8 (統計情報取得及びアクセスパス確認) の作業順が8番目では,表3のDML のアクセスパスが適切に決められない。 作業 W8 を, 作業(あ)の後に行うべきである。