最近、電子ドアロックなどのアクセス制御ハードウェアを管理するかなり古いソフトウェア用のWebベースのレポートインターフェイスを作成するプロジェクトを開始しました。
私はタスクのためにCakePHPを選択しました。それはすべて、データベースにログレコードを照会し、それらをWebサイトに表示することです。ソフトウェアはC++で書かれており、MSDE(Microsoft SQL Server 7.0または2000の縮小版)を使用しており、CakePHPを設定してDBに正常に接続できるようにしました。複数のクラスタ化されたテーブルのデータを統合してクエリする
問題は、このソフトウェアの開発者が、毎日別のテーブルを作成してデータベースにログを保存することを選択したことです。だから、次のようになります。
tbl_DoorEvent_2008_08_07
tbl_DoorEvent_2008_08_08
tbl_DoorEvent_2008_08_09
tbl_DoorEvent_2008_08_10
...
私はMSDEと本当に慣れていないが、私はまだこのようなデータベースを設計し、維持するために許容可能なやり方であることを疑います。私はこの形式ですべての情報をクエリするためにデスクトップソフトウェアがどのようにクエリを解析するかを知りませんが、私のCakePHPアプリケーションはこれを噛み砕くのに本当に苦労しています。
私はWebアプリケーション用のMVCを使いたいと思いますが、CakePHPでDooreventModelを実装する方法がわからないので、すべてのパーティションテーブルから情報が得られます。
私はクエリ全体に対する制限や他のSQL演算子は、それが動作しませんWHERE実行する場合
UNION ALL SELECT * FROM tbl_DoorEvent_2008_08_07
UNION ALL SELECT * FROM tbl_DoorEvent_2008_08_08
....
と作品のこの種を使用したが、のようないくつかのハックを実装しようとしました。
また、Webベースのアプリケーションで追加のデータベースやテーブルを追加または作成せず、既存のものを使用してレポートを表示するので、クラスタ化されたものをすべて含む本当にオプションです。
誰かが私がクエリを実行するたびにすべてのテーブルを1つにまとめてしまうSQLServer関数を思いついてくれることを願っていますが、これは少し楽観的なことを知っています。 そして、ソリューションはCakePHPとMVCの単一モデルとして動作する必要があります。
plzsendzmetehcode? –
ミッチ、どのようなコードですか? – duckyflip