「クラス」とか「SQL」とか、大雑把過ぎる切りわけがあるから混乱をきたす気がしている。
ので、ちと役割分担を試みてみたり。
:クラス3種:
部品クラス:
機能ベース。
同一機能なら同じクラスになる。九分九厘、「業務クラス」とか「より複雑な部品クラス」を作るときの部品。
構造体クラス:
データベース。
単純にデータを固まりで扱いたいとき用。業務クラスの戻り値で使ったりもするし、MagicWeaponの場合、これにDB系とcgi_request系、template_engine系の部品を足し込んで処理してたりもする(data_clump)。
業務クラス:
役割ベース。
通常、クラス切りで一番大切だし重要視されているのはここ。「同じ役割である」なら同一クラスにするべきだが、「たまたま同じ動きをするんだけれども役割/意味合いが違う」場合、このレイヤーでは別クラスにするべき。
:SQL2種:
検索SQL:
「nレコードを特定するキー群を取得する」ためのSQL。
このタイミングにおいて、キー配列以外は取得しないようにする。
取得SQL:
「指定されたキー群から該当レコードの必要なカラムを取得する」ためのSQL。
SQLは多分本当はこれに「集計」とかあるはずなんだけど…DB負荷を考えると、出来ればあんまりやらせたくないような。
理想としては「定期的にデータをデュプリして、副DB側で重たい集計とかをやらせる」と楽なんだろうなぁ、と。
まだアイデアがまとまらんので、一端、SQLは3種にせず2種にしておく。
多分。個々に、作り方考え方が異なるはずなので。
…それにしてもまだ壮絶にドラフトな発想だなぁ orz