物理設計 データ所要量計算 - データベーススペシャリスト


出題のあった過去問
平成27年 午後II 問1
平成28年 午後II 問1
平成29年 午後I 問3
平成30年 午後II 問1
平成31年 午後II 問1

まれに出ないことがあるがほぼ毎年出ているので物理設計も視野に入れる。


主なデータ型

CHAR(n) 半角英数字 文字数バイト
NCHAR(n) 日本語 文字数*2バイト
VARCHAR(n) 可変長半角英数字 平均文字数+4バイトの制御情報
NCHAR VARYING(n) 可変長日本語 備考など 平均文字数*2+4バイトの制御情報
SMALL INT 桁数の少ない数値 2バイト
INTEGER 数値 4バイト
DECIMAL(m,n) INTEGERでは収まらない巨大な数字 m(精度)/2+1バイト(切り捨て)
DATE 日付 4バイト
TIME 時間 3バイト
TINESTAMP 日時 10バイト
※変わる可能性あり

NULLについて

空き容量率とNULLの1バイトに注意する。
必須(NOT NULL)
任意(NULL)
~場合にのみ設定する(NULL)
連番で指定する(NOT NULL)
その他特別な記述がない場合NOT NULL.

主たる計算式

見積行数(データレコード数)
ページサイズ(1ページあたりのサイズ2000,4000,8000バイトなど)
平均行長(1レコードあたりのサイズ)
1データページあたりの平均行数(ページサイズ/平均行長)*(1-空き容量率)
必要データページ数(見積行数/1データページあたりの平均行数 切り上げ)
データ所要量(ページサイズ*必要データページ数)


例題


平成27年 午後II 問1

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2015h27.html#27haru


データページサイズ:4000バイト
空き領域率:10%
患者数:300万

患者基本テーブル
患者ID:8バイト
氏名:24バイト
性別:1バイト
生年月日:4バイト
職業:23バイト

a "患者基本テーブル"平均行長:60バイト
b 1ページ平均行数:4000*0.9/60 = 60行
c 見積もり行数:30000000
d 必要ページ数:30000000/60行 = 50000ページ
e データ所要量:4000バイト*5000ページ~ 200百万バイト

平成28年 午後II 問1

見積行数 1200000
ページサイズ 4000

行員番号:4バイト
予定日:4バイト
開始時刻:3バイト
TIME型
開始時刻、終了時刻は"スケジュール"テーブルの場合必須で~
行番号:2バイト
SMALLINT
1~999の連番で区別する。
終了時刻:3バイト
TIME型
開始時刻、終了時刻は"スケジュール"テーブルの場合必須で~
行動種別:1バイト
Char(1)
'1'~'5'のいずれか
行動内容:121バイト
NCHAR VARYING(58)
全角文字1000字以内(+4バイト)
平均文字数は58文字(*2バイト)
"スケジュール"テーブルでは任意(NULL1バイト)
支店コード:5バイト
4桁の半角数字
"スケジュール"テーブルの支店コードと案件番号は案件に関連する~場合にだけ設定する(NULL1バイト)
案件番号:5バイト
INTEGER
1,000,001~9,999,999
"スケジュール"テーブルの支店コードと案件番号は案件に関連する~場合にだけ設定する(NULL1バイト)

平均行長 = 4+4+3+2+3+1+121+5+5 = 148バイト
ページあたり平均行数 = (4000 * (1-空き容量率0.1)) /1(切り捨て) / 平均行長148 = 24行
必要データページ数 = 行数 / ページあたり平均行数 = 1200000 / 24 = 50000ページ
データ所要量 = 必要データページ数 * ページサイズ = 50000 * 4000 = 200百万バイト

d 平均行長 148
e ページあたり平均行数 24
f 必要データページ数 = 50000
g データ所要量 200百万バイト