Next: システム構成
Up: プログラミング例:名簿管理システム
Previous: データベースの操作
名簿管理システムには、次の3つのテーブルがある。
- meibo
- 名簿の最新データを保持するためのもの。
- meibo_history
- 名簿の更新履歴を保持するためのもの。
- meibo_id
- メンバーに与えた最大のIdを保持するためのもの。
コマンドパラメタMode毎に、テーブルの処理内容を記すと次のようになる。
- anm
- add_new_member
- ジョブを開始する。
- 3つのテーブルを排他ロックし、トランザクションを開始する。
- テーブルmeibo_idから、最新のIdを取得する。
- レコードを読む。
- レコードが存在すれば最大のId+1を、存在しなければ1を、新しい
最大のId(NewId)とする。
- NewIdを新しい最大のIdとして、テーブルmeibo_idに書き戻す。
- テーブルmeiboにメンバーを追加する。
- メンバー情報に、NewIdとバージョン1を加える。
- メンバー情報をレコードに加工する。
- テーブルmeiboにレコードを追加する。
- トランザクションを終了する。
- ジョブを終了する。
- mm
- modify_member
- ジョブを開始する。
- 3つのテーブルを排他ロックし、トランザクションを開始する。
- メンバー情報からIdとバージョン(Version)を得る。
- 索引を使った検索を検索条件(id=Id)で行ない、結果の集合(Set)を得る。
- Versionを1インクリメントして、メンバー情報のバージョンを更新
する。
- メンバー情報をレコード(NewRec)に加工する。
- テーブルmeiboから集合(Set)のレコードを読み込む(Rec)。
- 当該レコードを修正する。
- Recのバージョンと、メンバー情報に与えられていたバージョン
(Version)の一致を確認する。
- テーブルmeiboのRec位置を、新しいレコード(NewRec)で上書きする。
- テーブルmeibo_historyに更新履歴を残す。
- テーブルhistory_tableにRecを追加する。
- トランザクションを終了する。
- ジョブを終了する。
- dm
- delete_member
- ジョブを開始する。
- 3つのテーブルを排他ロックし、トランザクションを開始する。
- メンバー情報からIdとバージョン(Version)を得る。
- 索引を使った検索を検索条件(id=Id)で行ない、結果の集合(Set)を得る。
- Versionを1インクリメントして、メンバー情報のバージョンを更新
する。
- メンバー情報をレコード(NewRec)に加工する。
- テーブルmeiboから集合(Set)のレコードを読み込む(Rec)。
- 当該レコードを消去する。
- Recのバージョンと、メンバー情報に与えられていたバージョン
(Version)の一致を確認する。
- テーブルmeiboのRec位置を消去する。
- テーブルmeibo_historyに更新履歴を残す。
- テーブルhistory_tableにRecを追加する。
- トランザクションを終了する。
- ジョブを終了する。
- scd
- search_current_data
- ジョブを開始する。
- テーブルmeiboとmeibo_historyをreadロックして、
トランザクションを開始する。
- テーブルmeiboを検索する。
- 検索条件に合う集合を選択する。
- 集合で指定されるレコード群を、出力側の要求駆動で読み込む。
- トランザクションを終了する。
- ジョブを終了する。
- shd
- search_history_data
- ジョブを開始する。
- テーブルmeiboとmeibo_historyをreadロックして、
トランザクションを開始する。
- テーブルmeibo_historyを検索する。
- トランザクションを終了する。
- ジョブを終了する。
- sad
- search_all_data
- ジョブを開始する。
- テーブルmeiboとmeibo_historyをreadロックして、
トランザクションを開始する。
- テーブルmeiboとmeibo_historyの両方を検索する。
- トランザクションを終了する。
- ジョブを終了する。