何故データベース設計は軽視されるのか?
何故データベース設計は軽視されるのか?
ここでいうデータベース設計とは、
特定の業務システムにおける
テーブルレイアウトを設計し、決める作業であるとします。
業務システムにおいては、
このデータベース設計(テーブル設計)は仕様そのものを定義する作業にも
近いと思いますし、この設計は開発工程やその後の運用における品質を
絶対的に左右するものだと思っています。
逆にこの設計があまりにも実現すべき仕様と比較し不整合なため、
その後の開発工程がデスマーチに陥ることも少なくないのではないでしょうか?
にも関わらず、正規化程度も理解できないような担当者が
この設計を行っていたり、業務システムの受託開発において、
「テーブルレイアウトを決める」という作業が、あまりにも軽視されているような
気がしています。
みなさんの現場ではどうでしょうか?
ご意見などお聞かせください。
いつも自分の意見が取り入れなくてストレス溜め込んでるのだろうな。
だれもオープン系のシステムにしてくれないwww
Mが従来通りの路線で行くのを理解できないほうが、現場の金融系の実体を知らん厨房でしょ。
だからオープン系のシステムにこだわり続ける。
実務やってる現場は、結局システムの中身なんてどうでも良いし。ちゃんとシステムが動く実績がある事が重要。
オープン系って何日も復旧できない事態って本当に存在しないの?
全部のオープン系システムの事態を把握してるのも怪しいが。 >>101
1つの長大なテーブルをいくつものPGでいくつもいくつも作るシステムといえば伝わるかな? >実務やってる現場は、結局システムの中身なんてどうでも良いし。ちゃんとシステムが動く実績がある事が重要。
現に動いてないと言う実態を知らんのか?
あのメガバンのメンテナンスと言う名の停止っぷりは半端ないが。
当初のスケジュールがどんどん遅延して何年かけて統合するつもりなのか知らんが、
現場はいい迷惑だ。 噂によく聞くコボラーってやつか。
本当にそんな人種いるの?
それならExcelでいいじゃんよw >>100
俺は別にコンプレックスをもって言ってる気はないんだがな
お前のいうホントのことって何だ?
まあ、お前がRDB使ってないのはバカ基準で底辺のアホシステムだと
考えてるというのはよくわかった
まあ、思っててもあんまり簡単に他人をバカだアホだ底辺だといわんほうが良いよ
>>104
オープンだろうが大型汎用機だろうが関係なく、あんな大規模なシステム統合を本気で丁寧に障害なく
進めるならあれくらいは当然だと思うよ。
見切り発車のMとみっちり石橋たたきのM。どちらがいいか経営者には良い判断サンプルになったんじゃないか?
石橋を叩くのを選べるほど金が使えるのはMくらいだろうけど。システム部長は石橋を叩けるだけ叩くのが仕事だわな プロセス中心で考えるエンジニアとデータ中心で考えるエンジニアが
理解し合うのははっきり言って無理 お互いに相手の領域を理解すれば効率が何倍もあがるというのに。 >>109
いや相容れないだろ。このスレ読んでもわかるように
それぞれの優先順位が違いすぎるもの。
プログラム言語の違い以上に深い隔たりがあると思う。
新人の時からデータ中心アプローチをたたきこまれた俺としては、
92さんの文章は少し挑発的だけど、内容はけっこう共感できるよ。 というか、
>>1によると、ここでは「業務システム」についての設計の話だそうだから、
データ中心で考えるのが正解ではないのか?
>>109
理解するだけではだめだな。妥協が必要
ただ、その妥協点は、かなりどっちかよりでないと成立しない
実際は設計するときにどっちの考え方でやるか統一しとかないとだめだな
>>112
業務システムの設計だから、データ中心が正解だという理由を説明してほしいもんだが
プロセス中心の設計は間違いなのか?
データーベース設計の話だから、データ中心の方が良いというのなら理解できるんだがな
業務システムをプロセス中心で開発するってのは
たいがいにおいて業務プロセス中心に開発するんじゃなくて
システムプロセス中心に開発するの意だからな かくしてエンジニアのオナニー状態の使えないシステムが作られて行く訳だな。
そして次の契約が取れず淘汰されて行く。 >>115
いや、逆でエンジニアにオナニーさせたほうがいいものができるぜ。
マネージャのオナニーの結果、よくないものができてるのが現状でしょ?
マネージャとエンジニアのセックスなんてありえないでしょ? >>115
DB設計は家を建てるのに例えれば基礎工事みたいなもんでしょ
外観や内装に注文つける客はいても、基礎工事に注文つける客はいないでしょ 見えにくい部分だけあって理解も無いから。
ここは地盤が緩いから事前にこれだけアンカー打ち込んでおけと
指示しても施工出来る人がいないとか後での設計変更が云々とか。
DB設計軽視はシステム開発の耐震偽装みたいなものかな。 >>116
一番怖いのは、営業と客のオナニー
日本ではマネージメント専門の人はプロジェクトにいないのが普通
そういう意味では真のマネージャーなぞ存在しない
>>1
情報系の人間がただでさえ軽んじられてててさ、
当社では工学部おっけ〜、文系でもおっけ〜、だれでもおっけ〜みたいな会社ばっかで
まともに学校でDBについて勉強したことないやつが多すぎるからだろ
情報系はもっとも理解されてない学科 会社で昼休みにテクデの勉強してたら資格オタク扱いされたなぁ >>120
文系、理系の問題ではないと思います。
私は文系ですし。
>>120
ふむ。
今の情報系の学科がどのようなカリキュラムか知らないが、
大学出の者を戦力と考える会社はいまどき居ないだろ。
会社としては2,3年掛けてようやく戦力として使えるかな?
という人間を探しとているということではないかなぁ。
それには出身の大学、学部、学科はあまり考慮されないと思う。
でも地頭は大事。新卒の場合、出身大学のランクを元に、見込みで採用してるだけ。
中途なら、出身大学のランク高くても、経験や実績無ければゴミだろ。
IT系は専門知識不要で採用してしまうからな。そして現場で不良施工状態のデスマ。
ちゃんとIT理解してる理系が、人嫌いでPCにばっかり向かっていて、客との対話を営業任せで放棄してるのも、低コストで短納期で突貫工事的な変な仕様で迷走する理由の一つだと思う。
客は住み易さとか快適性能に重点置いてるのに、施工してる側は基礎工事だけに専念していいものが出来たってオナニーを満足してちゃ意味無いだろ。
家は3回建て直さないとまともなものが出来ないように、システムも1回で使えるものが出てこないのは、理系のオナニーのため。 釣りか?!データモデル設計とテストデータ実装、本番データの実装、ACCESSのクエリーなりでUI概要とすれば
PG無しで開発できる。プロトタイピングからスパイラルモデルで進めれる
2サイクル目でPGの帳尻合わせなんかしないリモデルリトライだ
だいたい物理的組み立て積み上げで作る家なんかと比較してるなんて現実にあるシステムの機能を
知らな過ぎ 正規化も3層スキーマの考え方も身についていないような奴が
DB技術者を名乗っちゃうから嫌になる。
自称DB技術者のおっさんが主キーがどれかすらはっきりしない
テーブルもどきの何かを作ってきたんで正規化してくれと頼んだら
しばらくネットで何かを調べた後にテーブル数が増えてわかりにくくなるから
正規化しなかったと言い訳してきた。
よくネットでテーブル数が増えるから正規化はしなくていいなんていう
無茶苦茶なことを書いてる似非DB入門サイトがあるが、それに騙されちゃったんだろうな。
問題を指摘されたらググって言い訳を探す医者や自動車設計者が
いたら結構イヤン。 でも使ってるうちに正規化が崩れていくのも事実。
データベースがどのような事に使われていくかはシステム稼働後にしか分からないし。
呼び出してるDBアプリほど、柔軟には、DB側は組み直しとか出来ないし。
簡単に正規化組み直しとか出来る機能が付けばいいけどね。 DBの組みなおしは簡単に出来るよ。それこそ制約に従ったSQL書ければ簡単だよ。
組み直しが難しいのはPG >>132
使う、っていうのが、システムの変更も含めているのならまあそうかもしれん
だが意図して正規化を崩すのでなければ、変更した技術者のスキルの問題だろう
普通はシステム稼働まえに、設計の段階でどのように使われるか考えるものだろう
DBの変更はプログラムの変更に比べれば簡単だと思う
簡単であるが故に、設計がおろそかになってるんじゃないかと思うな
だからPGはあとまわしでPGによる調整が必要ないところまで
データモデルを作り上げてインプットとアウトプットを固めないと
糞PGになんじゃん >>132
何を言ってるんだか。
おまえは半年仕事を休んでデータベーススペシャリスト試験を
本気で合格する気で勉強してみろ。
言っておくがオラクルなんかのベンダー資格なんてとっても意味はないぞ。
基本が身についていない奴が製品に依存した知識を持ったところで意味はないからな。
まったく、嫌になる。
10年使ってきたDBの変更と、10年使ってきたウェブアプリの変更どっちが簡単か自明だと思うけどな。
10年後まで考えてデータベース設計するのは無理。
最初は在庫管理で作ったのに、拡張で顧客管理も入って、更に拡張で売り上げや経営財務管理まで入ってくるし。
アナログ的に言うと、社内帳簿フォーマット変えるのと、利用してる現場担当者入れ替えるのとどっちが簡単かって話。 利用者の顔色を伺って利用者と良好な関係を保つのが仕事をうまくすすめるコツだな
問題は糞利用者が使ってる糞帳簿を改善することではないんだよ。デジドカの鉄則だ 老害コボラー臭のするヤツがいるな
他の板に居場所ないのか? >>138
自明って、お前の主張はどっちなんだ?>>137への反論なのか?
>>132はある意味、「真理」に近いと思う…
最近は単純に「上流」工程だの、「下流」工程だのと、
誰かが宣伝したテンプレに従い過ぎだ…
んなもん、ケースによって全然違うんじゃ〜い! 実務の世界の人間ではないのですが、「使っているうちに正規化が
崩れる」というのは具体的にどういう状況を指すのかちょっと興味が
あります。
更新のコストが馬鹿にならないので非正規化する、というケースは
理解できるのですが、例えば業務内容に上手くマッチしなくなった
のでスキーマを改変する、というケースであれば、なんで改変後も
正規形を満たすように改変しないのかな、と素人考えでは思って
しまいます。
もし宜しければ簡単な例など教えていただけないでしょうか。 「正規系が」業務内容に上手くマッチしなかったんだろjk スキーマ改変したら、アプリ側の改変しないと駄目で、予算的に膨大になるでしょ。
スキーマ改変なんて現実は、なかなか遣れない。スキーマ改変について来れるようにアプリ側で対応してるのも見た事無いし。 お客さんに、「いちいち明細なんて入力するの面倒くさいし
そもそも決まった数以下しかないから」っていわれて
しかも見出し・明細が1行のレコードとして
外部と連携したりなどなどで正規化やめたことはある。 >>146
それはその技術者のスキルが低いからうまくマッチングできないんだろ
>>147が言う、既存部分の変更を嫌がるのが一番の要因だとおもう
あとは>>148のいう、外部要求に合わせるためか。
こっちはできれば、ビューとか外部出力するアプリでの操作で回避したいとこではある
>>149
なるほど。>>148の繋がる相手に合わせる、というのはよく分かる
気がします。
>>147はまだちょっと難しいです。
既存のスキーマを改変するのはなかなか難しいというところまでは
理解出来るのですが、スキーマを改変しないならそもそも正規形も
崩れようが無いのでは?と思ってしまいます。
これは例えば住所を2件持てるようにしたいので一つの住所カラムに
タブ区切りで2個住所を入れちゃうぞとか、スキーマはそのままでも
入れるデータによって正規形が崩れてしまうような状況を指している
のでしょうか。 データってのは、ただ溜め込むだけじゃなくて、いろいろな事に使われて応用されていくもの。
いろいろなデータが追加されていくと、正規化が崩れていく。
10年拡張もせずに動かすというシステムなら、正規化は当初のまま有効だろうね。 accessと汎用系DBとでは、設計手法が異なると聞きましたが本当ですか? どこまでを指して設計手法としてるかにもよると思うが、
たとえばアクセスだとトリガやストアドプロシジャが使えない
そういった、アクセスではできないことを考慮した設計は必要
テーブル設計での正規化とか、そういった基本はあんまり大差ないとは思うが >>152
その人の言う「汎用系DB」って、IMSとかのことだったりしてな。 正規化されてないDBを見て
それを非難するやつがいたとしたら
そうなるまでには経緯とレベルがあるなんて
理解出来ひんねやろうな。
DBがあります。それが正規化されてるとします。
その場合は
1仕様策定の主導権がDB側にある
2パッケージソフト
3数人で作った小規模システム
4出来たてのシステム
5システム仕様が業務効率化など低レベルなもの
かな。
>>1は、特定の部署でしか使わない、今まで手でやってた仕事を
システム化しましたみたいな
入門者みたいなシステムしか作ってないんちゃうかな >>155
正規化されてないDBに経緯があるのは理解できるがな、
レベルってのはなんだ?レベルが低いから正規化されてないのか?
そんなの非難されて当然だろう
お前の言い分だと、正規化されていないのが当然のように聞こえるが、
お前こそ入門者みたいなシステムしか作ってないんじゃないのか?
>>1は何も正規化だけを問題にしてるんじゃなくて、
設計が大事なのになぜ軽視されてるんだろう、って話だが
お前みたいなやつがいるからなんだと思ったぜ >>153
遅くなりましたが、
ありがとうございます。
トリガ、ストアドプロシジャ、頑張って調べます。 正規化しといても、どんどん拡張していくうちに崩れてくるしな。
正規化したくても全部のアプリ作り直しは無理。
http://pc11.2ch.net/test/read.cgi/db/1116097001/
頼むから正規化しろよ 第二正規形 突然ですがアドバイス下さい。
アパッチのアクセルログで取れる情報のER図をかけといわれたのですがどんな感じのものをかけばよいでしょうか?
一応アクセスログの仕様については調べたのでログフォーマットとかカスタムログとかの記述方法はわかるのですが
これをER図にしろと言われたらよく意味が分かりません
データベースのテーブルでもないのにこんなもんをER図に出来るもんなのでしょうか
よろしるおねがいします データベースのテーブルとアクセスログは全く同じ形式じゃないか アクセスログをどう使いたいのか、要件がわからないままなら、ログのフォーマットそのものなテーブル1つで終わる。
でも、きっとそんなことは無いはずなので指示者に一応確認してみる。
うまく聞き出せないなら、指示者が長期休暇中なら、貴方が「こういう使い方したら便利だよね」と思う使い方を想像し、それにあわせた構成でER図を描けばおk。
あとはログフォーマットの各項目をそれぞれ配置する、と。
ついでに「こういうことするならこんなデータも無きゃいけませんよね」ってな要素を付け加えて提案してみるのも良いのではないかしらん。
例えば、IPアドレスのブラックリストを準備して、ログテーブルとIPアドレスをキーにジョインして「ブラックリストのIPからのアクセスだ」とわかるような仕組みを入れてみるとか。
もし、運用目的の話ではなく、純粋に情報の構成をER図であらわせ、って話をしているのなら、大雑把に言うと
・IPアドレス
・ユーザ
・アクセス日時
・発行メソッド(参照URL)
・ステータス
・他もろもろ
がどういった関連を持っているか書け、と言う事なのでしょうね。
例えば、URLを中心において
・そのURLに紐づくユーザ
・そのURLに紐づくIPアドレス(アクセス元IPアドレス)
・そのURLに紐づくアクセス日時
といった要素の関連を書き表すとか。
学校の宿題なのか、新入社員さんの研修課題なのかわからないけど、まぁがんばって。
課題だとしても実用的じゃなさすぎる。
出したやつは馬鹿だなw すみません。オッケーウェブで質問して、回答ももらったのですが、回答が1件だけだったので
もう少し他の意見も参考にしたいと思ってこっちに来ました。オッケーウェブの方はもう締め切って
あるので、マルチだと言わずに聞いて欲しいです
僕が質問したトピックはこちら
ttp://okwave.jp/qa4946216.html
ER図が削除されていたのでもう一度アップしました
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9156.zip
確かに回答の通りこの場合はok_ngで検索すればいいだけなので冗長だと思いました。
そうすると、この1対1の関係が成り立つのはどのような場合でしょうか?
使い分け方とメリットデメリットあたりが聞きたいです。
それと、1対1のテーブルは、たまたまマイレージプログラムと乗客のテーブルで見たのですが、
それは「特殊」なパターンなのでしょうか?それとも一般的なものでしょうか?
そのあたりも教えて下さい。
「こういう理由でこの1対1の関係を作ったのだけど、どういった問題があるか指摘して欲しい」
のような話でないと、なんともいえないです。
「合格者テーブル」を作った理由ですね。その理由からメリットデメリットが導かれてくるんじゃないかなぁと。
訳もわからず、理由も無く、なんとなく作ったのなら、それは意味が無いし先の回答者の様な返事になるだけですよ。
※自身で「冗長だ」と思うならそういう設計をしなければ良いわけで....何故悩むのかと。
もし本を読んで見つけたのならそのデータ構造を作る理由を読み直して理解した方が良いです。
※あと、「そうすると、この1対1の関係が成り立つのはどのような場合でしょうか?」も
ちょっと意味が判りかねます
なんでマルチが嫌われるのかと言えばだな、回答した香具師に失礼だからさ。
okで回答した香具師に失礼と思わない訳?
にちゃんで回答した香具師にも失礼な行動は予想出来るよな。
にちゃんで回答してもらったが、納得出来ないので教えて欲しいと他所でまた訊くのだろ? 結局、 >>161 も>>168 も音沙汰無しなんだな。
後日談とかちょっとだけ楽しみにしてた私はマヌケだった。ハズカシ.....
今にちゃんでの回答に納得出来なくて、他所で訊いてる所だろ。 えーと、初めてのオラクル案件でマスタテーブルを
UNIONで結合したような統合テーブルが設計されていたのだが
オラクルが特別なのか、案件が特別なのかどっちらでしょうか。
すまん、それは漏れが感じたテーブルのイメージ名。
view ではなく Table です。項目を大雑把に書くと
テーブル名,詳細キー,値1,値2,テキスト1,テキスト2,日付1,日付2,備考,etc…
値の例)
部門,1,null,null,営業,null,null,null,テキスト1:部門名,etc・・・
消費税,1,5,null,null,null,null,null,値1:消費税率×100,etc・・・ 特別だからってどうなるの? 指定なら対応するしか選択肢無いと思うが。 >>174
オラクルに限ったやり方ではないし
特別ってほど奇異でもない
ただ例としている部門と消費税を一緒にするのはエスカレートしすぎって感じ 単にテーブルだけ出してきて、それが特別かどうか聞かれてもな
もしかしたらものすごく特別な使い方してる可能性もあるし、
結構見られるようなものかもしれない
汎用的なマスタとして使ってるのかもしれない、リポジトリのような使い方かもしれない
が、使ってるDBMSだ何だろうと、そのテーブルがそのままの形なら
設計やり直してくれとお願いするな、俺ならw 消費税なんて変わりそうなものは別に分けたいね。
まあその時の担当じゃなければどうでもwww
コボルベースの設計とかを引き継ぐ理由とか有るのでは? >>178
オラクルだからって事ではないんですね。
>>179
リポジトリではないですね。
汎用的なマスタなんだろうけど汎用性が高すぎる。
次のプロジェクトから設計やり直しをお願いしてみるよw
>>180
なるほどコボルベースの設計か、
設計者が実績あると言っていたから伝統なんだろうな
ASP.net2008で開発してDBが伝統か しかしその何がどう問題なのか、正しく指摘できる者はいないのであった。 コボルにも対応出来るのが普通だしな。
ちゃんとコストとか実行速度のデータ示せないと検討も出来ない。 すいません、正規化を俺が望まなければちょっとの修正ですんだものを、
DB構造もプログラムも大改修して多大なコストがかかりました
技術屋として間違ってはないと信じてる
でも経営としては間違ってるんだろうな、きっと
>>188
将来のデータ不整合、障害発生のリスクと
目先のコスト、どっちが大事かな。
まぁ、派遣切りのご時世だもんな。 金がかかったそもそもの原因は正規化のせいじゃなくて
元々の設計がダメだったせいってなんで気がつかないの 表層に現れるのは「修正にコストかかった」ってことだけだからな
お偉いさんには「こんな簡単なことに時間かけて何やってんだアイツは」としか映らない
技術者をないがしろにしてきた代償だよ
>>188
もともと正規化してなかったので、そのちょっとの修正の「ついでに」
正規化した、というのであれば、そのコストは、ついでの作業に伴い発生したコスト
技術屋って言い方すればコスト意識を無視できるわけではないと思うがな
xx屋さんってのは、xxを売るから屋なわけで
コスト関係なく技術的に最善最上な状態でないと気に食わないというのであれば
それは技術原理主義者とw
コストとのバランスをとれるから技術者じゃなくて技術屋なんだと
しかし、コスト至上を理由に次々とパッチワークしていったシステムはひじょうに脆く、改定に対する耐性が格段に低くなる。
全てを「自分の好みに修正」したいってんなら、お前なにやってるんだの世界だけど。
後まで見据えての決断であれば技術者の良心だろ。
姉歯はいかんよ、姉歯は。 元々の設計のままでのコストの発生具合による。
好みや良心の技術第一主義で通しても、理解してくれる客は少ない。
でも自分のアピールや努力が足りずに、姉派みたいな弱い立場に陥るのは技術第一主義者には多いと思うよ。
漏れは設計しか遣らないとか逝っても、設計外の人間に理解してもらえる事は少ない。その積み重ねがどんどん立場を弱くして、設計だけしか頼まれない弱い立場で責任だけ押し付けられる事に成る。
設計に金を出してくれる客と良い関係を築けての商売。 >>193
その、しかしってのは>>192を受けていってるのか?
技術屋ならバランスとれっていってるのに
コストのために犯罪犯すような話といっしょにするなよ
>>194
すくなくとも今のソフトウェア産業において、設計だけでは
ビジネスとして成り立たないと思うがな
本来客は、設計に金をだすんじゃなくて、プログラムやシステム全体に金をだすわけで
その中の設計に配分される割合が低すぎる=設計が軽視されている
それは客の理解の問題じゃなくて、売り側が過当競争によって
目に見えにくいコストから削ってるからじゃないかと思うが
だから設計でちゃんとコストが変わる事を設計担当がアピールするのが大事。
何もしないから、配分の割合減らされて、コスト削られてるのだよ。 >>196
これって客先に説明しておしまい。ってならいいけど
無知な上級SEが良いところ見せようとして・・・説得したあとから
平気で台無しになるようなことをしてきて、あとよろしくって♪って感じの多いわな 上級SEぐらいおさえられないでどうする
身内の敵はもっと上だぞ
マネージャーやら社長やら・・・ 常に人減らせないか、安い人材に出来ないか考えてるからね。
そういう人たちにも、ちゃんとした設計がコストに影響する事を示せないと負け。 逆に考えて、
設計がコストに影響することを理解できないような人たちが、
マネージャやら、〇〇長やらを
やってることが問題なんじゃない?
で、この問題をどう解決するか、なんだか。