【ノウ】DBアプリ開発ノウハウ【ハウ】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
NGNG・似たようなSQLがあっちこっちのプログラムで出て来るんだけど…
・Viewとかストアドとか、みんながポンポン作っちゃって収拾付かないよ〜。
・分かりやすく長すぎないテーブル項目名のつけかたは?
・見やすい帳票レイアウトって? 入力しやすい画面遷移って?
などなど、悩むところはみんな一緒。
DBアプリ開発のノウハウを語るスレッドです。
0856デフォルトの名無しさん
NGNG−−−−−−−−−−−−−
| ID | 状態 | 子 |
−−−−−−−−−−−−−
| 10 | 元気 | A |
−−−−−−−−−−−−−
| 20 | 病気 | B |
−−−−−−−−−−−−−
| 10 | 元気 | C |
−−−−−−−−−−−−−
■Bというビュー
−−−−−−−−−−−−−
| ID | 親 | 所在 |
−−−−−−−−−−−−−
| 10 | A' | 東京 |
−−−−−−−−−−−−−
| 20 | B' | 埼玉 |
−−−−−−−−−−−−−
から
−−−−−−−−−−−−−−−−−−−−−−−−−−−
| ID | 親 | 所在 | A | B | C |
−−−−−−−−−−−−−−−−−−−−−−−−−−−
| 10 | A' | 東京 | 元気 | | 元気 |
−−−−−−−−−−−−−−−−−−−−−−−−−−−
| 20 | B' | 埼玉 | |病気 | |
−−−−−−−−−−−−−−−−−−−−−−−−−−−
を作りたいんだが、あと一歩のところでできん。親A'の行が2行になって子の状態がわかれちゃうんよね。
どうすれば良い?
0857デフォルトの名無しさん
NGNGSQLではムリポ
なんつーかテーブル設計が・・・
0858デフォルトの名無しさん
NGNG回答ありがとうございます。
私が勉強不足なのかなぁ・・・。そこまでが限界か?
あとはビューから結果を持ってきて言語レベルで編集するしかないのか・・・。はぁ・・・。
0859デフォルトの名無しさん
NGNG項目の数が固定の場合は可能なんでしょうか?
後学の為にご教授ください。
0860856
NGNGA、B、Cという列は可変ではなく固定です。
外部結合でやってたのですが、列が増えたら処理が遅く使い物にならなくなったので
列別名とかDECODEとか使って思考錯誤いるんですが、上記まで行って手詰まりになったので
ここで質問しました。
0861デフォルトの名無しさん
NGNGできたところまででいいのでSQLをしめしてください。
0862デフォルトの名無しさん
NGNGselect A.ID, B.親, B.所在, A.状態, A.子 from A, B where A.ID = B.ID;
までじゃねーの?
>>860
固定になるわけがないと思うのだが
0863856
NGNG>>861
今日解決できなかったら示しますね。
>>862
上記例だとA、B、Cの3項目固定なんですよ。A、B、Cは必ず固定で表示します。
誰も病気でも元気でもなければ何も入らないです。
親、子っていう例が悪かったかな?
親をパソコン、子をパソコンのパーツ(CPU、メモリ、CDROM)としたら、
Aのビューは「パソコンのID、パーツの状態、そのパーツは何か」を示し、
Bのビューは「パソコンのID、パソコン名、パソコンの製作会社」を示していて、
AとBをまとめて見やすくしたいというのが目的ですね。
いづれにせよわかりにくい説明で申し訳ないです。
0864デフォルトの名無しさん
NGNG必要な結果を得る方法がわからないのか、できたけど遅くて
使い物にならなかったのか、どっちなのかはっきりさせよう。
0865856
NGNG本日頑張って完成させました。
ちゃんと検索処理も充分な早さでできました。
外部結合でやっていた時とは比べ物にならないくらい速くなりました。
いろいろ意見をして頂きありがとうございました。
というわけで下記の式でA、B2つのビューから欲しいビューを作りました。
なんか希望の物できたけどMAXとかはせこい気がするなぁ・・・。
まぁ、仕事速く進んだからいいか。
>>864さん
あえて表現するなら
「できたけど遅くて使い物にならなかったので、新しい方法を考えていたけどなかなか必要な結果が得られなかった」ですかね。
0866856
NGNGCREATE VIEW 欲しいビュー名
(
ID,
親,
所在,
Aの状態,
Bの状態,
Cの状態
)
AS
SELECT
VB.ID,
VB.親,
VB.所在,
MAX( DECODE( VA.子, 'A', VA.状態 ) ),
MAX( DECODE( VA.子, 'B', VA.状態 ) ),
MAX( DECODE( VA.子, 'C', VA.状態 ) )
FROM
A VA,
B VB
WHERE
VA.ID=VB.ID
GROUP BY
VB.ID,
VB.親,
VB.所在;
0867856
NGNG式を投稿したのにはじかれてる?
明日載せてみますね・・・。
0868856
NGNG連カキコすいません。
0869デフォルトの名無しさん
NGNG書籍とかサイトとかないですか?
同一業種でも、パターン化は難しいのだろうか?
でもベテラン設計者って、あるていどパターン化していると思うのだが・・・
メシの種だから、なかなか公開されないモノ?
0870デフォルトの名無しさん
NGNG0871デフォルトの名無しさん
NGNGなかなか公開されないんじゃない?
すくなくとも、複雑になるようなケースではそれで客に信用してもらうことになるわけだし。
0872山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0873デフォルトの名無しさん
NGNG知り合いの事業会社が自社で基幹系のシステムを作ることになりました。
販売管理等でユーザー数は100、同時アクセス数は20程度。社内に専用線による
ネットワークは整備済。開発要員は自社でトレーニングして充当するとのことです。
トランザクション量が多めなので、サーバーとRDBはいいものを、ということでUNIX
サーバーにOracleというところまでは仮決まりですがまだ未定。
問題は、アプリの開発ツールをどうするかということなんですが、社内で意見が割れてます。
一人はC/C++/C#のRADツール、もう一人はJAVAのRADツール、あと、Delphiもいます。
決定の最優先事項は、
・RDBとの親和性の高さ(ODBCじゃなくてネイティブで接続可なこと)
です。個人的にはDelphiしかないような気がしてるんですが、ちょっと他の詳しい人の意見も
伺いたく質問させていただきました。みなさんだったらこういう状況で、どのツールを選びますか?
理由も添えて教えていただけないでしょうか。よろしくです。
0874デフォルトの名無しさん
NGNG>C/C++/C#のRADツール
ほう、俺の知らない間に世の中は進歩してるなぁ。ちなみに製品名はなんての?
0875デフォルトの名無しさん
NGNGネイティブの意味がわからんな。
ローカルのDLL触る気か?oo4oにしたいってことか?
転送データ量や、RDBの負荷はちゃんと見積もったのか?
見積もったなら、アーキテクチャの設計に頭使った
ほうがいいんじゃないのか?戦略ミスを戦術でフォローしよう
なんてトーシロな考えはやめろよ。だいたいトーシロがoraの
DLL触ってどうしようっていうんだ?
0876デフォルトの名無しさん
NGNGアプリの詳細くらい書けよ。
Windowsクライアントなのか、Webなのか、サーバーサービスなのか。サーバーOSも。
多分Windowsクライアントなシステムだろうから、オレの推薦はC#。
あと、ORACLE使うならRDBとの親和性なんてどこも同じ。
トランザクションが多いってどれくらいかわからんし、ネイティブで接続って意味もわからん。
アプリとDB間のインタフェースが簡潔なほうがいいというなら.NET+SQLSERVERだと思うけど。
親和性も問題なし。
それからDelphiはどう考えてもなしだろw
そもそもそんなに意見が分かれてる状況で、どれかに絞って開発できるスキルあるのか?w
0877U ◆CZtFsGiu0c
NGNG>決定の最優先事項は、
・RDBとの親和性の高さ(ODBCじゃなくてネイティブで接続可なこと)
少なくともこれだけの条件から、
>個人的にはDelphiしかないような気がしてるんですが、ちょっと他の詳しい人の意見も
伺いたく質問させていただきました。
この結論が出ることはないように思えますが。他に条件はないんですか?
ODBC使わずに接続できる、というのならC/C++/C#/Javaどれでもいいと思います。
おそらくクライアント/サーバ型のアプリケーションということは決まっているようなので、
・アプリケーションの配布方法
・データベース以外の制約
・その言語/ツールに習熟している開発者の数
など問題になってくると思うのですが。
0878デフォルトの名無しさん
NGNG使ったこと無いからしらんが。
たしか、DBが更新されたらクライアントにイベントを送るとか言う特許使ってる
やつだよね。C#のデータセットクラスも、ホントはそれをつけたかったんだろうけど、
やっぱりついてないしな。DelphiはそもそもOracle向けで開発された言語だし
やっぱり良いのかもな。
0879デフォルトの名無しさん
NGNGまぁ、C/C++/C# を全部同一視して提案しているような奴の意見を真に受けないことだ。
C# は重いからやめておけ。.NETは次期Windowでネイティブ実装されてから使うのが吉。
Java も重いけど、Windowsクライアントも unixサーバ上の夜間バッチ処理も
同じ言語でかけるというメリットはあるな。
あと、JWS によるアプリケーション配布、更新。
どーせ、クライアントのUIなんて大したもんじゃないんだろ?
開発要員は自社でトレーニングして充当するって言ってるくらいだし。
であれば、Delphi か VB6 でちょいちょいと開発してしまうのが吉。
まぁ、VB6 を提案する人間が社内にいない、C/C++/C# を同一視してる…
その程度の連中で開発したら、どう考えたってデスマーチだがな。
0880デフォルトの名無しさん
NGNGはっきり言ってバカにしてたけど、帳票なんかも含むばあいだと、
あれほど簡単にDBアプリを開発できるツールは無いと思う。
ただし、下手に作ると保守はたいへん。
0881デフォルトの名無しさん
NGNG重すぎて現場から文句でるだよ。
0882デフォルトの名無しさん
NGNGどれ利用しても要件は満たせるような気がするけど。
結局のところプロジェクトのメンバがどの言語に精通しているかによるかな。
C/SのRADだったらJavaはあんまり生産性がよくないからやめておいたほうがいいかもね。
0883デフォルトの名無しさん
NGNG「二層C/SならJavaやめろ」ってどういう意味?
単純に「GUIクライアントにはJavaやめろ」ということじゃなくて?
キミの書き方だと、C/SのS(サーバサイド)でもJavaが遅いようなニュアンスがあるし、
また、一層モデル(単一プロセスで全処理をこなすJavaアプリケーション)や
三層モデル(たとえばプレゼンテーション層にWebブラウザ+JavaApplet)の場合は
Javaでも遅くない、という意味に取れないこともない。
Javaの大きな問題点は、起動の遅さと、GUIの緩慢さ だね。
これは、GUIクライアントにとっては致命的な問題だ。
0884デフォルトの名無しさん
NGNG同意
0885デフォルトの名無しさん
NGNGコンポーネントもある。ADOでも、oracleドライバ(プロバイダ)
でネイティブ接続は可能。もちDelphiからoo4o、ADOを呼ぶことは可能。
>C/C++ のRADなんてあるのか?
DelphiがRADというなら、
C++ BuilderがC/C++RADツール、これならOracleのlibもincludeできる。
(が、多分やらない、Delと同じコンポが使えるから。)。
>たしか、DBが更新されたらクライアントにイベント
>を送るとか言う特許使ってる やつだよね
それはInterBaseというBorlandのDB製品のこと。Delphiじゃない。
>DelphiはそもそもOracle向けで開発された言語だし
おぃおぃ...そんなガセネタ書いたら、
Delphiスレに晒しちゃうぞ。
>Javaの大きな問題点は、起動の遅さと、GUIの緩慢さ だね。
>これは、GUIクライアントにとっては致命的な問題だ。
Win限定なら(前レスの情報よりクライアント環境はWin以外ないと思うが。)
JavaにはSWTがある。
>2階層のC/SならPowerBuilderが絶対おすすめ。
そうね、さくっとつくるなら、PBがいいね。
VB+TrueGridもいい。もちDelphi+サードパーティGridもいい。
ということで、>>882じゃないけど、何でもイイ!ってわけだ。
プロジェクトメンバによりけりということ。
0886デフォルトの名無しさん
NGNGつか、販売管理ごときであればパッケージを使ったほうが・・・
0887デフォルトの名無しさん
NGNG0888デフォルトの名無しさん
NGNGフルオーダー=車輪の再開発
になるんじゃ。
販売管理で独自性出してどうする、と。
0889デフォルトの名無しさん
NGNG販売を知らない奴の典型。まあ、再発明と再開発を混同してる時点で終わってるが…。
0890デフォルトの名無しさん
NGNGま、顧客自身が独自につくりたがるんだからしょうがないけど。
作り直しの効かない基幹システムをローカルルールで縛りまくって自分の
首締めてるユーザ、結構多いと思うんだけど。
「再開発」については、あえてそう言った。
0891デフォルトの名無しさん
NGNGコボラーの発想。そんな脅しがいつまでも通用すると思ったら大間違い。
>ローカルルールで縛りまくって自分の首締めてるユーザ
システム屋の詭弁。ユーザーが自分の首を締めてるように見えて、実は
設計段階でローカルルールの取り入れ方を誤ってる。
0892デフォルトの名無しさん
NGNG「販売管理ごとき」などと書いたのは悪かったよ。
君が、他人の言葉尻捕まえて文句つけるのが得意なのも十分わかったから、
そろそろ本題に戻ろうよ。
0893デフォルトの名無しさん
NGNGいや、あの、書き方云々ではなくて、パッケージのお話をしてるんだが…。
0894デフォルトの名無しさん
NGNG逃げ出した奴に追い討ちかけんでもえぇやんw
0895デフォルトの名無しさん
NGNG0896デフォルトの名無しさん
NGNGそれ正解
0897デフォルトの名無しさん
NGNG中規模以上のユーザーではパッケージなんて使ってちゃだめだよ。
そもそも販売管理ってのは基幹業務なわけで、そこに特色を出せない企業は
生き残れないよ。(販売管理システムの良し悪しによって、エンドユーザーへの
サービスの質まで左右されるような時代になったからね。)
いまは多様化していて、販売管理の範疇であっても
業種特有のロジックがあれこれと必要になっている。
基幹系システムと情報系システムの境なんて今後どんどんなくなっていくんだから、
パッケージなんて使ってたら、企業の独自性が出せなくて死亡。
販売管理と言ったって、お金と物品の動きだけで済む時代じゃないよ。
0898デフォルトの名無しさん
NGNG>JavaにはSWTがある。
おまえ、SWT使ったことないだろ? Swingに比べればロードされるクラスが少ないけど、
それでも起動は非常に遅い。それと、独自描画を行わない SWT は Swing に比べて
高速だと思われているけど、必ずしもそうではない。
JNI に依存している SWT は、テーブル表示など JNIコールが多発する状況では
Swing よりも遅くなる。
0899デフォルトの名無しさん
NGNGがんばれよ
0900デフォルトの名無しさん
NGNGSWTがWin限定じゃないところじゃなかろうか
0901デフォルトの名無しさん
NGNGもっとがんばりましょう。
0902デフォルトの名無しさん
NGNGはいはい。他人の文章の抜粋はいいから勉強しろ。
0903デフォルトの名無しさん
NGNGあ〜だこ〜だと、ウンチク語る奴がまだいたのか・・・
Javaやってる奴にもいるんだよな・・・内部にアレ使ってるから処理が遅いの早いのとウダウダ・・
0904デフォルトの名無しさん
NGNGパッケージ使ったこと無いだろ。
使えばシステム屋がパッケージ薦めない理由や、少し目端の聞く顧客がフルオーダー
したがる理由がわかるよ。
0905デフォルトの名無しさん
NGNG書き方がひじょーに悪かった。
>(前レスの情報よりクライアント環境はWin以外ないと思うが。)
でも書いてあるように、クライント環境がWinだけでなく、Unix系でX使用等
複数のOSが混在していないということ。
それだと、SWTで使用した場合、複数のクラスモジュール
管理しなくてはいけないから(Javaの利点がなくなってしまう)ね。
(まぁ、クロスコンパイル可能な製品だと同じことがいえるけど。)
>>898
がんばれ(w
0906898
NGNGおっかしいなー。
レス数が900を超えています。1000を超えると表示できなくなるよ。