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の両方を検索する。
    
   
 -  トランザクションを終了する。
   
 -  ジョブを終了する。