Okapi Project

データベース設計

バージョン
2003 年 12 月 05 日 Ver.1.0
作成者
T.Itoh ( Xware ) , A.Hosaka ( Xware )

要約

当ドキュメントは 日報システムのデータベース設計について記述したドキュメントです。

目次


1.日報システムデータベース設計

ここからは日報システムの業務に特化したデータベースの設計内容についてまとめます。具体的な内容については、 の 2 点を中心にまとめます。

1.1.データベーステーブルの構成

今回の日報システムのデータベース構成の概要は次のようになります。

データベース構成の概要図

1.2.各テーブルの項目内容

以下では日報システムで使用する各テーブルのカラム構成について示します。

表1.会社情報テーブル(np_company)項目一覧
No.日本語名英語名長さ備考Unique
1会社 IDncm_company_id10varchar-
2会社名ncm_company_name30varchar--
3所在地ncm_location30varchar--
4資本金ncm_capital10varchar--
5代表者名ncm_ceo10varchar--



表2.支店情報テーブル(np_branch)項目一覧
No.日本語名英語名長さ備考Unique
1会社 IDnbh_company_id10varchar-
2支店 IDnbh_branch_id10varchar-
3支店名nbh_branch_name30varchar--



表3.業務情報テーブル(np_business)項目一覧
No.日本語名英語名長さ備考Unique
1会社 IDnbs_company_id10varchar-
2支店 IDnbs_branch_id10varchar-
3業務 IDnbs_business_id10varchar-
4業務名nbs_business_name30varchar--
5業務種別nbs_business_type2varchar--
6勤務地nbs_service_area30varchar--
7業務責任者nbs_leader10varchar--
8開始時刻nbs_start_time-time--
9終了時刻nbs_end_time-time--
10休憩開始時刻nbs_rest_start_time-time--
11休憩終了時刻nbs_rest_end_time-time--



表4.社員情報テーブル(np_member)項目一覧
No.日本語名英語名長さ備考Unique
1会社 IDnmb_company_id10varchar-
2社員 IDnmb_member_id10varchar-
3役割nmb_role2varchar--
4パスワードnmb_password20varchar--
5社員名nmb_member_name20varchar--
6性別nmb_sex1varchar--
7生年月日nmb_birthday-date--
8入社年月日nmb_entrance_company_date-date--
9退社年月日nmb_leave_company_date-date--
10役職nmb_managerial_position20varchar--
11郵便番号1nmb_postal_18varchar--
12住所1nmb_address_1100varchar--
13電話番号1nmb_tel_number_115varchar--
14郵便番号2nmb_postal_28varchar--
15住所2nmb_address_2100varchar--
16電話番号2nmb_tel_number_215varchar--
17携帯電話番号nmb_cellularphone_num15varchar--
18メールアドレス1nmb_mail_address_1100varchar--
19メールアドレス2nmb_mail_address_2100varchar--
20メールアドレス3nmb_mail_address_3100varchar--
21備考nmb_memo50varchar--



表5.勤務情報テーブル(np_report)項目一覧
No.日本語名英語名長さ備考Unique
1会社 IDnrp_company_id10varchar-
2支店 IDnrp_branch_id10varchar-
3業務 IDnrp_business_id10varchar-
4社員 IDnrp_member_id10varchar-
5出勤日nrp_start_day-date-
6出勤時刻nrp_start_time-time-
5退勤日nrp_end_day-date-
8退勤時刻nrp_end_time-time-
9休憩開始時刻nrp_rest_start_time-time--
10休憩終了時刻nrp_rest_end_time-time--



表6.社員/業務関連テーブル(np_rel_member_business)項目一覧
No.日本語名英語名長さ備考Unique
1会社 IDnrm_company_id10varchar-
2支店 IDnrm_branch_id10varchar-
3業務 IDnrm_business_id10varchar-
4社員 IDnrm_member_id10varchar-



表7.月報ロック情報テーブル(np_lock_report)項目一覧
No.日本語名英語名長さ備考Unique
1会社 IDnlr_company_id10varchar-
2支店 IDnlr_branch_id10varchar-
3業務 IDnlr_business_id10varchar-
4対象年月nlr_target_years8varchar-



表8.お知らせ情報テーブル(np_information)項目一覧
No.日本語名英語名長さ備考Unique
1登録年月日nim_entry_date-int4-
2登録時間nim_entry_time-int4-
3タイトルnim_title50varchar--
4内容nim_memo-text--



1.3.インデックスの設計について

日報システムにおけるインデックスの設計について示します。

1.3.1.日報システムのデータ量見積もり

まず、インデックスの必要性の検証を行うため、日報システムでのデータ量の概算を以下に示します。

表7.日報システムにおけるデータ量の概算値
テーブル名見積もり概算値( 1 年分)
会社情報1 件
支店情報2 件
業務情報〜 10 件
社員情報〜 30 件(退職者の情報は当面残すとしている)
日報情報〜 14,400 件
休暇情報〜 240 件


※日報情報の概算は、

      2 (業務/日) * 20 (人) * 30 (日/月) * 12 (ヶ月) = 14,440 (件)

  また、休暇情報の概算は、

      1 (件/月) * 20 (人) * 12 (ヶ月) = 240 (件)

  として算出している。いずれも目安としての参考値。

1.3.2.インデックスの設計

上記のデータ量見積もりによると、最もデータ件数が多くなるのは日報情報であり、これはテーブルの構成が設計により変化してもこの情報に関しての概算値は大幅な変更はないと考えられます。

PostgreSQL において、インデックスに関する条件としては、次の 3 点を踏まえておく必要があります。
  1. Primary Key についてはデータ量に関係なくインデックスがシステムによって構成される。
  2. PostgreSQL においてインデックスが実際に活用されるのはデータが 10,000 件程度になってからである。
  3. インデックスを使用しているかどうかについては Explan コマンドを実行することで検証することができる。
以上の 3 点を考慮し、インデックスについて検討すると結果的に今回の日報システムにおけるインデックス作成は不要と言う結論に達します。理由としてデータ量が 10,000 件を超えるものについては日報情報だけですが、実際の日報情報は最低でも 1 年分保持するのが常識的なところであり、それ以前の過去のものについてはバックアップを行い実テーブルからは削除してしまっても仕様として問題が無いと考えられます。したがって実際に日報情報が数万件のデータを保持することは現実的でないため、インデックスの設計について現時点において考慮する必要性は皆無と結論付けます。


Copyright © 2003 - 2006 Okapi Project All Rights Reserved.