(57)【特許請求の範囲】
【請求項１】
最上位から最下位まで複数の階層にわたる複数の部品から製造される製品の原価を計算するデータベース装置であって、
前記複数の部品から抽出した上下関係を有する一対の部品組の全組合せが登録され、かつ各部品組には上位側部品の製造に必要な下位側部品の個数が対応付けられて登録される拡張部品テーブルと、
最下位層の前記部品の価格が予め登録された品目マスタテーブルと、
直近の下位部品から製造される部品を製造する際の加工費が予め登録された加工費マスタテーブルと、
前記製品の原価を算出する原価計算処理部と、
を備え、
前記原価計算処理部は、
最上位層の部品と前記品目マスタテーブルに価格が登録されている最下位層部品とで構成される部品組の全て及び各部品組に対応付けられた個数を前記拡張部品テーブルから抽出し、その抽出した各部品組に含まれる最下位層部品の価格を前記品目マスタテーブルから読み出し、各部品組に対応する個数と価格とを乗算し、その乗算値を加算することによって購入単価の合計値を算出し、
上位側部品に最上位層の部品かつ下位側部品に前記加工費マスタテーブルに加工費が登録されている部品とで構成される部品組の全て及び各部品組に対応付けられた個数を前記拡張部品テーブルから抽出し、その抽出した各部品組に含まれる下位側部品の加工費を前記加工費マスタテーブルから読み出し、各部品組に対応する個数と加工費とを乗算し、その乗算値を加算することによって前記製品の加工費として算出し、
算出した購入単価の合計値と前記製品の加工費とを加算することによって前記製品の原価を計算するデータベース装置。
【請求項２】
前記拡張部品テーブルに登録されている各部品組に、当該部品組に含まれる上位部品を製造する際の加工費を対応付けして登録することによって、前記拡張部品テーブルに前記加工費マスタテーブルを組み込む構成としたことを特徴とする請求項１に記載のデータベース装置。
【請求項３】
前記拡張部品テーブルに登録されている各部品組に、当該部品組に含まれる最下位層部品の価格を対応付けして登録することによって、前記拡張部品テーブルに前記品目マスタテーブルを組み込む構成としたことを特徴とする請求項１または２に記載のデータベース装置。
【請求項４】
最上位から最下位まで複数の階層にわたる複数の部品から製造される製品の原価計算に利用可能なデータテーブルを作成する装置において、
直近の上位・下位の関係にある部品の組に、前記各部品組の上位側部品の製造に必要な下位側部品の個数が対応付けられ予め登録されている直近部品テーブルを参照して、各部品に対して上位層方向に存在する全ての部品を順次探索していくことによって上下関係を有する一対の部品組全てを抽出する手段と、
前記直近部品テーブルから前記各部品組の下位側部品の個数を、直近の下位部品から製造される部品を製造する際の加工費が予め登録された加工費マスタテーブルから前記各部品組の下位側部品の加工費を、最下位層部品の価格が予め登録された品目マスタテーブルから最下位層部品の価格を、それぞれ取り出す手段と、
抽出された前記各部品組に、当該部品組に含まれる最下位層部品の価格と、当該部品組に含まれる下位側部品の個数及び加工費とを対応付けすることでレコードデータを作成して拡張部品テーブルに登録する手段と、
を有し、前記データテーブルとして前記拡張部品テーブルを作成することを特徴とする拡張部品テーブル作成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、製品の原価計算に用いられるデータベース装置および拡張部品テーブル作成装置に係り、特に複雑な原価計算を迅速に実行できるデータベース装置と、当該装置に関連して用いられる拡張部品テーブル作成装置に関する。
【０００２】
【従来の技術】
製品は多数の部品から構成されており、各部品は、さらに下位の部品から構成されている。例えば、図７は装置Ａに関する部品構成を示す樹形図であり、図中製品Ａが部品Ｂ１個と部品Ｃ２個とから製造され、部品Ｂが部品Ｄ２個と部品Ｅ２個とから製造され、部品Ｃが部品Ｅ３個と部品Ｆ１個から製造されるという関係を示す。
【０００３】
製造業において製品の製造原価を求めることは重要であり、このため各部品の原価と、各組立工程において発生する加工費とを用いて、原価計算が行われる。
ここで、通常、下位の部品はある程度の汎用性をもって設計されており、どの部品と組み合わせられるかにより加工費が異なるため、下位の部品をもつ部品（ここでは部品Ａ，Ｂ，Ｃ）については原価が設定されず、末端部品、すなわちこれ以上分解できない部品（ここでは部品Ｄ，Ｅ，Ｆ）にのみ原価が設定されている。
【０００４】
従来、このような原価計算をデータベースを利用して実行する場合、人手による原価計算と同様の手順、つまり、原価の設定されている末端部品の原価と個数とを掛け合わせ、これに末端部品を組立てる際の加工費を加えて上位の部品の原価を求める、という演算を下位から上位へと順次実行する方法が採られていた（例えば特開平９−３４９３８号公報）。
【０００５】
これを図７の例に沿って説明すると、この場合には図８に示すような複数種類のテーブルが利用される。このうち直近部品テーブル１には、直近の上位・下位の関係（以下これを適宜「親子関係」という）にある上位部品（以下適宜「親部品」という）と下位部品（以下適宜「子部品」という）のそれぞれの部品名と、その親部品１個あたりに必要な子部品の個数とが格納されている。品目マスタテーブル２には、末端部品Ｄ，Ｅ，Ｆの各部品名と購入単価とが格納されている。
加工費マスタテーブル３には、子部品を持つ部品Ａ，Ｂ，Ｃの各部品名と加工費とが格納されている。
【０００６】
そして、上述のとおり購入単価の設定されている末端部品の購入単価と個数とを掛け合わせ、これに末端部品を組立てる際の加工費を加えて上位の部品の原価を求める、という演算を下位から上位へと順次実行する方法が、人手による原価計算と同様の手順により実行されるが、実際には、どの部品が末端部品になるかは製品毎に異なるため、逆に上位から下位へと樹形図に沿って探索してゆくことによりその製品に必要な末端部品を特定し（いわゆる縦型探索・深さ優先探索）、特定された末端部品の購入単価と個数の積、当該末端部品に対し親部品を共通にする他の末端部品の購入単価と個数の積、および加工費を加算することにより、親部品の原価を求める、という演算を、下位から上位へと順次実行していた。
【０００７】
具体的には、まず品目マスタテーブル２に基づいて、全ての部品についての部品名と原価の格納された原価テーブル４を作成し、購入単価が設定されている末端部品Ｄ，Ｅ，Ｆ以外の部品については原価を不明（ＮＵＬＬ）としておく。そして、まず親部品を「製品」として、その親部品における子部品の原価を原価テーブル４から求め、子部品の原価が原価テーブル４上で不明（ＮＵＬＬ）の場合には、その子部品の直近下位の部品（以下適宜「孫部品」という）の原価を求める、というように上位から下位へと樹形図が探索されてゆく。そして、最下位である末端部品については原価が原価テーブル４に設定されているので、この末端部品の原価および個数と、加工費マスタテーブル３における加工費とに基づいて、その末端部品に対する親部品の原価が計算でき、このようにして算出された親部品の原価を原価テーブル４に代入（更新）してゆく。この演算を部品Ｂについて行い、次にこれを部品Ｃについて行い、最後に部品Ａについて行う、というように下位から上位へと順次実行することにより、原価テーブル４の全ての部品について原価が算出され原価テーブル４に代入（更新）される。最後に、直近部品テーブル１において親部品を部品Ａとしている部品（Ｂ，Ｃ）の各原価と各個数とを掛け合わせ、これに加工費マスタテーブル３におけるＡの加工費（１００）を加算することにより、製品である部品Ａの原価が算出される。
【０００８】
【発明が解決しようとする課題】
この従来例では、子部品の原価がわからないと親部品の原価が計算できず、子部品の原価を計算するには孫部品の原価を計算しなければなかったため、図７の例において製品の原価を求めるまでに、ＳＱＬ（Structured Query Language）文によるデータベースへの問い合わせが１０回、データベースの更新が３回行われることになる。このため、処理速度の向上に限界があり、また、再帰処理を必要とするため複雑なアプリケーションソフトを作成しなければならず開発に時間がかかるという問題があった。また、テーブルの更新処理が頻繁に起こるため、システムの負担が大きいという問題もあった。
【０００９】
そこで本発明の目的は、処理速度を向上でき、複雑なアプリケーションの開発を不要とし、また実行時のテーブルの更新処理をなくす手段を提供することにある。
【００１０】
【課題を解決するための手段】
本発明に係るデータベース装置は、最上位から最下位まで複数の階層にわたる複数の部品から製造される製品の原価を計算するデータベース装置であって、前記複数の部品から抽出した上下関係を有する一対の部品組の全組合せが登録され、かつ各部品組には上位側部品の製造に必要な下位側部品の個数が対応付けられて登録される拡張部品テーブルと、最下位層の前記部品の価格が予め登録された品目マスタテーブルと、直近の下位部品から製造される部品を製造する際の加工費が予め登録された加工費マスタテーブルと、前記製品の原価を算出する原価計算処理部と、を備え、前記原価計算処理部は、最上位層の部品と前記品目マスタテーブルに価格が登録されている最下位層部品とで構成される部品組の全て及び各部品組に対応付けられた個数を前記拡張部品テーブルから抽出し、その抽出した各部品組に含まれる最下位層部品の価格を前記品目マスタテーブルから読み出し、各部品組に対応する個数と価格とを乗算し、その乗算値を加算することによって購入単価の合計値を算出し、上位側部品に最上位層の部品かつ下位側部品に前記加工費マスタテーブルに加工費が登録されている部品とで構成される部品組の全て及び各部品組に対応付けられた個数を前記拡張部品テーブルから抽出し、その抽出した各部品組に含まれる下位側部品の加工費を前記加工費マスタテーブルから読み出し、各部品組に対応する個数と加工費とを乗算し、その乗算値を加算することによって前記製品の加工費として算出し、算出した購入単価の合計値と前記製品の加工費とを加算することによって前記製品の原価を計算するものである。
【００１５】
また本発明に係るデータベース装置は、前記拡張部品テーブルに登録されている各部品組に、当該部品組に含まれる上位部品を製造する際の加工費に関する情報を対応付けして登録することによって、前記拡張部品テーブルに前記加工費マスタテーブルを組み込む構成としたものである。
【００１６】
また本発明に係るデータベース装置は、前記拡張部品テーブルに登録されている各部品組に、当該部品組に含まれる最下位層部品の価格を対応付けして登録することによって、前記拡張部品テーブルに前記品目マスタテーブルを組み込む構成としたものである。
【００１７】
また本発明に係るデータベース装置は、最上位から最下位まで複数の階層にわたる複数の部品から製造される製品の原価計算に利用可能なデータテーブルを作成する装置において、直近の上位・下位の関係にある部品の組に、前記各部品組の上位側部品の製造に必要な下位側部品の個数が対応付けられ予め登録されている直近部品テーブルを参照して、各部品に対して上位層方向に存在する全ての部品を順次探索していくことによって上下関係を有する一対の部品組全てを抽出する手段と、前記直近部品テーブルから前記各部品組の下位側部品の個数を、直近の下位部品から製造される部品を製造する際の加工費が予め登録された加工費マスタテーブルから前記各部品組の下位側部品の加工費を、最下位層部品の価格が予め登録された品目マスタテーブルから最下位層部品の価格を、それぞれ取り出す手段と、抽出された前記各部品組に、当該部品組に含まれる最下位層部品の価格と、当該部品組に含まれる下位側部品の個数及び加工費とを対応付けすることでレコードデータを作成して拡張部品テーブルに登録する手段とを有し、前記データテーブルとして前記拡張部品テーブルを作成するものである。
【００１９】
【発明の実施の形態】
以下、図面に基づいて本発明の好適な実施の形態について説明する。図１は、本発明の実施の形態に係るデータベース装置５の概略構成図である。図中、データベース装置５は、ユーザとの間で情報をやり取りするユーザインターフェイス６と、ユーザの入力などに基づいて各種入力に対する演算処理と出力とを行う演算部７と、データベース８とを含んで構成されている。
【００２０】
ユーザインターフェイス６の表示装置９はＣＲＴであり、入力装置１０はキーボードおよびマウスである。演算部７は原価計算処理部１１および拡張部品テーブル作成処理部１２を含んで構成されている。データベース８は、直近部品テーブル１、品目マスタテーブル２、および加工費マスタテーブル３を格納している。
【００２１】
なお、この実施の形態のデータベース装置５は、ハードウェアとしては中央処理装置（ＣＰＵ）、メモリ、ハードディスク装置、および上述した表示装置９および入力装置１０などからなるコンピュータシステムとして構成されており、各コンピュータプログラムおよびデータベース８はテキストまたはバイナリのデータとしてハードディスク装置に格納されている。
【００２２】
図２および図３は本発明の実施の形態における拡張部品テーブル作成処理を示すフロー図である。この処理は、拡張部品テーブル作成処理部１２によって実行され、直近部品テーブル１および品目マスタテーブル２に基づいて、図４に示すような拡張部品テーブル１３を作成するものである。ここにいう「拡張部品テーブル」とは、直近の親子関係（つまり、ある部品に対するその子部品）を特定する情報のみならず、ある部品に対する孫部品や、その子部品・孫部品など、当該ある部品に関連する（つまり、当該ある部品の製造に用いられる）全ての階層の下位部品を特定する情報を１対１対応で含むテーブルをいうものである。しかして図２および図３のフロー図の処理においては、変数として、Ｓ（スタック）、Ｔ（拡張部品表）、STACK_CNT（Ｓの最大値、すなわちスタックカウンタ値）、TABLE_CNT(Ｔの最大値、すなわちテーブルカウンタ値)、Ｉ，"製品","部品","個数","製品フラグ",START_RECORD(読み込み開始レコード番号)を使用する。
【００２３】
図２において、まず初期設定として、スタックカウンタ値を０に設定し、またテーブルカウンタ値を０に設定すると共に、直近部品テーブル１から"親"が'製品'の行を検索し、見つかればその行番号をＩとし、また見つからない場合にはＩ＝０とする（Ｓ１０１）。その結果、ここでは{'製品','A',１}の組が１行目に見つかるので、Ｉは１となる。
【００２４】
次に、Ｉが０以下かを判断する（Ｓ１０２）。これは、Ｉが０、すなわち"製品"を親とする部品が存在しないことは、当該直近部品テーブル１に当該"製品"を構成する部品が存在しないことを意味するので、かかる場合に処理を終了させるためである。そして、ここではI＝１＞０なのでステップＳ１０２で否定判定される。
【００２５】
この場合には、部品がそのまま"製品"となるような部品（ここでは部品Ａ）についての変換処理が行われる（Ｓ１０３）。まず"製品"および"部品"に、直近部品テーブル１の[I]行（ここでは第１行）の"子"の値、すなわち'A'を設定する。また、"個数"に直近部品テーブル１の[I]行（ここでは第１行）の"個数"の値、すなわち１を設定する。
【００２６】
そして、スタックＳ[STACK_CNT]に{"部品","個数",I}、即ち{'A',１,１}を設定する。またスタックカウンタ値にSTACK_CNT + １の値、すなわち１を設定する。
【００２７】
また、"製品フラグ"に１を設定し、"LEVEL"に０を設定し、"総個数"に１を設定する。そして拡張部品テーブル値T[TABLE_CNT] に{"部品","部品","製品フラグ","LEVEL","総個数" }の値、すなわち{'A','A',１,０,１}を設定することにより、拡張部品テーブル１３の第１行目が、図５（ａ）のとおり作成される。最後に、テーブルカウンタ値にTABLE_CNT+１の値、すなわち１を設定する。以上が、部品がそのまま"製品"となるような部品（ここでは部品Ａ）についての変換処理であり、このステップＳ１０３で生成される拡張部品テーブル１３の行（本例では第１行のみ）では、"製品フラグ"の列は１、"深さ"の列は０が設定される。
【００２８】
次に、ステップＳ１０４において、読み込み開始レコード番号START_RECORDに１を設定する（Ｓ１０４）。
【００２９】
次に、ステップＳ１０５において、直近部品テーブル１のSTART_RECORD行目（すなわち１行目）から、直近部品テーブル１において"親"が"部品"（すなわちＡ）である行を検索し、見つかればその行番号をＩとし、また見つからない場合にはＩ＝０とする。ここでは２行目に{'A','B',１}が見つかるので、この行番号によりＩを２と設定する。
【００３０】
次に、I＝０か否かを判断する（Ｓ１０６）。これは、Ｉが０、すなわち"部品"（すなわちＡ）を親とする部品が存在しないことは、直近部品テーブル１にＡを構成する部品が存在しないことを意味するので、かかる場合に、後述する末端部品としての処理を行うためである。そして、ここではI＝２＞０なので否定判定され、図３の処理ルーチンに移行する。
【００３１】
図３の処理ルーチンでは、まず、拡張部品テーブル１３において”親”と”子孫”の値が共に子部品となるような場合についての変換処理、すなわち、子部品自体についての情報を作成する処理が行われる（Ｓ１１１）。まず、"部品"に直近部品テーブル１の[I]行（ここでは第２行）の"子"の値、すなわち'B'を設定する。また、"個数"に直近部品テーブル１の[I]行（ここでは第２行）の"個数"の値、すなわち１を設定する。
【００３２】
そして、スタックS[STACK_CNT]に、その２行目として{"部品","個数",I}の値、すなわち{B,１,２}を設定する。またスタックカウンタ値にSTACK_CNT+１の値、すなわち２を設定する。
【００３３】
また、"製品フラグ"に０を設定し、"LEVEL"に０を設定し、"総個数"に１を設定する。そして拡張部品テーブル値T[TABLE_CNT]に{"部品","部品","製品フラグ",LEVEL,"総個数"}の値、すなわち{'B','B',０,０,１}を設定することにより、拡張部品テーブル１３の第２行目が、図５（ｂ）のとおり作成される。最後に、テーブルカウンタ値にTABLE_CNT+１の値、すなわち２を設定する。以上が子部品自体についての情報に係る変換処理であり、このステップＳ１１１で生成される拡張部品テーブル１３の行（本例では第２・４・７・１０・１２・１５行）では、"製品フラグ"および"深さ"の列は０が設定される。
【００３４】
次に、ステップＳ１１２において、IにSTACK_CNT-２の値、すなわち０を設定する。
【００３５】
次に、ステップＳ１１３において、I＞＝０か否かを判断する。これは、ＩすなわちSTACK_CNT-２の値が負である場合は、当該部品がスタックにおける最上位に位置し、下位から上位への探索において当該部品に対する親部品が存在しなくなったことを意味するので、かかる場合に変換処理を終了して拡張部品テーブル１３の内容につき後述する出力処理を行うためである。そして、ここでは未だI＝０＞＝０なので肯定判定され、ステップＳ１１４に移行する。
【００３６】
ステップＳ１１４では、親部品とそれに関連する部品（以下適宜「子孫部品」という）との関係にある場合についての変換処理が行われる。まず、LEVELにLEVEL+１の値、すなわち１を設定する。また、"親"にスタックＳの行番号[I]（ここでは０、すなわち第１行）の"部品"の値、すなわち'A'を設定する（なお、スタックＳにおいては第１行の行番号が０となっている）。また、"親"が製品であれば"製品フラグ"に１を、それ以外であれば"製品フラグ"に０を設定する。
【００３７】
また、"個数"にスタックＳの行番号[I+１]（ここでは行番号１、すなわち第２行）の"個数"の値、すなわち１を設定する。また、先にステップＳ１１１で設定された"総個数"（ここでは１）に"総個数"*"個数"の値、すなわち１を設定する。
【００３８】
そして拡張部品テーブル値T[TABLE_CNT]に{"親","部品","製品フラグ",LEVEL,"総個数"}の値、すなわち{'A','B',１,１,１}を設定することにより、拡張部品テーブル１３の第３行目が、図５（ｂ）のとおり作成される。最後に、テーブルカウンタ値にTABLE_CNT+１の値、すなわち３を設定する（Ｓ１１４）。以上が親部品と子孫部品の関係にある場合についての変換処理であり、このステップＳ１１４で生成される拡張部品テーブル１３の行（本例では第３・５・６・８・９・１１・１３・１４・１６・１７行）では、"深さ"の列は親部品との階層差に応じた０以外の値が設定される。
【００３９】
次に、ステップＳ１１５において、I（ここでは０）にI-１の値、すなわち−１を設定する。これは、下位から上位へと当該部品に対する親部品を探索するための処理である。
【００４０】
次に、ステップＳ１１３において、再びI＞＝０か否かを判断するが、ここではI＝（−１）＜０なので否定判定され、図２の処理ルーチンにおけるステップＳ１０４に移行する。
【００４１】
ステップＳ１０４では、先程と同様に読み込み開始レコード番号START_RECORDに１が設定され、次にステップＳ１０５において、直近部品テーブル１のSTART_RECORD行目（すなわち１行目）から、直近部品テーブル１において"親"が"部品"（すなわちＡ）である行を検索し、見つかればその行番号をＩとし、また見つからない場合にはＩ＝０とする。ここでは４行目に{'B','D',２}が見つかるので、この行番号によりＩを４と設定する。
【００４２】
次に、ステップＳ１０６では、先程と同様にI＝０か否かを判断するが、ここではI＝４＞０なので再び否定判定され、図３の処理ルーチンに移行する。すなわち、ステップ１０５においてＩ＝０が設定されるまでの間、つまり変換処理済みの部品の他に、それと共通の親部品における他の子部品が存在する間は、図３の処理ルーチンによる処理が繰り返され、Ｉ＝０となったとき、すなわち共通の親部品における他の子部品が存在しなくなったときに、親部品の処理に移行すべく、処理はステップＳ１０７に移行する。
【００４３】
ステップＳ１０７では、スタックを削る操作として、スタックカウンタ値にSTACK_CNT-１の値が設定される。なお、ここではスタックカウンタ値が減算され、表示上は図５（ｄ）のようにスタックＳの第３行が表示されなくなるが、スタックＳの第３行に係るデータ自体はクリアされず残されている。そしてステップＳ１０８において、このスタックカウンタ値が１未満であるかが判断される。これは、スタックカウンタ値が１未満である場合は、当該部品がスタックにおける最上位に位置し、下位から上位への探索において当該部品に対する親部品が存在しなくなったことを意味するので、かかる場合に変換処理を終了して拡張部品テーブル１３の内容につき後述する出力処理を行うためである。そして、ここでスタックカウンタ値が１以上である間は、ステップＳ１０７で否定判定され、処理はステップＳ１０９に移行する。
【００４４】
ステップＳ１０９では、読み込み開始レコード番号START_RECORDにスタックSの[STACK_CNT]行のＩ（すなわち、スタックＳにおける"読み込み済み"の値）+１の値、例えばスタックカウンタ値STACK_CNTが２であればスタックＳの３行目の"読み込み済み"の値（すなわち４）に１を加算した値である５を設定する。また、"部品"にスタックSの[STACK_CNT-１]行の"部品"の値、例えば'B'を設定する。これは、検索対象を更新する操作、すなわち、親部品を共通にする他の子部品があるかの探索に切換える操作である。このようにしてステップＳ１０５からステップＳ１０９では、当該親部品において未変換の子部品が存在しなくなった時点でステップＳ１０５に戻る、という処理が繰り返し実行される。なお、ここで読み込み開始レコード番号START_RECORDの設定においてスタックＳの[STACK_CNT]行の"読み込み済み"の値に１を加算するのは、直近部品テーブル１において同じ行を２度読み込んでしまう事態を避けるためである。
【００４５】
このようにして、拡張部品テーブル１３が１行ずつ作成されてゆき、最後に、ステップＳ１０８において、スタックカウンタ値が１未満である場合は、当該部品がスタックにおける最上位に位置し、下位から上位への探索において当該部品に対する親部品が存在しなくなったことを意味するので、変換処理を終了してステップＳ１１０に移行し、拡張部品テーブル１３の内容について出力処理が行われる。この出力処理は例えば拡張部品テーブル１３を内容とするファイルの作成、表示装置９への表示、または図示しないプリンタからのプリントアウトによって行われる。以上で変換処理が終了し、図４のとおりの拡張部品テーブル１３が完成する。
【００４６】
この拡張部品テーブル１３を用いて原価計算を実行するには、原価計算処理部１１において次の数１の演算を実行すればよい。
【００４７】
0003945992.tif 000002
【００４８】
この数１の演算の実行によって、原価計算処理部１１では、以下の処理を行う。
【００４９】
この処理は、まず、拡張部品テーブル１３の各行の中から、”子孫”が末端部品のいずれかであり、且つ、”親”が最上位の部品の行を抽出する。そして、抽出された各行毎に品目マスタテーブル２で得られる”購入単価”と拡張部品テーブル１３で得られる”個数”とを乗算し、得られた乗算値を加算して、製品の”購入単価”を算出する。
【００５０】
次に、拡張部品テーブル１３の各行の中から、”子孫”が末端部品に体の部品のいずれかであり、且つ、”親”が最上位の部品の行を抽出する。そして、抽出された各行毎に加工費マスタテーブル３で得られる”加工費”と拡張部品テーブル１３で得られる”個数”とを乗算し、得られた乗算値を加算して、製品の”加工費”を算出する。さらに、上記処理で得られた製品の”購入単価”と”加工費”を加算することにより、製品の原価が得られる。
【００５１】
次に、具体的な処理内容について説明する。
【００５２】
まず、”購入単価”の計算では、拡張部品テーブル１３の各行の中から、”子孫”の項目が品目マスタテーブル２の”部品”に設定された”Ｄ”、”Ｅ”、”Ｆ”のいずれかであり、且つ、”親”の項目が最上位の部品である部品”Ａ”の行を抽出する。その結果、拡張部品テーブル１３の６，９，１４，１７行が抽出される。次に、抽出された各行の”子孫”に設定された部品の”購入単価”の値を品目マスタテーブル２から読み出して、この”購入単価”の値と、拡張部品テーブル１３の”個数”の値とを掛け合わせる。
【００５３】
即ち、拡張部品テーブル１３の６行目については、”子孫”に”Ｄ”が設定されているので、品目マスタテーブル２から”購入単価”として１００を得る。また、拡張部品テーブル１３の６行目には”個数”として２が設定されているので、１００×２＝２００が得られる。同様に、拡張部品テーブル１３の９行目については、”子孫”に”Ｅ”が設定されているので、品目マスタテーブル２から”購入単価”として２００を得る。また、拡張部品テーブル１３の９行目には”個数”として２が設定されているので、２００×２＝４００が得られる。
【００５４】
さらに、拡張部品テーブル１３の１４行目については、”子孫”に”Ｅ”が設定されているので、品目マスタテーブル２から”購入単価”として２００を得る。また、拡張部品テーブル１３の１４行目には”個数”として６が設定されているので、２００×６＝１２００が得られる。また、拡張部品テーブル１３の１７行目については、”子孫”に”Ｆ”が設定されているので、品目マスタテーブル２から”購入単価”として１００を得る。また、拡張部品テーブル１３の１７行目には”個数”として２が設定されているので、１００×２＝２００が得られる。そして、各行で掛け合わされた値を加算することにより、”購入単価”の合計値として（２００＋４００＋１２００＋２００＝２０００）が得られる。
【００５５】
次に、”加工費”の計算では、拡張部品テーブル１３の各行の中から、”子孫”の項目が加工費マスタテーブル３の”部品”に設定された”Ａ”、”Ｂ”、”Ｃ”のいずれかであり、且つ、”親”の項目が最上位の部品である部品”Ａ”の行を抽出する。その結果、拡張部品テーブル１３の１、３、１１行が抽出される。次に、抽出された各行の”子孫”に設定された部品の”加工費”の値を加工費マスタテーブル３から読み出して、この”加工費”の値と、拡張部品テーブル１３の”個数”の値とを掛け合わせる。
【００５６】
即ち、拡張部品テーブル１３の１行目については、”子孫”に”Ａ”が設定されているので、加工費マスタテーブル３から”加工費”として１００を得る。また、拡張部品テーブル１３の１行目には”個数”として１が設定されているので、１００×１＝１００が得られる。同様に、拡張部品テーブル１３の３行目については、”子孫”に”Ｂ”が設定されているので、加工費マスタテーブル３から”加工費”として２００を得る。また、拡張部品テーブル１３の３行目には”個数”として１が設定されているので、２００×１＝２００が得られる。
【００５７】
さらに、拡張部品テーブル１３の１１行目については、”子孫”に”Ｃ”が設定されているので、加工費マスタテーブル３から”加工費”として１００を得る。また、拡張部品テーブル１３の１１行目には”個数”として２が設定されているので、１００×２＝２００が得られる。そして、各行で掛け合わされた値を加算することにより、”加工費”の合計値として（１００＋２００＋２００＝５００）が得られる。
【００５８】
以上の演算で得られた”購入単価”の合計値２０００と、”加工費”の合計値５００とが更に加算され、製品の原価２５００が得られる。
【００５９】
このように、この実施の形態によれば、複数の部品から抽出した上下関係を有する一対の部品組の全組合せを含む拡張部品テーブル１３を備えたので、この拡張部品テーブル１３が関連する下位部品を特定する情報（すなわち、"子孫"の値）を各部品について且つ前記関連する下位部品のそれぞれについて含むこととなる。したがって、拡張部品テーブル１３および品目マスタテーブル２に基づいて原価計算処理部１１が製品の原価を算出するにあたり、孫部品や子部品の原価を算出してから親部品の原価を算出するような階層的処理が不要となり、これによりデータベース８への問い合わせ回数を少なくでき、したがって処理速度を向上できると共に、再帰処理が不要であるためアプリケーションソフトをきわめて簡易に作成できる。また、データベース８の更新も不要となり、原価算出の際のシステムの負担を軽減できる。このことは、製品を構成する部品が最上位から最下位までの三以上の階層にわたって存在する場合に特に好適である。
【００６０】
また、拡張部品テーブル１３が各部品に関連する下位部品の個数の情報を含むこととしたので、同種の下位部品が複数用いられる場合にも、各下位部品の必要個数を考慮した原価計算を実行できる。
【００６１】
また、直近の下位部品から製造される部品を製造する際の加工費の情報を前記製造される部品のそれぞれについて含んだ加工費マスタテーブル３を備え、原価計算処理部が加工費マスタテーブル３の情報をも用いて製品の原価を算出するので、各部品の原価に加え各組立工程において加工費が発生する場合に、これを考慮した原価計算を実行できる。
【００６２】
また、実施の形態のデータベース装置１における図２および図３の処理ルーチンの実行により、上記の原価計算に用いられる拡張部品テーブル１３を、品目マスタテーブル２と直近部品テーブル１とに基づいて容易に提供できる。
【００６３】
なお、上記実施の形態では、拡張部品テーブル１３、品目マスタテーブル２および加工費マスタテーブル３を別個に構成したが、このような構成に代えて、図６に示すように、品目マスタテーブル２の"購入単価"列の値と、加工費マスタテーブル３の"加工費"列の値とを組み込んだ拡張部品テーブル１４を作成して、これを用いて原価計算を行ってもよい。この変形例では、拡張部品テーブル１４において"子孫"にある部品の加工費を、加工費マスタテーブル３から読み出して拡張部品テーブル１４の"加工費"列の値として組み込み、また、拡張部品テーブル１４において"子孫"にある部品の購入単価を、品目マスタテーブル２から読み出して拡張部品テーブル１４の"購入単価"列の値として組み込んでいる。また、部品Ｅは、製品である部品Ａからみて部品Ｂを経由して使用される場合と、部品Ｃを経由して使用される場合とがあるため、両者を区別するため、後者の場合の部品名をＥ２としている。
【００６４】
しかして、この変形例の拡張部品テーブル１４を用いて原価計算を実行するには、原価計算処理部１１において次の数２の演算を実行すればよい。
【００６５】
［数２］
SELECT SUM(("価格" + "加工費") * "個数" ) FROM "拡張部品テーブル" WHERE "親" ＝ 'A'
【００６６】
この数２の演算によって、原価計算処理部１１では、以下の処理を行う。
【００６７】
この処理は、まず、拡張部品テーブル１４の各行の中から、”親”が最上位の部品の行を抽出する。そして、抽出された各行ごとに（（”購入単価”＋”加工費”）×”個数”）の演算を行い、得られた値を加算することにより、製品の原価が得られる。
【００６８】
次に、具体的な処理内容について説明する。
【００６９】
まず、拡張部品テーブル１４の各行の中から、”親”の項目が最上位の部品である部品”Ａ”の行を抽出する。その結果、拡張部品テーブル１４の１，３，６，９，１１，１４，１７行が抽出される。次に、抽出された各行ごとに”購入単価”の値と”加工費”の値とを加算して、得られた値に”個数”の値を乗算する。即ち、拡張部品テーブル１４の１行目については、”購入単価”、”加工費”、”個数２がそれぞれ０、１００、１なので、乗算値（０＋１００）×１＝１００が得られる。同様に、３行目の乗算値として（０＋２００）×１＝２００が、６行目の乗算値として（１００＋０）×２＝２００が、９行目の乗算値として（２００＋０）×２＝４００が、１１行目の乗算値として（０＋１００）×２＝２００が、１４行目の乗算値として（２００＋０）×６＝１２００が、１７行目の乗算値として（１００＋０）×２＝２００がそれぞれ得られる。そして、全ての乗算値１００、２００、２００、４００、２００、１２００、２００を加算することにより、製品の原価２５００が得られる。
【００７０】
この変形例によれば、単一の拡張部品テーブル１４に、加工費と購入単価の情報をも組み込んだので、原価計算処理部１１は拡張部品テーブル１４にのみアクセスすれば足り、処理速度を一層向上できる。
【００７１】
なお、上記実施の形態では本発明をスタンドアロン環境のシステムにおいて実現した構成について説明したが、本発明は、かかる構成のほかクライアントサーバシステムとして実現することも可能であり、サーバマシン側に拡張部品テーブル作成処理部１２等を設置し、その他の機能をクライアントマシンに設置する等、任意の構成を採用することができ、かかる構成も本発明の範疇に属するものである。
【００７２】
【発明の効果】
本発明によれば、複数の部品から抽出した上下関係を有する一対の部品組の全組合せを含む拡張部品テーブルを備えたので、拡張部品テーブルおよび品目マスタテーブルに基づいて原価計算処理部が製品の原価を算出するにあたり、孫部品や子部品の原価を算出してから親部品の原価を算出するような階層的処理が不要となり、これによりデータベースへの問い合わせ回数を少なくでき、したがって処理速度を向上できると共に、再帰処理が不要であるためアプリケーションソフトをきわめて簡易に作成できる。また、データベースの更新も不要となり、原価算出の際のシステムの負担を軽減できる。
【００７３】
また本発明によれば、原価計算処理部において、拡張部品テーブルの部品組の中から最上位の部品を上位側に含む部品組を抽出し、これらの部品組の下位側の部品の価格を品目マスタテーブルから読み出し、読み出した価格を加算して製品の原価を算出することとしたので、上記各効果を簡易な構成で実現できる。
【００７４】
また本発明によれば、拡張部品テーブルが部品組の下位側の部品の個数の情報を含むこととしたので、同種の下位側の部品が複数用いられる場合にも各下位側の部品の必要個数を考慮した原価計算を実行できる。
【００７５】
また本発明によれば、拡張部品テーブルの部品組の中から最上位の部品を上位側に含む部品組を抽出し、これらの部品組の下位側の部品の価格を前記品目マスターテーブルから読み出すと共にこの部品の個数を拡張部品テーブルから読み出し、読み出した価格に部品の個数を乗算し、乗算した値を加算して製品の原価を算出することとしたので、各下位側の部品の価格と必要個数を考慮した原価計算を実行できる。
【００７６】
また本発明によれば、直近の下位部品から製造される部品を製造する際の加工費の情報を前記製造される部品のそれぞれについて含んだ加工費マスタテーブルを備え、原価計算処理部が加工費マスタテーブルの情報をも用いて製品の原価を算出するので、各部品の原価に加え各組立工程において加工費が発生する場合に、これを考慮した原価計算を実行できる。
【００７７】
また本発明によれば、拡張部品テーブルに、複数の部品から抽出した上下関係を有する一対の部品組の全組合せと、部品組の下位側の部品の価格の情報および個数の情報とを含めることにより、原価計算処理部が単一の拡張部品テーブルにアクセスすれば足りることとなり、処理速度を一層向上できる。
【００７８】
また本発明によれば、原価計算処理部において、拡張部品テーブルの部品組の中から最上位の部品を上位側に含む部品組を抽出し、これらの部品組の下位側の部品の価格および個数を拡張部品テーブルから読み出し、読み出した価格に部品の個数を乗算し、乗算した値を加算して製品の原価を算出することとしたので、拡張部品テーブルに部品組の下位側の部品の価格の情報および個数の情報を含ませた構成において、各下位側の部品の価格と必要個数を考慮した原価計算を実行できる。
【００７９】
また本発明によれば、拡張部品テーブルに、直近の下位部品から製造される部品の加工費の情報を含ませ、原価計算処理部は部品の加工費の情報をも用いて製品の原価を算出することとしたので、拡張部品テーブルに部品組の下位側の部品の価格の情報および個数の情報を含ませた構成において、加工費が発生する場合に、これを考慮した原価計算を実行できる。
【００８０】
また本発明によれば、上記の原価計算に用いられる拡張部品テーブルを、品目マスタテーブルと直近部品テーブルとに基づいて容易に提供できる。
【図面の簡単な説明】
【図１】  本発明の実施の形態の構成の概略を示すブロック図である。
【図２】  実施の形態における処理例を示すフロー図である。
【図３】  実施の形態における処理例を示すフロー図である。
【図４】  拡張部品テーブルを示す説明図である。
【図５】  （ａ）ないし（ｄ）は拡張部品テーブルの作成処理における同テーブルとスタックとを示す説明図である。
【図６】  拡張部品テーブルの変形例を示す説明図である。
【図７】  部品の上位下位関係(親子関係）を示す樹形図である。
【図８】  直近部品テーブル、品目マスタテーブル、加工費マスタテーブルおよび原価テーブルを示す説明図である。
【符号の説明】
１  直近部品テーブル、２  品目マスタテーブル、３  加工費マスタテーブル、４  原価テーブル、５  データベース装置、６  ユーザインターフェイス、７演算部、８  データベース、９  表示装置、１０  入力装置、１１  原価計算処理部、１２  拡張部品テーブル作成処理部、１３，１４  拡張部品テーブル、Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｅ２，Ｆ  部品。
【図１】
0003945992.tif 000003
【図２】
0003945992.tif 000004
【図３】
0003945992.tif 000005
【図４】
0003945992.tif 000006
【図５】
0003945992.tif 000007
【図６】
0003945992.tif 000008
【図７】
0003945992.tif 000009
【図８】
0003945992.tif 000010