データベースのシステムで新たにDBを追加する方法

解決


まごたん  2007-05-24 00:53:07  No: 26229

財務関係のシステム構築において、月次の集計データを月ごとに個別のファイルで保存するために、新たにDBファイル(月ごとの)を生成したいのですが、どうすればいいでしょう。


かず  2007-05-24 01:23:24  No: 26230

DBファイル=padaroxファイルなら
付属のDataBaseDisktopで作成します。
月ごとのファイルを作らず、1DBで月でFillterを掛け
処理したほうがプログラムが楽ではないでしょうか?


まごたん  2007-05-24 01:33:25  No: 26231

かずさん、早速のRESでありがとうございます。
paradoxですか、アプリの配布をかんがえると、dbExpressぐらいにしたいと思っています。また配布先にDB管理をさせるシステム構成ではないので、1DBだといつかは膨大なデータになったり、管理上は期ごとに別に集計したいために分離したりしたくなったりするのではないかと思うんですが、DBという概念からははずれているんでしょうかね。


HOta  2007-05-24 01:34:25  No: 26232

いろいろなアプローチがありますが、ファイルをテーブルに置き換えれば
考えやすくなるのではないでしょうか.


かず  2007-05-24 06:34:11  No: 26233

一時ファイルを作り、集計や印刷というのは一昔前のCOBOL時代のプログラミングのようですね。
またdbExpressでどんなデータベースを扱いたいのか書かないと答えが返せません。


まごたん  2007-05-25 02:37:25  No: 26234

かずさん、RESをありがとうございます。
dbExpressを選択したのは、不適当かも知れません。もう一度検討します。
やりたいことは、
○  たとえば売上データのような、日々、集積してゆくデータは、月末ごとに独立させたファイルとして保存、管理できるようにしたい。月初めに’空’のDBファイルを生成したい。
○  一つのDBファイルに(月ごとの)テーブルとして蓄積してゆくと、いつか整理をしなければならないときが来るはずで、その仕事のためにDB管理者を用意することができる保証がない。
○  DBでなく、ローカルファイルにするほうが妥当なのかもしれません。
なにかいい方法があれば、教えてください。


かず  2007-05-25 05:53:43  No: 26235

まごたさん

細切れファイルを作るとプログラムが複雑になります。月単位でファイルを作るんですか?管理って何をされるのでしょうか。年間の売上を集計したり分析したるするときには、12ファイルもあると、ゴリゴリ書かなければなりませんよ。1ファイルなら、レポートの集計機能でOKです。

私もかつてはCOBOLをやっていました。当時オフコンでRDBが使えたので、なんでもファイル出力してから処理というプログラムは作った事ありません。理由は一時ファイルを作ると遅くなるし、集計するたびにファイルを生成しなくてはいけないからです。一時ファイルを生成しないで、元のファイルで集計すれば正確な処理ができます。

最近は逆でRDBを使用して何年分ものデータを放り込み、SQLで絞り込んで処理というのが多いようです。データ量が増えれば処理は遅くなります。

効率、業務内容を考え、1ファイルで扱うデータ量を決定します。こうすれば1ファイルが壊れても、全部だめになることもないし、ファイル仕様も年単位で変える事ができ、メンテナンスもファイルサイズが小さいので楽です。
業務にもよりますが、私の場合は1年が多いです。
ローカルデータベースなら、年ごとにファイルを持ち、データ数が大きくならないようにしています。

ローカルDB(Paradox)なら、Delphi7ヘルプファイルに
with Table1 do
begin
  Active := False;
  DatabaseName := 'Delphi_Demos';
  TableName := 'CustInfo';
  TableType := ttParadox;
  EmptyTable;
end;

年単位のファイル切り替えは、プログラム起動時に
with ZumenTable do begin
  Active := False;
  TableName := 'Zumen' + NendoNo + '.DB';
  Active := True;
end;

Paradoxで5万レコードとなると、千件のレコードと比べると1秒ぐらい処理が遅くなります。ほとんど問題ではありませんが。


まごたん  2007-05-26 00:58:50  No: 26236

かずさん、いつもありがとうございます。
月ごとにファイルを持つことの是非はともかくとして、paradox以外ではDBファイルを新規生成する方法はないということでしょうか。
かずさんのご意見で、一年単位のファイルにするというお話ですが、一年経過すると、過去分をどこかに保存して、あらたに空のファイルを作るんだろうと考えられますが、それはアプリ上での操作なんですか、あるいはオペレータの操作なんでしょうか。


HOta  2007-05-26 01:42:00  No: 26237

>paradox以外ではDBファイルを新規生成する方法はないということでしょうか。
SQL文でCreate Tableを使えばテーブルを作成できます。
RDBMSの場合は、ファイルは一つで、その中にTableを作って操作します。
たくさんのレコードを扱うことが前提ですから、検索速度が大事になります。
一つ一つ一時テーブルを作ることは、一般的では無いでしょう。


かず  2007-05-26 03:53:56  No: 26238

私の場合は5年分のファイルを用意します。毎年度一番古い年度を新しい年度にして、ぐるぐる廻します。
これらの処理は素人でもできるようプログラムを作ります。5年で消してほしくない場合は、通常のバックアップを外部媒体にして保管するだけです。
新年度にファイルのデータを消すには、先のEmptyTableを使います。

規模の小さい会社向けには、素人でも運用できるようにして置かないと行けません。難しいRDBなど操作できません。そのためローカルデータベース(Paradox)のファイル共有でプログラムを作成しています。追加料金も無いし。
サーバのバックアップ機能をスケジュールを組んでも良いのですが、これでは素人では理解できません。自分でMOやCD-RWにバックアップするようにして、自分で操作すると、復旧も操作してくれます。

通常のネットワーク管理者の操作は、素人には無縁の世界です。

小規模向けのアプリの事ばかり書きましたが、グローバル企業なら別の考えになります。

DatabaseDisktopにはParadoxファイルの修復機能がありません。(これが嫌われているのかもしれません)
下記URLのDTUTIL32.EXEとTUTIL32.DLLを使用すると簡単にインデックスなどが修復できます。

http://www.davinci-mims.com/Downloads.asp


まごたん  2007-05-28 18:23:35  No: 26239

皆様、いろいろ貴重なご意見ありがとうございました。
総合すると、
○  paradox以外では新しいDBを生成することはできない。
○  一般的には一つのDB上でテーブル操作しかしないモノ。
と考える、ということでしょうか。
参考にさせていただいて、設計を進めることにします。またよろしくお願いします。


HOta  2007-05-28 23:18:13  No: 26240

使い方次第ですね。
他のDBでもTableはCreate Tableを使えば作れます。
しかし、クライアントサーバシステムで、いずれかのクライアントが
勝手にテーブルを作ったり消したりしたら、混乱してしまいます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加