何故データベース設計は軽視されるのか?
何故データベース設計は軽視されるのか? ここでいうデータベース設計とは、 特定の業務システムにおける テーブルレイアウトを設計し、決める作業であるとします。 業務システムにおいては、 このデータベース設計(テーブル設計)は仕様そのものを定義する作業にも 近いと思いますし、この設計は開発工程やその後の運用における品質を 絶対的に左右するものだと思っています。 逆にこの設計があまりにも実現すべき仕様と比較し不整合なため、 その後の開発工程がデスマーチに陥ることも少なくないのではないでしょうか? にも関わらず、正規化程度も理解できないような担当者が この設計を行っていたり、業務システムの受託開発において、 「テーブルレイアウトを決める」という作業が、あまりにも軽視されているような 気がしています。 みなさんの現場ではどうでしょうか? ご意見などお聞かせください。 ここでいうデータベース設計とは、テーブルレイアウトを決める作業を指し、 データベースとは、リレーショナルデータベースを指しています。 プログラムのデザインも、正規化も知らない奴がSEを名乗ってるからだろ。 驚くぐらい何も知らない。 むしろDBの設計でPGが大きく変わって組みやすくなる可能性もあるというのに・・・・ 確かに>>3 の言う通りだと思う とりあえず今保守してるシステムのテーブル名とカラム名に 日本語を使ってるのやめさせたい。それからコボラーの薫陶を 受けたVBA使いの作ったシステムを全て作り直したい。 >>7 動けばいいとすら思ってない。 作って納品しちまえばおkと思ってるw 納品時のテストデータでかろうじて動作はするものの 本運用に入ったら誤作動しまくり落ちまくりってのはもう 狙ってそう組んでるとしか思えなくなってきた・・・ いまだに綱渡り的な設計とかが存在してるのな(;´∀`) いまだに「テーブル名・カラム名は全てID制です!」ってとこもあるからな。 IDが何なのかってのを記憶してる人間が技術力高いつて重宝されとる…… そろそろ今のPJが終わるので今度入る予定のPJチームに挨拶行った。 若手のSEがDB設計中だったので覗いたら、テーブル名・カラム名を日本語で書いてる・・・ んで、それはやめようよと言ったら、マニュアルのどこにダメって書いてあるんですか!日本語は使えるはずですよね! と言われたので、その場でPJから外してもらうよう上司に頼みに行った。 送り仮名で嵌るんだよ・・・ SYOHIN SHOHIN SHOUHIN 前任のアフォが設計したDBでこれらが混在してたから 全部「商品」で統一して新規で作り直す仕事何べんもやってるw ど素人でDBに興味あるものですが、 このスレ読んでおれもDB設計してみようかなと思った つうかね会社の方針が変わったり条例が変わったり法律が変わったりするたびに変更しなきゃならないシステムもたくさんあるわけよ そのたびに一から作ってたら間に合わんし客も予算出せないでしょ 実稼働中の物を今日まではこれ、でも明日からはこのシステムで なんて無茶な用件はたくさんある だからある程度の遊びフィールド作ったり妙な拡張して過去の残骸が残ってたりする物が出来てくるわけ それを最初見た奴にとっては謎いシステムかもしれないけどさ 簡単に言うとガチガチに設計すると馬鹿を見る事も多いんだよ >>1 データベース屋がまともな仕事をしないからだろ。 >>3 のような技術力の不足、利用シーンを考えない独り善がりな設計など。 むやみに正規化してりゃいいってもんじゃないし。 とりあえず 2008/11/12 を画面上でH.20.11.12 とかで表現するのはいいけど DBにまで H.20.11.12 として保存する仕様は勘弁してください。 >>18 そんなのまだまし。 3601112←これ昭和60年な 3201112←これ平成20年な 4011112←これ西暦2001年な 和暦は3で西暦は4な。 >>19 平成22年とベビーブームが始まる昭和22年はバッティングしないのでせうか( ゚д゚) >>20 生年月日とかでなければバッティングしないんじゃない? それにしても、その仕様は無いなw そういえば、社会保険庁が提供している申請用ソフトも データが和暦格納で使いにくいな。 スレとは関係ないけど、そいつが吐き出すCSVはクォーテーションが付いてないので うっかりExcelなんかで開くと、コードの頭のゼロが取れていたりする糞仕様。(0001→1) >>22 心配するな。「"」付きでもExcelはゼロサプレスしてくれるよ。 んで、うっかりExcelで開いて保存しちゃったCSVを本番に突っ込んじゃった アホがいたもんだから、マスタが一切引けなくなってえらい目にあった。 …DB設計の問題じゃないけど。 >>20 バッティングする。しかし詳細はばれるので明かせないが、30年の期限が 管理できればいいので、生きてるデータは最古でも1978年。 死んでるデータはもうグダグダ。ゴミ。 >>1 経営者や管理職や客は、目に見えるものしか評価できないから、 DB屋よりもJava屋の意見を聞く。 ↓ Java屋は、O/Rマッパを使いまくって、DBをオブジェクトの永続化ストレージ としか考えない。DB設計?なにそれ?おいしいの? ↓ それでも動く。 ↓ Java屋 「ほら見ろ、俺のやり方が正しい」 「DB屋の言うことなんか聞いてたら開発おわんねw」 ↓ 数年後: DBあぼ(ry ↓ 開発当時の人間いない。だれのせいか分からない。 DBがダメになったから、DB屋が悪かったに違いないという判断。 ↓ DB屋、ますます発言力低下。 ↓ 以下、ループ。 DB屋が論理設計途中でトンズラされたPJ。 既に実装スタートしてたから皆でオンデマンドでDB設計やってたぜw >>19 明治は1,大正は2,昭和は3,西暦は4, てなのを大昔にコボルさんが組んでて、 昭和天皇の崩御で困った困ったって話? >>19 つっか、マジな話、 今の天皇が幾久しく健康でありますようにと、お祈りする必要があるね。 >>28 まさに文系乙の、非論理的な設計ですね。 文系の声がでかいのも、論理的な正しい設計が軽視される原因と見た。 >>30 文系とか関係ないだろ。見通しの甘さが全ての原因だ。 ようするにバカなんだよ。 まあ、たしかにDB屋の地位とかは低いよな。。 俺は運用側なので、開発側が主催する システムリリースの打ち合わせに呼ばれる。 開発側の説明を受けた後で、運用上、設計上の問題をあげ、 改定を提案すると、いつも返答はこれだ。 「リリースしないと業務に支障がでる!」 だったら、システム設計のころから打ち合わせに呼べよ。 割を食うのはいつもこっちだ。 すまん、愚痴った。 年月日を和暦で格納するとか、 カラム名が日本語や日本語をローマ字にしたものであるとか、 運用を続けていくうえで仕様変更が続き過去の残骸データが残っているとか、 このあたりはもうしょうがないというか、諦めています。 我慢できます。 問題にしたいのは、論理性(純粋な意味での設計)です。 例えば1対nの関係にある情報を2テーブルに格納すべきところを 1側の情報を多側にn個格納したり、 候補キーが不十分で対象のレコードを特定できないケースがあるテーブルがあったり、 日々追加削除が発生するテーブルが第3正規形になっていなかったり、 (ケースバイケースがあることは承知しています) こういった問題のほうがデスマーチに陥りやすいと思います。 で、デスマーチに陥ったら陥ったで何故かプログラムで対応しようとする。 設計に立ち戻らないんですね。ここが問題だと思っています。 建築に例えれば、DBとかネットワークは土台、地盤にあたる部分だよね。 それが緩い、いい加減なところの上でシステムを構築することが、 いかにリスクが高いか、判らないのかねぇ。 判らないんだろうなぁ。 システムは目に見えないからねぇ。 この板には最近来るようになった新参者ですが このスレは書き込み少ないけど非常に参考になります。 稼働システムでDB設計がおかしくてPGで何とかしようとするのはいい もう稼働してしまっているから大きな改造などは怖いので出来るだけやりたくないという理由 でも・・・なんであいつ等それを教訓にして次の土台の硬め方を変えようとしないのか 同じような設計して同じようなトラブル産んで・・・・ 追伸 正規化とかもやりすぎは使いにくさにつながるかもしれないけど、適度な正規化くらいかけてください。 今は昔よりサクサク作れるんでしょ? DBも使い捨ての時代じゃないの? アプリケーションはサクサクと使い捨てられることも多いけど、 DBは後々、受け継がれて残っていくからなぁ。 アプリケーションの進化に比べると、SQLやRDBの進化は遅いしね。 っていうか全角でDB www 遅いかねえ 最新のDBの機能なんて誰も使いこなしてねーじゃねーか 昔IBMの博士がRDBの基礎理論を発表してから、常に進歩・進化していると思うが。 OracleやDB2なんかは使いこなしている奴の方が極レアだろうに。 RDBMSの実装自体は猛烈な勢いで進化していますが、 スキーマ設計手法やクエリ言語に関しては案外ゆっくりと しているのではないかと。 SQL92以降の拡張って実際どの程度使われていますか? LINQがどうなるのかってところか。>クエリ拡張 あとは、ORマッピングの活用とかそっちも全然進んでなくね?>特に日本 xml関係の拡張(?)も凄いと思うし、モバイル対応とか、組み込みとか あれこれ頑張っていると感じる。 >>43 O/Rマッピングにそんなに価値を感じてるのですか? 流行に踊らされていませんか? そりゃまあ、COBOLerには縁がないから、価値を感じないだろうなぁ。 COBOLは全然分からないが、DB設計の立場で見ると、 O/Rマッパには、 DB「設計」不要の簡易システムなら画面プログラマだけで作れる、 という以上の価値は感じられない。 ポトペタな画面アプリ作る時には実際、O/Rマッパって必須だと思うけど。 簡単なものが簡単に作れるのは実際ありがたいし。 ちなみにDB設計不要ってくだりはイミフメイだな。 そりゃDB設計者と思い込んでいる運用チームの人間が言っているなら なんとなくわかるが。w 不要ってことは無いけど、重要視されてないのは事実。 糞なテーブル設計でも、一応動くし、速度も糞高い鯖でも買えば力技で何とかなるのも事実。 PGの学習能力は、そもそも糞なPGなのか、予算的問題で優秀なPGが確保できてないのか、営業的問題で長期運用を前提として無いとかだろう。 営業的には4年程度なんとか動いて、定期的に新しいシステムに更新してもらうのが儲かる。データ移行という名目でぼろ儲けしているのをわざわざ無くす必要は無いし。 運用ならもうちょっと強く逝ってもいいと思うぞ。開発の尻拭いも大変だろうし。 そのままリリースしてしまうと業務に支障がでる! と強く逝ってやれ。実際、業務に支障が出るのは毎度の事だし。 ある程度汎用的に使おうとすると、結局は最新機能は使わずに終わってしまう事が多い。 このアプリケーションでは対応して無いとかで最大公約数的に使える機能が絞られて行く。 むしろテーブル設計よりも、糞クエリを書く奴をなんとかして欲しい SELECT一文で数KBとか馬鹿もいいとこ このマシン遅いとか、冗談きついわ アプリで処理すべきことをDBにやらせて遅くしてるのはお前だ 俺の経験だとSQLで出来ることを アプリにやらせて遅くしてるやつの方が多い。 とても遅くなって困る。 >>52 なつかしいなそれ。割引金額をアプリで持ってるから 割引率変更になった時点で過去売り上げの改ざんになるのな。 揚げ足取りはさておき、ドメインロジックはまだいいんだけど クロス集計とか頑張ってやってたのを見てびっくりした事ありますよ。 クロス集計って、アプリ側、DB側、どちらで頑張っていたのでしょうか? 今はSQL/OLAPが使えるようになってきて随分楽ですね。 >>51 テーブル設計がよろしくなくて、アプリ側でエラい苦労させられたことがある。 SQL書けねえやつに設計させるなと。 テーブル設計が問題なのか、 SQLが問題なのか、 アプリが問題なのか…についてですが、 結論からいって、全てにおいてまずテーブル設計の問題だと思います。 理由はそれが土台だからです。 テーブル設計がおかしいという理由で、 おかしなSQLを書かざるを得ない状況に陥ることは多々あるし、 テーブル設計がおかしいから、 アプリでおかしな制御をせざるを得なくなったりするんです。 それと、「正規化もやりすぎると使いづらくなる」などという意見がありましたが、 自分は何があっても、どんなシステムあっても、どんな利用用途であっても RDBでデータを管理する以上、必ず全てを第三正規形まで落とす必要があると思います。 正しくはその正規系を業務や仕様にあわせて(敢えて)「崩す」のです。 だから「正規化はしないほうがいい場合もある」というのは語弊があります。 正しくは「正規化は必ずしなければならない。その上で(状況に応じて)崩すことは構わない」 ということです。 モバオクみたいに1人のスーパーエンジニアに全部ヤらせればいいんだよ。 要件定義から設計〜実装〜テストまで自前でやればドコがおかしいか 自分で気がつくだろうに。 時々、老害が自分の立場を守るためにくだらねぇ自己主張 しまくるから、設計がグダグダになっていくケースがあるしなぁ。 一人はそいつが飛んだら終わりだけどな。 二人一組ぐらいにはするべき。 さらっと「飛んだら」と書かれてちょっとビクっとした。 「意識が途切れる」「遠いところに逃げる」「宙を舞う」。含意は色々ですが。 「レコード数が少ないから主キーはいらない」 と真顔でのたまう、うちのSE。。。 >>59 飛ぶっていうのは逃げるとか逃亡するとか辞めるとかの意味。 全てのテーブルが外部結合を必要なく設計されてるシステムってある? あるコードに対して対象か対象じゃないかをマスタのレコードが有るか無いか で判定するのはRDBとしては誤っていると思うんだけど。 RDB設計をまともにやればシステムの便利さは格段に向上するのは間違いない システムへの要求も高度化するだろう。RDB設計をまともにしない人には 低度な要求を解決する仕事を続けるためにRDB設計を軽視し続ける べきだ、保身のために。 日本は現場の国だ。現場以外は糞。そしてシステムに関する決定権は 現場には無い。使う側の現場力と開発する側の現場力が糞によって 互いに相反する方向へ注力させられている。まったく無駄なことよ。 >全てのテーブルが外部結合を必要なく設計されてるシステムってある? >あるコードに対して対象か対象じゃないかをマスタのレコードが有るか無いか >で判定するのはRDBとしては誤っていると思うんだけど。 RDBでないDBはそうするしかないと思うが。 RDBでそうしているオマエの現場が糞と言うなら「そうだろうな」としかいい様がないわけだが。 「システムに関する決定権は現場には無い」ってオマエがオペレーターみたいな 現場といっても最底辺だとないだろうとは思うが、普通の開発現場なら あからさまにイカれている設計なんかはレビューや評価で却下すればいいんじゃねーか? Oracleで対象非対象をレコードが有るか無いかで設計してあるのはやっぱ間違いだよね。 Oracleやってる奴も汎用機COBOLで経験つんだエンジニアばっか。COBOL流のシステム 設計をむりやりOracleに載せてる。それが常識で考えた標準らしいですよ。何も言えねえ。 >対象非対象をレコードが有るか無いかで設計してある こいつはどういう状態のことだ? つうか、>67はどんな対案が正論だと言いたいんだ? ジョインされる2つのテーブルのキーが1:nになっているべきか1,0:nを前提に設計するかって話だよ >>64 ひどいw これは損害請求レベルじゃないのか ちがう、1:nを守るためにマスタにレコード追加しようとしたら引かれたの。意味無いとか言われて。 レコード番号 | 存在フラグ --------------------------- 1 | 存在する 2 | 存在しない 3 | 存在する or レコード番号 | 存在フラグ --------------------------- 1 | 存在する 3 | 存在する の違いって事? あー頭死んでた。 レコード番号 | 対象フラグ --------------------------- 1 | 対象 2 | 非対象 3 | 対象 ※フラグ見て対象かどうか判断 or レコード番号 ----------- 1 3 ※レコードの存在の有無で対象かどうか判断 の違いって事? >>72 どういう状況でどんなテーブルに何をしようとしたのか端的に説明してくれ。 とにかく状況が小出しじゃ何も判断できん。 >>72 あと、「引く」という言葉の意味が分かりません。 >>63 なにか、RDBがあるからデータ入れよう的な考え方に聞こえるぞ まったく結合するものがないなら、「R」DBである必要はないわな レコードがあるかないかで判断するか、(結合された)レコードに書かれてる内容で判断するかは、 それがどういった情報を格納してるかで決定するべきで、RDBなのだから 必要ない結合先のレコード(や、もしかするとそのテーブルそのものも)を作らないといけないということはないだろう >そしてシステムに関する決定権は現場には無い 現場は必要もないRDBを使いたくなく使ってるのかもしれないな そして必要もないのに、RDBだからどうのこうのという、 現場の空気を読まない原理主義者みたいなやつがさらに話をややこしくするんだ >>67 口調が違うが同一人物じゃないのか? ちなみに、RDB使った開発でSQLを書いてるやつでも、 exists使ったことないってやつは結構いるだろう RDBだから、ORACLEだから、レコードのあるなしで判断するのは間違ってるだろうとか その判断基準がおかしいとしか思えん まあ、現実的なDBの選択としてはRDBMSしかない現状もあるがな 1さんの言うことはまったくもって正しいんだけど、 実際にこういうことを口に出しちゃうと 「頭でっかちで現場じゃ使えない」って評価になるんだよね おれがそうだからよく分かるwww 制約を強くするとデータを入れにくいじゃない?とか平気で言うPLがいるとやる気0だよね〜 それで親の無い子レコードや、不正なデータが山のようにあるんじゃ世話ねーよ そうそう、そんな感じww 設計と製造の現場はまさに自分はDB設計を軽視してませんって顔して キーマンの顔色を伺って程度をあわせる世界だよね。アホすぎww ここもそんなもんだね。あ〜あ >>81 ここもそんなもんだねとか達観した気になる前にここで吐き出せよ。>80みたいに。 それすらできないくせに嘆くな。 39+3 : すずめちゃん(catv?) [] :2009/01/20(火) 00:55:46.00 ID:5lC2DwfT (2/2) 市況2のスレを読んだら、どうも データベースがぶっこわれたみたいで、金曜の取引データが飛んだみたい で、約定メールから復旧させようとしてるとか 取引先の「偉い上司」デター! ぼくの考えたデータベース持ってキター! さて、どうすっかな・・・ データベース設計が軽視されているのではなく、 データベース設計に携わる人間が軽視されているのだ。 という命題をたててみる。 >>89 それは、その人間の行う作業が軽視されてるから、 その人間が軽視されてるじゃないか そうでないなら、別の人間が代わりにその作業をすることになるだろう そもそもちゃんと仕事できてないから人間的に信頼されて無いとか? データベース以前の問題だな。 結局、現場の意見のほうが採用されて、ボンクラDBA涙目。 組織で仕事するという条件で目標を達成するためのスキームをちゃんと考えたほうがいいよ。 ここ読んでて恐ろしいのは自分の関わったシステムではDB設計軽視して無いって 本気で思ってそうな人がいることだ。RDB的な不備が出るのは現実的に 仕方の無いことだが、あくまでも例外であって、あるシステムの中で数個の 数少ない心残りとして記憶されてしかるべきもの。 こんなバカだらけではキーマンの顔色を伺ってISAMバカ基準でシステムを組んだほうが 計画は立てやすいだろう。RDBMSを使ったPK、ソート、VSAMユーティリティと考える。 だいたいRDBMSをPK、ソート、VSAMユーティリティとしてシステム組んだ経験がある 人だとそれで正解だと誤解しちゃうんだろうな。それで動くから。 底辺会社の底辺システムの目標としてはそれでもいいだろう。動けば底辺客も 文句言わないから。しかし、そんな設計してRDBの特徴を活かさなかったら RBD以前の非生産性を引きずったシステムが出来上がるわけだよ。しかし、 その非生産性は1円入札して保守で儲けるビジネスモデルでは工数が稼げる かもしれんよ。いつか関わりたいなRDBのシステム。。。 そういえば某メガバン統合でCOBOLアホシステムで統合決定してるのが象徴的だねえ。 COBOLアホシステム準拠が日本では巻かれるべき長いものと決定したようなもんだ。 メガバンのM菱サイドの方がオープン系とかにシフトする勇気がないんだろうし。 ああいうのは変に金があるから、コスト度外視の設計しても疑問に思わずに、 「こういうもんだ」と納得してんだろう。 Mでは実績が無いだけでしょ。いわゆる前例がないってやつだ。 提案してるベンダもリスク回避として、今のシステム踏襲路線てのも悪く無い決断だと思うけどな。 まずは確実に統合して不具合を出さない事が第一目標だろう。一気に欲張って失敗するくらいなら、落ち着いてじっくり今後を考えればいい。 RDB的に正しい正規化した設計と、現場が把握し易い伝票ベースの設計のどちらがいいかは力関係も大きいし。 >>92 お前の考え方は、道具に合わせてものを作れって考え方だ。 それはそれで否定しないが、その考え方だけが唯一の正解のごとく、 他の考え方を貶めるのはやめたほうがいいぞ DBAが満足する、実績の無い新しいシステムで、銀行ATM止めて大迷惑かけてしまうのと、 DBAは不満だけど、実績のある既存のシステムで、銀行ATM止めずに問題なく使えるのと、 どちらを決断するって話だろ。 DBA様の首斬って損害賠償請求逝ってもよければ、勝負もあり。 しかしあのメガバンってアフォみたいにATMを停止させてる現実があるんだが。 単に突然使えないのが事前に「メンテナンス」と言う言葉で停止させるかの 違いなんだろうけど、その「メンテナンス」が予定時間オーバーも珍しくないワケで、 利用者としては「アレ?朝には使えるって言っていたのに・・・」ってクレームも たくさんあるんだが。 結果論からすると「COBOLでも十分に失敗する」と言う前例は今回の合併だけでなく 以前から繰り返されている予定調和な感があるけどな。 U○Jの以前の倒壊&惨羽の合併ではそんなに混乱は起きていないけど、 MとU○Jではこんなにゴタゴタしているのは、両者の技術レベルのギャップが 凄いんだろうなぁ。Mは特に悪評高いパッケージだし。 それでもまだ復旧の見込みがあるぶんだけ優位だろ。 DBAの提案聞いてオープソ系とか導入して何日も復旧できなかったら終わる。 あれくらいの仕事する案件では「失敗した時の復旧プラン」もちゃんと計画に入っているんだがな・・・。 「○時時点でこのチェックポイントをクリアできない場合は戻す」と言う具合に。 そこまでしておいて、それでも予定時間オーバーってのは、 COBOLを前提とするシステムと言うのは性善説に成り立っている仕組みが多いという事だな。 逆にオープン系なんかは性悪説(?)に成り立っている感があるので、 JOBの再投入もやりやすいように設計する人おおいからなぁ。 そして何日も復旧できない事態なんて存在しない。 オープン系が優位とは言わんが、COBOLが実績があって安定性云々なんて 寝言を言う人間は間違いなく現場の金融系の実体を知らん厨房だと思う。 >>95 君は知識的にコンプレックスがあるだけだと思うよ。勉強不足だからホントの事いわれると 貶められたような誤解をするんだと思う。スコップをちりとり代わりに使用しても不便だ、 三角より平型スコップならちりとり性もupするよね。実際、いくつかのOracleのバージョン アップはISAMシステム実装のしやすさも機能強化されていってると思う。 おれはDBAらしい仕事は一度もしたこと無いが、SEのRDBコンプレックスは見苦しい。 もっと使いこなさないと関係モデルは組めん。半端な知識だから破綻してISAMに 逃げることになんだよ。そんなISAMやりたいんならRDBMSを開発する側に回るべき だね。そこに食い込めないなら引退すべきだよ。老害なのかなと思う。 いつも自分の意見が取り入れなくてストレス溜め込んでるのだろうな。 だれもオープン系のシステムにしてくれない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ぐらいおさえられないでどうする 身内の敵はもっと上だぞ マネージャーやら社長やら・・・ 常に人減らせないか、安い人材に出来ないか考えてるからね。 そういう人たちにも、ちゃんとした設計がコストに影響する事を示せないと負け。 逆に考えて、 設計がコストに影響することを理解できないような人たちが、 マネージャやら、〇〇長やらを やってることが問題なんじゃない? で、この問題をどう解決するか、なんだか。 理解しなくても、会社の資本金を出してたり、出資者から任命されてたりするから権限持ってる。 文句有るなら自分の資金で設計遣ってれば良い。 どんなまずい設計のシステムでも、 実際に運用されていて問題のないものはあまりいじらないものだよ。 まずさ加減に寄るな。 致命的なのや、将来的に問題になりそうなのは苦労してでも弄らないと後で困るよ。 弄らないまでも、報告だけはしてシステム関係者の中で共通認識は築いておくべき。 後で、問題が起きてからDB担当の個人の責任にされたほうが割喰うよ。 もちろん問題点の把握はしておかなければいけない。 あと、問題が発生して誤動作したときのリカバリーの手順とかもマニュアル化しておく。 誤動作する時点て致命的じゃないのかなあ。 データ失うよね? >>203 =205は もっともらしい事言いたいだけの 他の板に居場所がない老害コボラー >>206 完璧主義者の集まりが作ったシステムなら あっさりデータなくなるだろうけど 多少の開発経験がある人が居れば DB経験がなくても バックアップや履歴、ログは残るはずだよ スムーズに復旧できるかどうかは別の問題だが… むやみに正規化できないケースはいくつもあるぞ。 顧客コードとそれに対応する顧客名称などがテーブルにあっても、 実はマスタ化するまでもない一見の顧客の場合、特定のコードを使って、 顧客名称のみ画面から入力したいという与件があったりするケース。 EDIで顧客からマスタと依頼データをもらっていて、 依頼データをもらった時点のマスタの値を依頼データに付加して保持しないと いけないケース。 複雑な料金計算の設定マスタなど、既存のデータと処理をそのまま移行する 必要があって、下手にデータの持ち方を変えてしまうと、 明確に仕様化されていない部分の動作が保障できなくなってしまうケースなど。 >>209 >顧客コードとそれに対応する顧客名称などがテーブルにあっても、 >実はマスタ化するまでもない一見の顧客の場合、特定のコードを使って、 >顧客名称のみ画面から入力したいという与件があったりするケース。 >EDIで顧客からマスタと依頼データをもらっていて、 >依頼データをもらった時点のマスタの値を依頼データに付加して保持しないと >いけないケース。 これは別に全然問題ない 「顧客名称のみの登録もできる」 「依頼データをもらった時点の値を保持する」 という仕様のもとに設計して正規化すればいいだけの話 >複雑な料金計算の設定マスタなど、既存のデータと処理をそのまま移行する >必要があって、下手にデータの持ち方を変えてしまうと、 >明確に仕様化されていない部分の動作が保障できなくなってしまうケースなど。 これはありがちな話で、実際妥協してしまうことも多いんだけど そもそも「明確に仕様化されていない部分」があることが問題なわけで 正規化できない理由にはしてほしくない その辺は正規化してちゃんと効果有るの? 正規化したいだけの自己満足程度? >>211 正規化することに理由を求められてもな・・ 逆に「正規化しないこと」にこそ理由が必要だと思うんだが 逆に質問していい? 「君の会社の開発標準において、論理データモデルを 作成するという工程はないの?」 最近、クラウド絡みでKVSって聞くけど、別にクラウド云々関係なしにKVS的な構造ってどうなんだろ? 例えば会員テーブルというのがあったとして通常なら(型とサイズは面倒なので略) create table 会員(会員番号,姓,名,性別,住所,誕生日) レコードは 00001,会員,太郎,男,東京都,2000/01/01 00002,会員,花子,女,神奈川県,2000/01/02 ってな感じだろうけど、それを create table 会員(会員番号,属性コード,値) 00001,001,会員,... 00001,002,太郎,... 00001,003,男,... 00001,004,東京都,... 00001,005,2000/01/01,... 00002,001,会員,... 00002,002,花子,... 00002,003,女,... 00002,004,神奈川県,... 00002,005,2000/01/02,... 基本的にジョインはしない。複数テーブルの情報が欲しければそれぞれのテーブルからその都度取る。 メリットとしては ・SQLがきわめて単純になる。 ・DB構造に頭を悩ませる必要がなくなる。 ・スケールアウトしやすい。 ・項目単位でロックが掛けられる。 デメリットとしては ・レコード数が多くなる。 ・今まで1つのSQLで取得できてたものが複数回のSQLになる。 ・今まで1行で帰ってきたものが複数行になるのでコードでループでまわしてレコードを組み立てる必要がある。 個人的にはSQLが単純になるというのが大きい。複雑なSQLなんて見たくもない。バグの原因&パフォーマンス劣化の原因になりやすい。 もちろん、全てのケースでこの形でうまくいくとは思えないが多くの部分はこの型におさめられるのではなかろうか。そうすれば余計な頭を使わなくて済む箇所が一つ減る。 今でも一部はそういう作りはあるけど(汎用マスタ等)、それを可能な限り全てのテーブルでやる。(究極的にはテーブルは一つで全レコードがそのテーブルの中。レコードを区別する為のコードがさらに必要にはなるけど) >>214 >・SQLがきわめて単純になる。 >・DB構造に頭を悩ませる必要がなくなる。 ちゃんとしたDB設計もできない設計者、SQLもかけないようなプログラマにとってはメリットかもしれんがな >・スケールアウトしやすい。 クラウドに適した形式だから、莫大なデータ量で通常ではハンドリングできなくて クラウドにするってならわかるが、クラウド考慮しないなら関係ないんじゃない? >複雑なSQLなんて見たくもない。バグの原因&パフォーマンス劣化の原因になりやすい。 すくなくとも複雑なSQLがパフォーマンス劣化の原因ではなく、(SQLにより実行される)複雑な処理が原因なわけで >・今まで1つのSQLで取得できてたものが複数回のSQLになる。 >・今まで1行で帰ってきたものが複数行になるのでコードでループでまわしてレコードを組み立てる必要がある。 ような状況で、パフォーマンス劣化は避けられるどころか余計悪くなると思うがな >多くの部分はこの型におさめられるのではなかろうか。そうすれば余計な頭を使わなくて済む箇所が一つ減る。 頭使わなくて済む個所が減ったらダメだろw いままでSQL書いただけでやってくれてたことを、全部自前で実装するんだぞ? プログラムしないといけないことも増えるし、頭使うとこも増えると思うがな >今でも一部はそういう作りはあるけど(汎用マスタ等)、それを可能な限り全てのテーブルでやる。( いまのRDBMSでも、やろうと思えばそういう風にできるわけだ でも普通はみんなそんなことはやらない。それが答えだと思うがな メリットデメリットってのは、何に対してなのかはっきりさせてから評価してくれないか このままだと頭使わない奴にとってメリットがあるって結論になるなw >>216 >クラウドに適した形式だから、莫大なデータ量で通常ではハンドリングできなくて >クラウドにするってならわかるが、クラウド考慮しないなら関係ないんじゃない? 最初は考慮してなかったが後からやっぱ必要だった!(見積もりが甘い?)って時にはメリットになると思います。 >ような状況で、パフォーマンス劣化は避けられるどころか余計悪くなると思うがな SQLだとちょっと書き方変えるだけで10倍、100倍もパフォーマンスが違う事ってありますよね。みんながみんなSQLのエキスパートであれば問題ないのですが。それに比べればましかなと思ってます。もちろん処理内容によりますが。 >頭使わなくて済む個所が減ったらダメだろw ”余計な頭を使う箇所が減る”の間違いでした。 >メリットデメリットってのは、何に対してなのかはっきりさせてから評価してくれないか メリット、デメリットは一般的なテーブル構造(先の例での前者)に対する、KVS的なテーブル構造のメリット、デメリットです。 >このままだと頭使わない奴にとってメリットがあるって結論になるなw おっしゃるとおりで、このスレッドの趣旨には反しますがこれが一番のメリットと思います。頭を使う必要が少なければ、設計する人によって品質がバラバラという可能性が減るのではないのでしょうか(こういう構造で業務を満たせるのであれば)。 職人頼りなシステム開発が工業製品へと一歩前に進めるような気がします。 >>214 こんなことしなくても みんなお前ほど頭悪くないから大丈夫だよ 開発効率が30年前に逆戻りすることだけは確実だな… 馬鹿でも扱えるようにしたら色んなところで問題が出るってなぜわからんのだ。 カスレベルの人材でも働けるのは業界にとって大きなマイナスだ。 >>217 >職人頼りなシステム開発が工業製品へと一歩前に進めるような気がします。 逆だ。DBでやらない分アプリでやることが増えて、 プログラマの腕頼みになるだけだ みんなが言ってるとおり、時代に逆行しているよ カスは時給安くても働くから、時給高い熟練は不要になるしな。熟練にしか出来ない正規化とかの無駄な仕事が必要www 単にDB使いこなせないからアプリでがんばるよ的発想だよな。 SQLを使ってたほうが遥かにパフォーマンスが良い現実。 これまでの歴史で今の状況に成ってるのを理解しないと。 オブジェクト廚が、オブジェクトDBなら便利になるぜとかのたまってたけど遅くて結局は消えてるし。 また馬鹿が湧いて、無駄な事を繰り返すのかな。 >>217 >最初は考慮してなかったが後からやっぱ必要だった!(見積もりが甘い?)って時にはメリット クラウドにしやすい、ゆえにスケールアウトしやすいメリットがあるっていうならわかるが クラウド云々関係なしに ってのはお前の出した前提条件だが? クラウドにしないでスケールアウトってんならデータ形式はあんまり関係ないだろ あくまでクラウドに適してるのがメリットであって、スケールアウトは副次的な話だ >SQLだとちょっと書き方変えるだけで10倍、100倍もパフォーマンスが違う事ってありますよね。 オプティマイザが入るSQL処理でさえ簡単にそれだけの差がでる。 自前アプリでその処理をやるわけだ みんながみんなSQLのオプティマイザより賢くプログラム組めるのか? >みんながみんなSQLのエキスパートであれば問題ないのですが。それに比べればましかなと思ってます。 みんながみんなプログラムのエキスパートであれば問題ないのですが。 それに比べれば(SQLの方がオプティマイザある分)ましかなと思ってます >メリット、デメリットは一般的なテーブル構造(先の例での前者)に対する、KVS的なテーブル構造のメリット、デメリットです。 いやだからその2者をくらべたときに、誰にとってメリットデメリットだと? ほんとに頭使わないシステム開発者にとってのメリットでいいのかよ >品質がバラバラという可能性が減るのではないのでしょうか 減るかもしれんな。頭使わない安価粗悪な物によってまともな物が駆逐されてな 全体のレベルを下げるだけだ。品質低い方に統一してどうする >職人頼りなシステム開発が工業製品へと 工芸品が工業製品になるためには、その職人の技が一般化されてることが必要なわけで 一部の人しかできないことを、だれにでもできる事だけで作ったとしてもそれは単なる粗悪品 一部の人しかできなかったことを、誰にでもできるようにしないと意味がない そのために論理や技法があり、それを学んだり論議したりしてるんだよ お前の主張は、 工業製品ならだれでも作れないとダメでしょ。 馬鹿にはシステム開発できないんで、システム開発は工業製品じゃないよね ってことだ >>217 > みんながみんなSQLのエキスパートであれば問題ないのですが。 SQLのエキスパートはそんなにいらない。 もちろん、一見優秀そうなゴミでは何の役にも立たないが…。 おっ!最近レス多いですねぇ。いいじゃないですか。 スレの趣旨に合っていれば、DB技術者の意見を気軽に言い合ってもいいんじゃない。 レスが一つ入ると反応する方が結構居そうなので。 それぞれ扱ってるシステムの規模や影響、会社の風土とが違うでしょうから、 一概に良いか悪いかは言えませんが。 >>214 とりあえず、「KVS的な構造」といって後者はないだろう。 >>214 COBOLやRPGの時代にそういうテーブル設計しているのありました。 今SQLで実装している業務を試しにCOBOLで実装してみたほうがいい。 まあ、あの時代はある種夢の時代だったな。 「おれ5000ステップのプログラム作っちゃったぜ!」と 無駄に長いプログラムを作れば儲かった頃だし。 ちなみにSQLより速い処理が組めるRPGやCOBOLのプログラマなんて ツチノコ並みの珍獣だと思うが。 >>228 COBOLやRPGは知らないけど、「処理の速さ」という点では プログラムでゴリゴリ書いたほうが良いこともある DB側(リレーション、制約、ストアド、SQL)に機能を持たせる 一番のメリットはやはり保守性だろう サーバーでやるかクライアントでやるかの違いだろうね。>>214 メリット・デメリットは>>214 の他に メリット 自分で最適化できる。 デメリット サーバー/クライアント間のデータ転送量が多くなる。(高速LANなら無視できる) かな? >>229 ストアドの速さに勝てるの?ありえなくないか? DBに機能をもたせると保守性は落ちるとおもうが。 ストアドにしたからといっては飛躍的に高速になるわけではない。 データをどこに持っているかにもよる DBMSに格納されているなら、そのDBMSに特化したストアドより早く外部プログラムが 実行できるとは思えない。 ストアドでも外部プログラムでも、ロジックは同じように作れるわけだからな 保守性については、システムの保全とか改修のしやすさとか、 何を主眼として保守性とするかによって変わると思うが >>234 「保守性」っていうのは、改修の効率の良さ、再利用性の高さ、 論理的整合性の保ちやすさなどをひっくるめた意味で書いた 曖昧な定義でごめんね >>235 だったら外部プログラムならなお一層遅いだろ? 論理性がまったくないようだけど本業のほうは大丈夫? 他のクラウドで処理したデータも拾ってこなきゃならんから遅いだろうね。 全クラウドが、光ファイバーで繋がってて、膨大なクエリ処理しても、遅延は最大でも数百ナノ秒だぜってわけじゃないだろうし。 サーバーサイドの処理と限定して話をするけど >COBOLやRPGは知らないけど、「処理の速さ」という点では >プログラムでゴリゴリ書いたほうが良いこともある SQLの実行エンジンの最適化処理でブロックI/Oやらをやられると プログラムで1行FETCHや1行WRITEしている これらの言語は太刀打ちできないワケだが。 そりゃ、OSのAPIを直打ちするレベルになれば別だけどな…。 今時のRDBMSは統計情報を元にSQLの実行プランを最適化するが、 一般プログラマにコレを越えるプログラム組めって言っても かなり辛い。 むろんプログラマが書いた方が良いこともあるだろう。 どんな例か知らんけど。 なんかストアドよりインデックスが速いよスレの二番煎じな流れだな。 詭弁のガイドライン 2.ごくまれな反例をとりあげる 「だが、RDBよりプログラマが書いた方が良いこともある」 15.新しい概念が全て正しいのだとミスリードする 「クラウドで使われているKVSを使わぬ限りシステム構築に明日はない」 >>239 > 今時のRDBMSは統計情報を元にSQLの実行プランを最適化するが、 > 一般プログラマにコレを越えるプログラム組めって言っても > かなり辛い。 腐るほどあるよ。 >>241 腐ったSQLを平気で書くプログラマのプログラムを想像した。 北へと旅に出たくなった・・・ >>241 腐るほどある。と言われても、AS/400みたいなマシンで無い限りSQLと他の言語の 速度比較とかは出来んはずだが、AS/400なんざ普及していないだろ。 RDBMSでSQL使うよりもC++でコレクションクラスを使った方が速いよ、なんて 議論無意味だしな。 ちょっと議論の的がズレていってない? >>214 は、処理の速さについては メリットとしてもデメリットとしても挙げてないんだし 問題の本質はそこじゃなくない? 単に屑PGが適当に組んでも速度が出ないと困るってか? SQL覚えるのが一番の近道。 >>244 問題の本質とは? 確かに、214さんが処理の速さについては 言及しておられないようです。 ただ、私見ですが214さんがSQLを良く 理解しておられないのは感じます。 開発側とすれば画面に表示する情報を 1SQLで取得できるように設計するべきで、 その方が楽だと思いますがね。 遅かったら運用のせいにも出来るしね。 >>242 まぁ、そんなこと言わないで、がんばって行きましょ。 分かるけどね… >>246 クエリの知識しかないアプリ屋のくせに えらく上から目線だなオイ >>247 いえいえ、とんでもない。 そんなお褒めの言葉、 こちらこそありがとうございます。 単に複雑なSQL組めない屑PGだろ。 select *だけで全部済む様にしたいとか言いそうだし。 まるでオープン系コボラwww >>246 情報を1SQLでとれないってのは、どっちが? まだまだDBのオプティマイザはアホだから、実行プランやトータルコスト考えながらクエリやPG書けない奴はダメだな。 下請けソフトハウスのアプリ屋なんてそんな奴ばっか… 何のためにキーやインデックスがあるのかちょっとは考えてくれよ >>249 複雑なSQLはそれ自体のメンテが大変かもね。アクセスパスは不変じゃないし 無理矢理SQLに詰め込まれても、常に効率が良いとは限らない。 要はバランスだと思う。ちょっと頑張ればSQLのみで済むからSQLに詰め込もうとか、 どうせUAPで処理必要なんだから、SQLでは無理せずにUAP側にロジック入れようとか いろいろ状況もあるだろうし、適材適所で臨機応変に使って行きゃ良い。 まぁ同一システム内でばらばらだと困るので、ある程度の取り決めは必須だが。 ところで、組み込みSQLで select * 使う人はいないはずだけど…。 さすがにそんな人にはコード書かせないでしょ。 >>252 >ところで、組み込みSQLで select * 使う人はいないはずだけど…。 >適材適所で臨機応変に使って行きゃ良い。 >>250 こんばんは。246で発言した者です。 どちらかとの御質問ですが、どれとどれのことか分かりませんでした。 私が不出来なもので申し訳ございません。 先に私が発言した主旨としては以下の様になります。 開発側の人としては画面に表示するデータが1SQLで(select * は論外ですが)、 もちろんジョイン、必要であればサブクエリーを使用し取得したデータ群を、 使用する言語によったデータセットで使った方が楽なのではないかと思った次第です。 (それぞれの環境次第なので一概に言えないのは分かっております。) 214さんはそれぞれ必要な都度SQLを発行し、表示するデータを構築される ように思われたので上記の様な発言を致しました。 ただ、214さんがデメリットでそのことを挙げておられることを見過ごしておりました。 申し訳ございません。 先に私が発言しました「214さんがSQLを〜]の発言は撤回させてください。 その後の「遅かったら運用の〜」は私の過去に受けた経験から発言したものです。 開発より、運用に従事している期間が長いものですから。 >>247 お気を悪くされましたらお詫びいたします。 >>254 そもそもの発端はKVS的な設計はどうだろうって論題で、 KVS的な設計では1SQLでデータ取るのは不可能だって話だ それを前提にしてるから >214さんはそれぞれ必要な都度SQLを発行し、表示するデータを構築される ようになってるわけで 1SQLでデータ取れるような設計しろってのは、議論の前提がおかしいだろうが >>255 その言い方だとDB設計者は開発側の人間じゃないように聞こえるが >>214 は、この設計を既存のRDBに割り当てて使うって言ってんのかな。 それなら駄目すぎて話しにならんと思うが。 そもそも「KVS的」といって>>214 みたいなのが出てくるのがおかしいし、 あれが1SQLでデータが取得できないというのも変。 いったいオマエラ何の議論をしているの? 具体的に1sqlってどこまで許すのか示されてないしな。 まあdb知らない人みたいだから無茶言いそうだが。 こちらの方がおっしゃっている設計指針についてどう思われるでしょうか。 http://masuda220.jugem.jp/?cid=11 ・テーブルの役割・用途は一つ ・(極力?)データに対する更新・削除は行わない など なるほどとも思うのですが、役割に応じて分割すると あまりに細かく分割しすぎて見通しが悪くなりそうな気もしますし、 データの更新・削除を認めないのは冗長かつ非効率な気もします。 実務による、というお答えが返ってきそうですが、一般的な設計指針として ご意見をお聞かせいただければ幸いです。 >>262 モデリングの手法としては合ってると思う ただこの後の工程で、パフォーマンスや効率性を考慮して 冗長化、非正規化することは必要だけど >あまりに細かく分割しすぎて見通しが悪くなりそうな気もしますし、 モデル上は、細かくテーブル分割してあるほうが分かりやすいよ テーブル名とリレーション見るだけで何を表しているか分かるからね >データの更新・削除を認めないのは冗長かつ非効率な気もします。 「データの更新・削除を認めない」って書いてあるところが見つけられなかったんだけど、 どこから引用したの? >>263 レスありがとうございます。 書籍などではここまで言及してあるものを読んだことがなかったので、 どうなんだろうと思っていたのですが、正しい手法なのですね。 (「正しい」という表現が適切かわかりませんが) > 「データの更新・削除を認めない」って書いてあるところが見つけられなかったんだけど、 > どこから引用したの? これは少しコメントを端折り過ぎました。 「テーブル設計 データモデリングのエッセンス(2)」などに書かれているのですが > ビジネスイベントは一度作成(インサート)したら、後から、更新や削除はしない。 > このテーブルに許される操作は、インサートと参照のみにする。 とあります。 また、ビジネスリソース系のテーブルについても同様の方法を取ることもあると書かれています。 ここに書かれている業務システムの例に合わせて言えば、 受注テーブルは最新の状態にしておき、更新や削除の記録が必要ならば別テーブルにログとして保持する。 受注テーブルにはキャンセルされた受注や変更前の受注は保持しない。 というのが主流だと自分は思っていました。 また、導出テーブルをトリガで作成するという手法も初めて知りました。 >>1 1. Excelのワークシートと勘違いしてるから。 2. 設計&指揮者がコードに関心があるのにデータに関心がないから。 レベル低すぎ? むしろコボラ上がりが、繰り返し項目を使いたくって、 正規化なんか理想論だ、実際は性能が落ちる原因だとか トンデモ説を信仰している(ふりをする)からじゃん コボラ上がり(かつRDBを知らん)奴なんて数えるほどだろ。 それよりも、RDBしか使ったことがなくても実はわかってない、ってのが 圧倒的じゃないか?>>265 の言うexcelと勘違いしてるようなのとか。 ファイル設計の延長くらいにしか考えてない奴は多いな コボルの本読むとそんな感じだしな。 正規化なんて全く記述無し。 そりゃ正規化はRDBでしか必要ないからな!固定長レコードで正規化 してもテーブルの連結がめんどくさかったら意味ねえ! そういえば昔、上から全項目を固定長にしろとお達しがあって、嫌々やったら速度が上がった (つーか、負荷テスト後もあんまり性能が落ちない)DBがあったなw その昔の経験って、今も成り立っているのかな? そこが曖昧なまま薦められても困るのよね。 今は一般的にはtext型みたいなのが一番速い 長さチェックも空白詰めもしないから ただしOracleだけは固定長が速い >>273 逆だろ。 Oracleには固定長の文字列型なんてないはず。 最小長と最大長が等しい可変長文字列を、便宜上固定長文字列型って騙ってるだけ。 まぁほとんどのDBMSで、列サイズが固定であるが故の速度的メリットは大きいから、 Oracleでも可変長文字列を入れていた項目を擬似固定長に変更した時の速度向上は 見込めるかもしれないって程度。 > 固定長の文字列型なんてない > 列サイズが固定であるが故の速度的メリットは大きい 矛盾してないか? 最初の文は、内部的には可変長文字列の特殊設定だと 言っているような気がするんだが。 DB2も固定長の方が速いけど。 text型みたいなのはある程度まではそこそこ速いけど、 ある閾値を越えると急に遅くなったりするので 処理系しだいだろうとは思う。 つか、Oracleとかの「こうすると速い」系のネタは都市伝説が多いよなー。 商品コードとかの長さが決まっている項目なら固定長で、 備考の様な長さが不確定な部分は可変長と素直に設計していけばいいのでは? 「速いから固定長」とかはなんか違うだろ。 「考えるのが嫌だから全て可変長」の方がまだスジが通っている。w >>275 Oracleは内部的には全部可変長扱いだって聞いたことがあるからそのことじゃね? DB2とかだと内部的にCHAR型とVARCHAR型は別扱いなので、きちんと使い分けた 方が望ましいけど、Oracleはちょっと変態なのでムリにCHAR型にする必要はないと。 (全ての?)列サイズが固定で速くなるってのはまた別の話で、データの格納と言うか、 表領域の使われ方のことではないかと。まぁどっちかって言うと行サイズだが…。 HiRDBだとFIX表ってわざわざ宣言したりするね。 オラクルは昔と今では、だいぶ違うけどな。昔の経験なんて引きずってたらそれこそコボラ状態。 DB2とかは固定長・可変長は分けて処理するしNOT NULLな制約も考慮して 適切な設計にあわせて実スピードは上がっていく。 逆に設計がアレだとあんまし速度はでないRDBMSだな。 Oracleも昔の都市伝説と言うか、昔のヘンテコ小技を今のVerに持ち込むのは ヤめてくれって感じるな。 普通に設計して普通にSQL書いてください。 何でOracleはヘンテコな仕様なのに普及したんだろうね? M$やらIBMやらが注力しなかったからかな? >>282 ごめんね、キミの大好きなOracleを馬鹿にしちゃってwww 今日もアホなテーブルとクエリを見てゲンナリした ○○○○○は遅いねってお前の設計が(ry >>282 性能がいいものが売れるとは限らない。 大人の事情というのがあるんだよw まあそれほどまでに当時のSQL鯖/サイベースとDB2が糞だった訳で。 オラクルの出現で競争が生まれ、それらも今やかなりマシになった功績は大きい。 周りのヘンテコDB仕様に合わせて客取り込んでいって成長したから、今でも名残が残るのはしょうがない。だんだん洗練してヘンテコ仕様もろとも下位互換は切ってくだろうけど。 そもそもまともに使えるRDBMSを最初に売り出したのがOracle。市場での競争が始まるのが 後発のInformix、Sybase、Ingres等が現れてから。DB2もあったけど、当時のIBMはIMSの 商売の方が重要でDB2はほとんど力を入れておらず、顧客がRDBMSを必要とする場合に 程度でSymfowareやHiRDBのような扱い。 MSのSQL Serverや、他社OSでも使えるDB2 UDB(の原型)が現れて現在のような競争状態に なるのはそれよりもさらに後。 過去のことはいいから現在一番ましなRDBはなんなのさ。 今の製品はだいたいみんなまともだろ?あとはどのポイントを重視するか。 総合1位なんて点数のつけ方で変わるよ。 >>292 じゃあSQLiteが一番だな。これで満足か? サポート契約してるとOracleって結構不具合とかあるんだなぁ、 って感じますが、他のRDBMSでもあるんですかね? DB2も不具合はある。 Oracleよりは少ないが、それだけDB2普及していない証明でもあるような希ガス。 別に不具合あってもいいんだけどさ、それの対応がタマに「我慢汁」とか「それはOSの不具合です」 とか解決に繋がらない回答を貰うと、「あー、Postgresでいいじゃん」とか思うな。 DB2は、「なんでいまだにこんなバグが?」と思うようなのがけっこうあるね。 インスタンスダウン→「次のFPで修正されます」のコンボに何回遭遇したか。 DB2ってiSeriesは鉄なみの硬さがあると思うが、それ以外のプラットフォームは・・・。 Oracleもよくインスタンス落ちるがiのDB2は落ちた事がない。 これもIBMの中の人とガチで仲良し(?)レベルで会話できる人が少ない性もあるんだろうな。 単にasはろくな処理してなくて使い込んでないから固く見えてるだけじゃ。 全部as内完結で、不安定になる様な秘穴を突けなくしてあるとも言うが。 オラは、いろいろ弄れる割に秘穴を突いてしまう確率が高くなるだけ。 ちゃんと組めばド安定で運用出来るよ。RACも組めるし。 ポスグレはサポート無いから、業務では選択肢に無いな。 マイエスはオラクルがサポートしてくれるなら、これから使う鴨田が。 結局なんだかんだ言いつつサポートの有無でプロダクトを選ぶという矛盾が 別にサポートあったって落ちたときに損害補償してくれるわけでもないんだし 金払うだけ無駄なのがサポートだぜ パッチの提供なんて逆にPostgreSQLなんか速攻で修正されて出てくる オープンソースだから原因も即バレで、仕様ですと隠される事もないしな 矛盾つーか、セルフサポートできるんならOSSも選べるってだけだろ。 一応サポート契約していれば、どんな障害/質問に対しても「マニュアル 読め」以上の何らかの回答を一定期間内にしてくれるし。 んでその回答って役に立つのか? PostgreSQLの構築/運用実績あるSIにやって貰った方が Oracleに無駄に500万払い続けるよりマシな気がする >>303 サポート契約してれば何か起きたときの事故対策会議で「サポートに問い合わせ中です」 って言える。もちろんその後は「原因不明なので再現待ちです」って逃げる。 DBMSに限らず、商用OS等でも良くあるが…運用担当者が泣く黄金パターンだよな。 まぁ実際問題として、サポートにまともな回答もらえるとはだれも思ってないんだよ。 ただ、実質使えないサポートであっても、それを望んでいる客がいるのもまた事実だから、 そういう提案してしまうのはしょうがないと思う。 >>303 そりゃ役に立つ人はいるだろうさ。 当然、Postgresでシステム構築したとしても、Postgresのサポートを 必要とする場合だってあるだろうし。 >PostgreSQLの構築/運用実績あるSIにやって貰った方が >Oracleに無駄に500万払い続けるよりマシな気がする ぶっちゃけその通りだけどな。 漏れの中ではOracleは言うほどマシなRDBMSじゃないと認識している。 Oracleが必要な業務があるのは事実だろうが、多くの導入例では 「Oracleはいらんだろ」的な納品されている現場は多い。 しかしPostgresのシステム構築やサポートできるSIなんて 付き合いある範囲じゃ見当たらないな。 オープンソースのDBすら自分で構築しようとしないエンジニアって・・ それは「システムを自分で開発しないエンジニアって」と言っているに等しいぞ。 内製するかどうかとオープンソースかどうかなんてあんま関係ない。ただ、開発を SIに任せる場合にOSSで受けてくれる業者がほとんどないというだけ。 >>308 知り合いかどうか知らんがPostgresはNTTやらNEC系はやってるな。 別に漏れもヤれと言われれば並みのOracle程度には出来る。 つか漏れも社内のなんちゃってテスト環境用にはDreby使っている。 まぁ会社としてサポートするとなると、スキルのある要員の継続確保が問題になるな。 俺的には別に特殊なスキルが必要とは思えないのだが、商用/フリーに関わらず 調査すら出来ない人間ってのが意外といるわけで。 OSSは裾野の部分がまだ弱いからねぇ。研修制度とか、サードパーティの層の厚さとか。 Linuxは大メーカー自身が手がけるようになって大分よくなったけど。 オープンソースのサポートなんて遣るくらいならオラクル保守入って丸投げのほうが楽だな。 オープンソースで手厚いサポートできるようなスキルある香具師雇うなら、オラクル以上に金かかりそうだw オラクルに損害賠償請求する馬鹿企業は居ないが、個人に損害賠償してくる馬鹿企業は山ほど居るだろうし。 >>314 凄い妄想だな。 底辺のオマエには知らん世界だろうが、Oracle使った案件でも契約書に 損害賠償跳ね除ける文面が契約事項としてあげてあるベンダーがほとんどだが。 Postgresにサポートが無いとか、お前らシロート? 比率で言うならOracle信者ほど素人が多いのは不思議な現実。 サポートが心の拠り所らしい。 別に「Oracleはインタンスが絶対に落ちなくてサポートが満足な製品で漏れは一度も苦労した事ない」 と言える製品ならそれはそれで構わんよ。 漏れはそんなOracle見た事ないが。年に1・2回はイミフメイに落ちる。 ただまあ、漏れの経験でイミフメイに落ちた場合サポートに問い合わせても「原因不明です。OSかハードに問題があると思われます」 の逃げ口上が出て終わりなんで、PostgresだろうとOracleだろうと能力のない人間が構築したシステムは どれも自殺したくなる。 むしろ、上の発言で出てきた問題を全てIBMに投げられるiSeries、もしくはOSSだからと言う理由でPostgresを 選んだほうがラクになれる。 今までで一番酷かったのがLinuxの8iだな 2000万払った挙げ句、使用は自己責任でとか言われたw Linuxの8iって人柱Verだった頃のじゃね? まあ、未だにそれで動いているトコはあるんだろうけど。 要するに人柱バージョンを2000万でうりつけてるのかw 値段は規模にもよるから、Linuxで8iで2000万が高いか安いか判断が難しいが。 HP-UXの8でもそれくらい取るベンダー見た事あるし。ただイニシャルはともかくランニングコストは あんまし安くなかったが。年600万くらい。 Linuxの8iは自己責任と言うからにはランニングコストは0なんだろ。w DB2(iSeries)だとイニシャルは下は300万で上は2億くらいの幅でランニングは100〜600万くらい飛んでいく。 8iの頃はソラリスが鉄板だったので、リナックスなんて選んだほうが自殺行為なだけ。 東証がポスグレ採用なんて無謀な事はしないのと同じ。 IBMに丸投げ出来るぐらいの資金が有るなら、日電や不実に丸投げしてオラクルの面倒見てもらえるけどな。 うちはRACだけど意味不明に落ちてもリカバリは出来る仕組みにしてるよ。 そもそも絶対に落ちないなんてあり得ないし、ソフトのバグが無いのも信用してない。PGなんてバグ入りの欠陥品しか作れないし。製造業の品質管理に比べたら認識が甘過ぎるよ。 逆に、ポスグレは絶対落ちなくてサポートも満足と保証されてるの? 2億の案件でポスグレで組んで、損害賠償なんて喰らったら人生終わるなw oracleは絶対落ちないなんてありえない前提なのにpostgreには要求するのかw どんなdbを使おうがフェイルセーフな構成にすればいいって自分で答えだしてるじゃん >>326 なんかあんまし大型案件やった事ないみたいなのでコメントだが。 規模と傾向もあるが基幹系ならIBM(i)とその他のベンダー+Oracleの組み合わせだとIBMの方が半額くらいのコストで開発・運用が可能だ。 無論、Oracleの方がコスト安いケースもあるが、「IBM=高い」と言うのは思い込みだ。 ある程度以上の資金がいるのは事実だが、>>326 の意見は「安物買いの銭失い」な思考だ。 そして東証もけっこう落ちてるじゃねーかw いいよな。天下りで仕事もらえるようなところは。 東証を落としてもお咎めなしだぜきっと。 痛い目に会うような複雑なシステムじゃないから or ( 痛い目は末端がくらって表に出ない and それが痛い目だと気が付いていない ) ちゃんとコスト計算が出来るまともなエンジニアが皆無。 アプローチ使ってるけど、アプリの使い方じゃなくて、データベース設計の初心者本てなんかないかな 賢者に聞いていいですか? たとえば、2chとか「PC等」→「プログラム」→「【PHP】CakePHP」→「レス」って構成ですよね。 これってどういうDB設計になってるんですか? 実務経験がないのでわかりません。 「PC等(カテゴリID)」→「プログラム(カテゴリID+サブカテゴリID)」→「【PHP】CakePHP(サブカテゴリID+スレID)」→「レス(スレID+レスID)」 →「デスクトップ(カテゴリID+サブカテゴリID)」→「cpuをとっかえたい(サブカテゴリID+スレID)」→「レス(スレID+レスID)」 って感じですか? 1つのデータベースに、テーブルを1000個とか作ることとかあるんですか? その場合、テーブルの名前を特定して探しにいく方法でしょうか? 普通に考えれば2chはファイルだし、事実そう。 RDBで実装する意味が解らん。 2chの量でもファイル入出力に耐えれるものなのか。 人間のイメージなんてちっぽけなものなんだな。 >>341 実務経験がないから仕方ないのかもしれんが、 RDBに不思議な幻想を持つのはヤめた方がいい。 2chの場合は要求される仕様が「追記オンリー、更新は基本なし、当然削除もなし 発言は1000もしくは512KB(板によるが)で、ブラウザを使うユーザーにはhtml変換し 専用ブラウザはdat直読み。 そして圧倒的な書き込み&PVときたら並のRDBMSでは即死する。 ありがとう。ファイル入出力の方がいいんだね。 たしかに、DBは偉大ってイメージがあるかも。組み込みエンジニアだからDBに縁がなくて。 twitterと2chは同じようなものかと思ったの。twitterはDBだよね。メンバーの紐付けあるし。 無数にレコードが追加されるからどういう設計なのかなーって。 twitterは細かい事は知らんが、最初Rubyとデータベース使って結構落ちてなかったか? そりゃ2chだってタマに落ちるけどな。 ファイル入出力のほうがいいというのは間違い。ISAMファイル直弄りのコボラーに成りたいならともかくw ツイタはしばらくすると消えるからdbのほうが向いてる。 潤沢な資金力さえ有ればdbでも捌けると思うけどね。 東京証券取引所の売買銘柄数や売買高でもちゃんとdbで注文捌いて約定処理が出来てるし。 組み込みでも携帯のアドレス帳ぐらいはdbで作ってあると思うよ。テキストファイルで管理だと大変だし。 当然組み込み用のdbもある。 http://pc11.2ch.net/test/read.cgi/db/1207476744/ RDBMS比較総合スレ 【サーバ】 http://pc11.2ch.net/test/read.cgi/db/1063716668/ MSDEよりいいDB、ありませんか? >ファイル入出力のほうがいいというのは間違い。ISAMファイル直弄りのコボラーに成りたいならともかくw (略 >潤沢な資金力さえ有ればdbでも捌けると思うけどね。 金かければなんでも出来るだろ。 コストパフォーマンス無視して「DBの方が向いている」なんて・・・。 2chのサーバーと同じ導入コストでRDBMSを用いて実装し、 2ch以上のパフォーマンス出してから語ってくれ。 そして東証も派手に落ちてニュースになったんだが。 あれを「ちゃんとdbで注文捌いて約定処理が出来てるし。」とコメントできる神経が凄いな。 お前らDBDB言ってるけどRDBMSのことだろ テキストファイルだってなんだってDBはDBだ twitter は、元は Ruby on Rails じゃなかったっけ。今は知らないけど。 RoR は O/Rマッパーに ActiveRecord 使ってるから、多分バックエンドの DB は RDBMS だとは思うけど、何を使ってるかまでは調べてない。 そういえば、ニコニコ動画のコメントサーバはバックエンドに MySQL 使ってるね。 更新頻度の高いテーブルと低いテーブルに選別して、InnoDBとMyISAMを 使い分けてると、どこかに書いてあった。あと memcached だったかの キーバリューストアも併用して、パフォーマンス稼いでたはず。 ってか、この辺の話はDB設計と言うより、アーキテクチャ設計の話だね…… むしろバックエンドにDB使ってないシステムなどまずない とりあえず、>>350 が利用している2chはRDBは使っていない いやだからRDBMSじゃなくてDBは使ってるだろ テキストファイルに書き出すのだって独自DBなわけで 逆に東京証券取引所の規模でテキストファイルのほうが無茶だろ。 銀行の取り付け騒ぎで人が大量に押し寄せてATM操作するとISAMでがんばってるホストが堕ちるのと同じ。 テキストファイル自体はdbじゃないだろ。 >ATM操作するとISAMでがんばってるホストが堕ちるのと同じ。 ナニ言ってんだ?コレ? タイムアウトやら領域が足りなくてトランザクションがコケた事とISAMの関連が意味不明。 ISAMでなく、普通のRDBでも帯域&領域足りなきゃ落ちるのは一緒なんだが。 テキストを独自DBと言うのは痛いが、引き合いにホストを持ち出してトンデモ理論展開スナ。 >353-354 データベースの定義 @ Wikipedia > 特定のテーマに沿ったデータを集めて管理し、容易に検索・抽出などの > 再利用をできるようにしたもの。 > 狭義には、コンピュータによって実現されたものを言う。 広義には記録メディアが紙だろうが石版だろうがDBはDBなんだぜ。 テキストファイルは言わずもがな。 とりあえずテキストファイルがDBと言うヤツは ニコ動とか東京証券取引所のシステムを「石版」で構築してから語ってくれ。 テキストファイルだけならDBじゃないけどプログラムとしてテキストファイルを使うなら それを読み出してデータストアとして利用するロジックがあるんだからDBと言えるだろうに ただ石板は情報システム的にDBにはなり得ないから例えが悪い テキストファイルはDBにならないって言ってる奴は、 ミドルエアとしてのDBMSと勝手に解釈して限定してるんだろ。 >>359 追記専用で基本屋外設置かつメンテ頻度も大変低いという条件下では 中の人の名前が順に彫り込まれる墓石というデータメディアは大変に 優れたものだと思う。 何より墓石メディアを用いた墓場というDBは古くは古代メソポタミア に始まる何千年もの利用実績があるわけで、侮れん。 必死に話をそらそうとしているのを見ると頭が可哀想な人なんだろうな。 常識でモノを考えて喋ってくれ。 会社でよく「コミュニケーション力が低い」と怒られている人だろうけど。 >357 指摘が全く意味不明だ。 石版メディアを使ったDBは読み書きが遅く電子処理に向かないので、 東京証券取引所では使えない。それだけの話がなんで理解できない? おそらく君が「DB」と呼んでいるものは、正式には「RDBMS」だ。 いやだから現実的に情報システムで利用できる媒体のみで語れよ テキストファイル、パンチカード、印刷物あたりまでは理解できるが 石板をシステムで読み書きするシステムなんて現実的に存在しないだろ >>364 今は純粋に「データベース」という言葉の定義についての話をしてるんだろ? 情報システムで容易に媒体以外はデータベースにあらず、というのは単に君個人の 思い込みであって常識じゃない。 電話帳は電話番号のデータベース。これが常識レベルの解釈。 × 容易に媒体 ⇒ ○ 容易に扱える そういう意味じゃ、石版がNGなら紙もNGだろ。 現実問題として紙に印刷しておいてあとでドキュメントスキャナで取り込むというデータの保存の仕方はあるけれど 石板に掘っておいてあとで読み込むなんて使い方をしている奴は誰もいないわけで だから、昔は住所データベースが手書きだったりしたんだってば。 電子的に扱えるかどうかなんて問題じゃないんだって。 しかし、「データベース」の定義に照らしてもやっぱり2chはデータベースじゃないわな。 >>368 印刷物はDBとして使えるって言ってるじゃんみんな 否定されてるのは石版なんてとんでもない例でしょ? >370 手書き文書は印刷物じゃないし、情報システムと親和性が無いのは石版と同じ。 石版の話は極端な例だけど間違いや嘘じゃない。 「データベースと呼べるかどうか」は、使いやすい/使いにくい、早い/遅いなんて 話とは別次元の問題だよ。 >言ってるじゃんみんな 「みんな」が誰を指してるのか知らんが、世の中の常識とは言葉の認識が乖離してるな。 紙も石板も単にメディアの一種にすぎない データベースってのは、メディアは関係ない ハンドリングの容易さとか管理のしやすさとかは別の話 DBとDBMSの区別ついてない奴が多すぎるな 俺も普段はDB=(R)DBMSの意味で使ってる場合が多いが こういった議論のときはきっちり区別しろよ テキスト/バイナリ、電子メディア/紙/石版wなんてのは単に実装方法の違いだけの 話なんだよね。DBかどうか、ってのは記録された情報の性質で決まる事なんだから、 「テキスト形式で保存したから」「記録媒体がアナログだから」なんて理由で DBじゃなくなるという理屈は根本的におかしい。 うちの墓石にも幕末から死んだ先祖の名前と日付が掘ってあるけど、あれもDBだったんだな 「データの再利用を目的として、特定のテーマに沿ったデータを集めて管理したもの」では ないので、墓石はDBとは呼びにくいな。 上記の目的で墓石にデータを記録したなら、それはDBと呼んで差し支えない。 >>377 >特定のテーマに沿ったデータを集めて お墓の中に入っている人の名前しか入っていないけど。 >データの再利用を目的として 毎年お墓参りしないの? >378 一般的には、墓石は単に故人の名前を残すこと自体が目的だと思うけど。 例えば「大量の先祖の中から特定の故人の名前を探す事を容易にする」のを目的に 墓石に名前を彫ったんだとしたらDBと呼べるんだろうけど。 目的がデータの再利用ならデータの構造も探索に適した構造になってる筈だけど、 故人の名前に見出しが付いてたりはしないだろ? >毎年お墓参りしないの? 俺はしないw つか、お墓参りはデータの再利用なのか? 没年でインデクシングされた故人データベースとして使う事は可能だなw 所詮墓石はデータメディアにしか過ぎない。 墓地の管理人さんも含めて初めてデータベース管理「システム」 と呼べる。 過去帳ならともかく、墓石そのものは集積されていないからなぁ。 >>383 しょうもない話だけど、本質を捉えていて面白いじゃないか。 こういう話を見てると、普段「データベース」という物がいかに 表面的かつ一面的にしか捉えられていないかが解るな。 しかし「データベース」の定義という知識が必要となることはまずないからなぁ。 今では博物学的意味しかないかもしれん。 テキストファイルや紙までなら理解できるけど 石版とかになるともうデータを取り出す目的で作ってるわけじゃないし データベースじゃなくてストレージなんじゃないかと ストレージがなければデータベースも実装できないのだが。 データベースは物質ではなくて概念の名前。 石版の例で言えば、厳密には石版そのものがデータベースなのでなく、石版に記録された情報が データベースなの。 > 石版とかになるともうデータを取り出す目的で作ってるわけじゃないし この話は「仮にデータの集積方法が石版への記述であったとしてもDBはDB」という例え話だろ。 データを取り出す目的で石版を作る事だって当然できる。 ほかのデバイスより読み書きの効率が悪いとか集積率が悪いとか、そんな事はここでは全く 問題ではない。 > しかし「データベース」の定義という知識が必要となることはまずないからなぁ。 知識以前に常識の問題だと思う。 データベースという言葉が何を指すのか知らないで日々その言葉を使うのか? 狭義のDB=DBMSの中にもDBって言葉は入ってるんだぜ。 「DBMS」と「データベース」は異なる概念だというのは常識レベルの話だとしても、 あるAが「データベース」の定義にはてはまるかどうかという判断が求められることって こんな議論の場でもなきゃまずないだろ。だいたい、「データベース」という言葉は そもそもDBMSと比較して定義があいまいだし。 掲示板/BBSという用語を正確に定義付けられなくても2chやるのに何の支障も ないってことよ。 なんでこんな現実性のない言葉遊びで熱くなれるんだ? 職場で「空気読めないヤツ」とか言われないか?>石版データベース君 > あるAが「データベース」の定義にはてはまるかどうかという判断が求められる 日常的に行われている事だけど、当たり前過ぎて普通は意識しないだけだろ。 というか、そんな高尚な話か? 一から十まで常識レベルの話をとくとくと聞かせてるのに、まるで理解してるように 見受けられないから話が長引いてるだけだと思うんだけど。 > 掲示板/BBSという用語を正確に定義付けられなくても2chやるのに何の支障も > ないってことよ。 エンジニアが仕事で使うならそんな訳にいかんだろ。ちゃんとしろよ。 >391 石版の話は単なる例え話だ。言葉の定義は単なる遊びでなく現実の問題だ。 散々感覚のズレを指摘されてるのに反省が見られんな。 こういういい加減な奴が技術者ってのが信じられん。 言葉遊び云々を言うなら、「テキストで保存したらもうDBじゃない」という 主張の方がよっぽど屁理屈だと思うんだ。 >>392 別に判断が必要じゃなきゃ仕事でもしないだろ。そもそも、データベースに該当するか どうかという判断なんて、たとえばどういうケースで何のために行うの? 判断するというより、言葉の指す意味の範囲を知っておく事が重要だよ。 仕様書に「ログインユーザのデータベースを作成する」と書いてあったとして、 書いた側と受け手に共通認識が無いとおかしな事になる。 ぶっちゃけこういう時、勝手にRDBMSの準備をする奴は無能なエンジニアだと思う。 >仕様書に「ログインユーザのデータベースを作成する」と書いてあったとして、 この場合は普通にDBMSを用いてログイン情報を管理する事を想定すると思うが。 要件に「ログインユーザの履歴を記録する」ならテキストに順次書き出しを想定する。 >書いた側と受け手に共通認識が無いとおかしな事になる。 >ぶっちゃけこういう時、勝手にRDBMSの準備をする奴は無能なエンジニアだと思う。 現実の仕事だとすり合わせとか会議があるからありえないケースだが、 そういう発想できる人の方がコミュニケーション能力と実務経験が欠如したエンジニアだと感じる。 DBを作成するけど、所謂DBMSを使わない案件だっていくらでもある。 DBが概念に過ぎない事を知っているエンジニアは、実装はどうするか?という発想になる。 そうでない人はDBMSを使う(仕様作成元は使いたがっている)と信じて疑わない。 > 現実の仕事だとすり合わせとか会議があるからありえないケースだが 勘違いしたまま実装まで行かないのは当然。 だだし、すり合わせの場でその話が出るまではずっと勘違いしてるわけだ。 仕事の仕方は全然違うと思うがね。 >>396 コミュニケーションミスの話はまた別のような。 「AはXである」 「『Iさんの言うA』はXである」 この2つの命題はは異なるからね。 データベースとDBMSは概念が異なるという常識があって、その上でその仕様書に 書かれた「データベース」がどちらを指しているのか明確でなく、さらにその違いが 実装する上で重要な違いなのであれば、普通は確認するよね。 そういう状況で、「『データベース』は必ずしもDBMSを必要としない」といって 勝手にテキストファイルで作ってしまうのも同様に困ったチャンだろうね。 後で客と「データベースを作れと言ったじゃん」「テキストファイルでもデータベースです」 みたいな押し問答になったりして。 石板DB否定派=DBとは実装のこと。テキストがDBの実現手段に含まれる事を想像もしない。 石板DB肯定派=DBとは概念のこと。DBの実装形態が様々あることを理解し、色々な可能性を想定している。 DBを概念として捉えている人は、実装について勝手な思い込みはしない。 > 勝手にテキストファイルで作ってしまうのも同様に困ったチャンだろうね。 その人はポジション的に石板DB否定派だと思う。 >>397 >この場合は普通にDBMSを用いてログイン情報を管理する事を想定すると思うが。 スタンドアロンや組み込みのシステムでもかい? >>400 アンタさぁ、自分ひとりが後者、他の全員が前者だと思ってるだろw >402 いや、常識的な大半のエンジニアが後者、このスレにいる数名が前者だと思ってるが? なんでそう思う? その「数名」ってどこにいるの? その話題でループしてんのアンタ一人じゃない? >405 そもそも石版の話を出したのは俺じゃないんだけどな。 テキストファイルはNGだ、紙ならセーフだ、墓石はどうだ、なんて話をしてた人は 明らかに前者だろ。石版DBの話にチャチャ入れてた奴も前者だと思ってるけど。 あ、君がどっちかは知らんよ。 どうせもう「前者」は居ないんだろうし、 >337以前の流れに戻そうや。面白かったけど、ちょっと引っ張りすぎ。 墓石のチャチャいれ?>>382 なら俺だ。 つかその時点で既にデータベース≠DBMSが前提の議論じゃん。 >>408 >383 とか >391 のつもりだったんだが。 >382はそれもそうだなあ、と思いながら読んだよ。 > その時点で既にデータベース≠DBMSが前提の議論じゃん 君はそうかも知れんけども。 >386 とか >397 は理解してるようには見えん。 なんか休日に寂しい暇人が勝手に敵を作って「俺Sugeee」って言ってるスレだな。 定義厨は他人の意見を絶対に聞き入れないからカキコするだけ無駄だな。 DBとDBMSの区別もつかないレベルの人に仕事が回ってきちゃうぐらい データベース設計が軽視されているという流れでOK? 墓石をデータの永続化対象として何がいけないのか、さっぱりわからん 曰く「実際にそういう実施例が存在するかどうか」が重要なんだそうだ。 頭が固いを通り越してアホとしか思えん。 ログイン認証の情報はテキストに保存しないって言ってる奴正気か? htpasswd知らないとかないよな このスレの本題はRDBMSのスキーマ設計の軽視だが、 実は軽視されてるのはデータ設計全般なんだろうか。 と、ここ数日のやりとりを見ていて思った。 2chのレベルが平均的とは思わないけれども。 マジレスするとこの板が出来たときは8割のスレがドラゴンボール関連だった タイムスタンプにINT型でUNIX時間入れてるのが酷いと思ったけど超えたな 正しい知識を持った人間以外がプロになっているのがおかしい 一級建築士と同じように、充分な知識を学習した人間のみが、 システム設計に参画出来るようにするのが本来の正しい姿。 もう、遅いけどね。 機械設計だって回路設計だって人生設計だって資格はないけどな 十分な知識を学習とかって、実務経験に勝るモノはないんだが。 正確には「各行程を経験し死ぬまで学習意欲があり常に成長し続ける コミュニケーション能力の高い人間」でないと設計はやるべきではない、 が正しいな。 知識なんてあって当たり前でなんの自慢にもならん。 まあ、免許制にして欲しいと思う事は多々あるがw ペーパーでOracleのプラチナやPostgreSQLのゴールド持ってる奴より 無資格で現場で痛い目に遭ってる奴の方がまだいいだろうな どっちが重要なんて比べるもんじゃないだろ。 知識も経験もどっちかが欠けてたらダメじゃん。 知識なんてあって当たり前。経験なんて勝手に積み上がる。 知識は幅広い視野を持つのに必要、経験はその上で必要。 スレチだが、ちまちま何かを作ったのに、それをカバーした上品なライブラリ見つけたらマジへこむ。 「知識より経験」って言う奴って、自慢できるのが本当に経験だけだったりするからな。 そういう奴は得てして怪しげなノウハウを振りかざしたり、理論的な話をするとなぜか怒ったり。 >>429 Platinumはペーパーでは取れんだろう。 >>432 資格もっててスマソw つかDB関連の資格はペーパーはなくなないがある程度以上は実際に使った人間でないと 受かるのは辛いだろ。 現実には資格持ちは「古くて使えなくて胡散臭い都市伝説」を信じてるヤツ多いけどな。 「SQLはこう書くと・・・」とか「サロゲートキーが・・・」とか「こういう場合はストアドが・・・」とか、 「こうやって教えられた」とか、応用を知らんのかと小一時間(ry 実際やらしてみるとパフォーマンスでなかったり、JOBの再投入が不可能な論理設計したりとか。 資格取った後も最新動向やら勉強会やらニュースとか読め。 ペーパーでplatinum結構いるよ goldだとやたらいる その先生方に確認したんだが、 テーブルの主キーの空きを管理するテーブルを作って、 主キーの空きを管理するっていうことを聞いたんだけど、ほんとかぬ? OracleのGoldやPlatinumは講習会受けて取る資格だからな 難しいのは確かだけど時間と金がものを言う資格でもある >>425 1970年1月1日0時0分0秒からの経過秒数をDBに整数型で入れてるってこと? …それはナイスな方法だな。今度使わせてもらうわ。 データ的には軽いけどトラブル対応時に人間が見て全く意味がわからないから死ねる というか死んだ その手の変換ツールぐらい準備しておくものだ。プログラマなら簡単にツールぐらい作れるだろ。 いやだから普通にtimestampでいいじゃんて話じゃないのか プログラム上でだっていちいち変換して使わなきゃならんのだし RDBMSによって実装が違うが、このケースでは普通にtimestampを使えばいいのでは? そういう型がないRDBMSなら仕方ないと思うけど。 Unix系のアプリなら、time_t型を入れると出し入れが便利じゃん。 変換するコストもいらないし。 まあUnix系なら「出し入れ」だけは便利な面はあると思う。 日付や時刻関連でGROUP BYするときにちょっと殺意が沸くくらいだな。 有効期間のあるマスタテーブルの主キーってサロゲートキーにできるのかな? インデックス10個のテーブルに100万件のデータってやばいですか? その辺の安鯖でも楽勝なレベル 要求性能にもよるが、10年前のハイエンドクラスだときついだろうね atom 1.6GHz 2GBメモリで100人ぐらいの共有鯖でもおk? じゃあ性能要件を満たす設計をしてあげたからその分の費用請求ヨロw 0.25人月で60万円でおk 1人月240万だろ?充分高いだろ 俺のとこなんて1人月120万だよ基本orz >>439 国家資格(笑)の情報処理試験受けたことあんのかと あんなもん実務に役立つのはどのポジションだろうが2割程度だろ 「プラズマテレビがガス放電で発光してます」とか知ってる必要あんの? IPAは今年度になってようやく業界のゼネコン型に言及するレベル お勉強しか出来ない無能集団の天下り先 国家自体が無能で仕事遅いしなw ロジックとデータ(論理・物理)見てテストして 壁にぶち当たってマニュアルやら仕様書見て ソースとデータ(論理・物理)見てry・・・・ループ この作業以外で技術力を上げる方法なんか存在しない >>466 糞ワロタお前の情試の例はよりによってITパス/FEの午前かよw 高度のスペシャリスト系は良く出来てる 所詮知識なので合格即実務で出来る、ではないが 「この程度も知らずに実務やってないよね?」感はある >>468 高度がよく出来てる? アホか?回答速報当日出ないような奇問も混じってるわけだが? >>469 お前はずっとFE午前レベルの「プラズマテレビの〜」だけやってろw お前みたいに高度もとれない程度の知識レベルの奴が設計してるシステムとか・・・ 関わってる連中が可愛そうだわ。まさにスレタイにピッタリな人間www >>470 難易度低い時に受けてたまたま取れたヤツが偉そうにしてるの見ると痛々しくなるよな。 基本はわかってるが応用効かないし、製品個別の仕様部分を考慮できなかったりロクなヤツがいない。 専板のDB設計スレが保守の末落ちる程だから軽視も致し方ない 大本の設計程制約少ないから楽に作れるもんなんだが、 逆に末端がどんどん依存してくれるから後で変更するのがた〜いへん。 わかってるとこだとDB設計にコストかけてくれる。 わかってないとこだと作る側の営業と使う側の購買が交渉にコストかけてくれる。 後者、会社関係単位で迷惑。 詳細テーブル全てに予めtempカラム群持たせるのって、 個人的にはかなりの糞だと思うんだが・・・ そうそう ところで激安中古CAD専門店っていいの見つけた。 かなり安いし使える >>474 何百万レコード級のテーブルを 使ったことはある? ALTER TABLEだけで何十分とか 当たり前にかかったりするぞ。 それを思えば、ハナからバカにした ものでもない。 >>477 レコード数が多いからこそ、カラム数を減らすべきだってことが分からないのか? COBOL脳だとRDBにおいてはテーブルサイズが大きくなるとパフォーマンスが加速度的に劣化する場合があることを理解できない。 あいつらなんでもかんでも一行づつ処理しようとする。 処理時間=一行の処理時間(一定)×行数 はRDBじゃ通用しないんだよ 某H関連会社に訪れた際、若手SEが仕様レビューを受けていた 「ここでSQLのSUM関数で合計を取得します」 「それ信用できるの?ちゃんと一つずつ足さないとダメだよ」 21世紀でこれかと驚いた >>478 ケースバイケースだと言ってるんだよ。 絶対どっちか、というものではない。 予備カラムがあっても、理由が充分なら、 それでよいではないか。 予備カラムなんて持たせたら、いざ使う時、意味合いとカラム名が乖離するよね。 検索パフォーマンスが必要無いならxml型にするって手もあるけど DB変更は仕様変更になるから別契約だけど 予備項目を活用する分には保守の範囲内で出来るから 予備を多めに作っとくっていうのがあったな クソだと言われてる設計でも事情でそうなってるのも結構あるよね 予備カラム多用すると、後々どの予備カラムが何の目的で使われてるか分からなくなるw 画面から予備カラムにセットする値にも制限掛からないから、変な値入ってバグってみたり。 そもそも可変長ランダム入出力が基本なRDBのレコードにおいて 予備カラムをあらかじめ作る必要性はうすい COBOLだから予備カラムつくるんじゃなくて、それが動いているプラットフォームが 固定長バッファのシーケンシャル入出力を基本としてたから必要なだけ >>439 あんな天下り先確保のための試験を ボッタクリ価格で受けるとか、 怒りが湧いてくる。 まるで意味のない資格では無いだろ。 とはいえ午後1は酷い問題混じってることあるから、選択運の要素が強いけど。 >>487-488 >>486 は取れなかった奴の言い訳じゃね (w 66427727358778987766457232625+40=66427727358778987766457232665 www.2ch.net toro.2ch.net/db/ toro.2ch.net/test/read.cgi/db/1228061247/ >>1 せっかく合意のとれた業務フローとテーブル設計を 180度ひっくり返しに来る奴(客・身内問わず)がいるから それが最初からわかってるから軽視される この前某中古ショップですごく安いパソコンを発見しました。 ちょうど私はその時新しいパソコンがほしいと思っていて本当に買おうかと悩みました。 というのも2011年製でCPUがCorei5、メモリも4GBあるしHDDが1TBもあってお値段がなんと38000円でした。 まだ発売日からあまり期間も経っていないしこのスペックでこの値段ならかなりお買い得かなと思ったのですが、問題は少スペース型というか拡張性がないタイプのものだったんです。 それにグラフィックボードもついておらず後々の事を考えるとやめといたほうがいいかなという結論に達しました。 結局ネットでBTOのパソコンを後で注文しました。 いやぁしかしまさか周りにあるパソコンの中で一番スペックが高いのに一番安い値段になってるとは思いませんでした。 http://toro.2ch.net/test/read.cgi/hp/1382021349/ http://toro.2ch.net/test/read.cgi/hp/1352858999/ 自分で競馬データベースや競馬新聞を作りたいんだが どんなプログラミング言語を学習すればいいですか? 競馬を通してプログラミングを勉強すれば楽しいと思うし、 仕事にも役立つとなれば一石二鳥。 データーソースは外部の物を利用。 ↓こういう提供されたexcelデータがあるとします 日本小学校 1年 |2年 1組 2組 | 1組 2組 座席番号1安藤 伊藤|五十嵐 飯田 座席番号2臼井 榎本|上田 岡田 座席番号30(全クラス30で統一) ↑をデータベースに格納しようとすると こういう風な感じになると思いますが 日本小学校 一年 1組 座席番号1 安藤 日本小学校 一年 1組 座席番号2 山田 日本小学校 2年 1組 座席番号1 伊藤 視覚的に編集するには前者の方がやりやすいですよね こういう前者のデータ構造は何か名称があったりしますでしょうか また前者のテーブルの横にアメリカ小学校を追加する場合もあります こういうデータを管理するために何かいいツールとかないでしょうか? データベースに格納できるよう変換してくれたり 1年 |2年 1組 2組 | 1組 2組 日 座席番号1安藤 伊藤|五十嵐 飯田 本 座席番号2臼井 榎本|上田 岡田 小 ア 座席番号1ボブ トム メ 座席番号2マリー リ カ 小 こんな風にしたり >>496 そもそもそれはデータ構造と呼べる代物かが疑問なんだが 表現方法としては「マトリクス表」とか呼べばいいんじゃね? ツール?excel使えばいいじゃん excel VBAでcsvを出力するマクロを作れば終いだ ★2ch勢いランキングサイトリスト★ ◎ +ニュース板 ・ 2NN ・ 2chTimes ◎ +ニュース板新着 ・ 2NN新着 ・ Headline BBY ・ unker Headline ◎ +ニュース板他 ・ Desktop2ch ・ 記者別一覧 ◎ 全板 ・ 全板縦断勢いランキング ・ スレッドランキング総合ランキング ・ ログ速 ◎ 全板実況込み ・ 2勢 ・ READ2CH ・ i-ikioi ※ 要サイト名検索 埼玉県警川口署は20日、小学生の女児の下半身を触ったとして強制わいせつの疑いで、 同県蕨市南町、東大大学院博士課程の内藤慶一容疑者(26)を逮捕した。 川口署によると、内藤容疑者は「研究が忙しく、ストレスがたまっていた。少女に興味があった」と供述している。 逮捕容疑は1月4日午後5時半ごろ、埼玉県川口市並木2丁目の書店1階の階段近くで、 当時9歳で小学4年だった女児の下半身を触った疑い。 書店の防犯カメラ画像を解析するなどして内藤容疑者が浮上した。 3月上旬に近くのスーパーで別の女児が下半身を触られる被害があり、関連を調べる。 http://www.47news.jp/CN/201407/CN2014072001001585.html 色々あるけど結論として 役に立たないんだよ。 まじで。 テーブル設計がきちんとしてるだけで オプティマイザがいい仕事するんやで ☆ 日本の核武装は早急に必須ですわ。☆ 総務省の『憲法改正国民投票法』、でググってみてください。 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、日本人の悲願である 改憲の成就が決まります。皆様方、必ず投票に自ら足を運んでください。お願い致します。 インターフェイスが決まってからデータベースを設計するのに今更気づいた。 > 748 名前:名無しピーポ君 :2015/11/24(火) 12:28:48.30 > 噂の日教組保育士がまた報復やったってさ > > 749 名前:名無しピーポ君 :2015/11/24(火) 12:41:16.38 > あーーーー在日居住地にある能満幼稚園の >>504 システム間インターフェイスだとしても、ユーザーインターフェイスだとしても間違っているか? データをどう持つのかを初めから考えていないとUIもデータモデルも失敗する。 >>216 Googleの検索システムがKVSの御時世に何言ってっだこいつ? >>511 8年前の書き込みに何言ってっだこいつ? >>511 >>512 自演なのかも知れんがクッソワロタ スレタイが気になっから来てみたが データベース設計を「テーブルレイアウトを決める」という作業と捉えてる時点でDB設計を軽視してるんだよね テーブル設計はDB設計の中でも末端作業だから、そういう認識から変えたほうがいい気がする 経験上、DB設計出来ますってやつのうち概念設計や論理設計がまともにできるやつは20人に1人いればいいほう 論理設計とかについて偉そうに語れるほど 論理設計が出来るとは思ってないが テーブルを正規化したり 適切なデータ型を決定したり 制約を定義するといったことを 末端作業と言って軽視すのは どうかと思うよ 軽視してるってわけでもないんだがテーブルレイアウトを決めるのはDB設計全体の一部でしかなく それも最後のほうにやる作業だって意味 ある業務に関わるデータをどういうデータ構造で管理するのが適切かを考えようとしてる時に 「Excelのフォーマットを決める」ような作業が、RDBなら「テーブルレイアウトを決める」という作業 「どういうExcelフォーマットにしようか」ってのと同じ観点から始めて テーブル定義書と申し訳程度のER図を書くことがDB設計だと思ってる人がすごく多い DB設計はテーブルレイアウトを決める作業じゃなくて、DB設計の結果としてテーブルレイアウトが決まる システム設計を「クラスの定義を決める」作業として捉えてるのと同じって言ったほうがわかりやすいか クラス図とクラス定義書を書くのが設計だと思ってる人はほとんどいないけど DB設計においてはそのレベルの人がたくさんいるよね テーブルを正規化したり 適切なデータ型を決定したり 制約を定義するといったことが 最も大切だよ それだけの話 それらを必要に応じて 敢えて崩すのはアリだけど 正規化をやらないとかはありえない >>518 それって結局、DB設計をテーブルレイアウトを決める作業と捉えてて テーブルレイアウトを決めるのにはそれらが最も大切だって言ってるんじゃねーの? 例えば正規化ってOOにおけるSRPやOCPみたいな設計原則に相当するものだよ SRPに従ってクラスを分けることがシステムやプログラム全体の設計の中で最も大切だったりする? クラス定義においてならまだ理解できるけどさ それと同じで正規化の知識は必須だし、業務アプリなら当然その設計原則に従ったモデルを作るんだけど DB設計において正規化することが最も大切なわけではないよ >>519 テーブルを正規化したり 適切なデータ型を決定したり 制約を定義するといったことが 最も大切だよ それより大切なことって何かな? >>1 >何故データベース設計は軽視されるのか? 理由を考えてみたが、教育不足と経験不足が大きな原因だと思う まず一般的なプログラムの設計に比べてDB設計はその機会自体が圧倒的に少ない それはプログラムに比べてDBは数も少なくライフライクルも長いし、プログラム設計に比べればDB設計は一人で担当できる規模が大きいから 機会自体が少ないから、業務アプリに関わるエンジニアの中で繰り返し何度もDB設計の経験が積めるような人も当然少ないし その中でも優れたDB設計者となるともっと少ない だから一部のDB設計に特化した会社や部門を除くと、かなり大手でもDB設計に関してまともに後進の教育や育成ができるような人はすごく稀 そうでない人たちに教育・育成されたエンジニアが大多数を占めるからDB設計が軽視されることが自然と多くなる DB設計能力の低いと、どうしてもプログラムの処理に重きを置きがちで プログラムからデータをどう使いたいかという観点でDBを設計しちゃう人が多い(=DB設計の軽視) そういうやり方を見てきた人たちはそれが当たり前だと考えるからDB設計軽視が再生産される 個人レベルでは優れた教育を受けたり、数多くの経験を積むことで負の連鎖からは抜け出せそう 会社レベルではDB設計の機会の少なさと重要性を認識して、優れた育成者を多く育てる努力が必須かな >>520 DB設計において最も重要なことは ビジネスドメインと要求を深く理解して適切なデータモデルを作ること >>522 ビジネスドメインと要求を深く理解するというのは そもそもデータベース設計レベルの話かい? >>523 そうだよ ちゃんとしたデータベース設計には必須だよ 対象のドメインと要求を深く理解しないと適切なデータモデルは作れないから だからプログラムの実装に近い人がDB設計するよりも 要求分析をする人で技術力もある人がDB設計をしたほうがまともな設計ができることが多いよ 後者の場合は組織や責任者がDB設計にとって何が重要か理解しててDB設計を軽視してないっていう理由も大きいけどね。 >>524 ふむ 要求分析をする人で技術力もある人が ビジネスドメインと要求を深く理解して適切なデータモデルを作れば テーブルを正規化したり 適切なデータ型を決定したり 制約を定義するのは やらなくて良いと仰りたいなかな? >>523 大局的には「計算機で効率的に処理可能な形式で対象を表現したモデル」――「対象領域の計算機向けモデル」(数理モデルとか、あっちの意味でのモデル)の構築こそが根本であるので、 それを重要視する、ということ? でも個人的には正規化などのtuple(型)の設計しながらフィードバックしていって上記の概念を理解・把握・構築している感じがある 具象から始まり抽象化する、というか、つまり何なのか、を追求していくとそこに至るというか なので個人的には>>522 兼 >>520 ww データベースに長けた人からみるとまた違うのかな? >>526 ビジネスドメインと要求を深く理解して適切なデータモデルを作る という作業の中に テーブルを正規化したり 適切なデータ型を決定したり 制約を定義する という作業が内包されてるなら そもそも比較することが間違い 正規化も、データ型の決定も、それより上位の工程がちゃんとできてれば ほぼ機械的に決定して薦めれるからなぁ DB設計と、要件定義やモデリングとかとを同一視しすぎてるような気もするな。 本質的に不可分なのだという主張なら、それはそれというか、方向性としてはわかる。 もっとも、そうなるとその線引きは難しいだろうけど。 >>528 機械的にやれるからと言って軽視するのが そもそも間違い >>529 DB設計の一部である概念設計は要件定義の一部 という考え方なので不可分といえば不可分 フェーズの呼び方は会社によって違うだろうけど 要件定義時に概念設計, 基本設計時に論理設計, 詳細設計時に物理設計が基本 DB設計の質を一番大きく左右するのが概念設計 エンティティの漏れやリレーションの間違いがあると 制約の定義漏れやデータ型の選択ミスとは比べられないレベルの悪影響が出る (正規化の多くは概念設計で行われる) もっと狭義のDB設計フェーズという考え方があるのかもしれないけど そういう考え方自体がデータベース設計軽視につながっている可能性があるのかも >>531 その考え方を徹底すると、DB設計はなくなりそう。w >>530 機械的にやれるということと、軽視するということには関連性がない 君はいったい何と戦ってるんだ? >>531 概念設計、論理設計、物理設計のどの段階で正規化するの? >>534 普通は初めから正規化したようなまとまりで考える。 概念モデルに正規化もなにも無いと思うけど 概念を正しく論理モデルにする作業が正規化だろ >>534 >>535 の言うとおり、どこかで正規化の工程があるというよりは 最初からほぼ正規化されたモデルで考えて モデルを改善するたびに正規化違反をチェックしながら都度対応する なので概念設計が終わったらその段階まででの正規化も終わってる 論理設計時にはサロゲートキーや削除フラグみたいなのが追加されて 正規化が崩れる場合があるからその場合も都度判断して対応する 物理設計では正規化に関わるようなところは基本的にいじらない DB概念設計のインプットになるようなドメインモデリングをする時は 概念間の関係とわかりやすさを重視するので正規化されてるかどうかは気にしない 誰でも簡単にパソコン1台で稼げる方法など 参考までに、 ⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。 グーグル検索⇒『宮本のゴウリエセレレ』 DX2Z9GYZ7S そういえば、昔、DB仕様が悪くて、日次夜間バッチ処理が2日かかるシステムがあったな。 今の現場にも「正規化!正規化!」キチがおる、確かに少し歪んだところもあるが、締めのバッチなどでやむを得ず放置されている で、「じゃ、キッチリ正規化してみてよ」ってお願いしたら「影響範囲がー」とか お前はアホか?お前はそれを改善するために「正規化!」言うてたんやろ もう。口出しすんなってPMに怒られてたわ わかってないやつほど正規化と言ってしまう。用語で知ったかぶりをする典型例。 「良い設計」を専門用語で言うと「正規化」だと思ってるような奴がこの板にも多いよね いまどきまったく正規化されていない表を思いつく方が難しい。 それが難しいようじゃあデータベース設計に向いてないんじゃないかねぇ。 >>545 データベース設計よりも、日本語が向いてなさそう。w すべてを2次元の表であらわしているデータなんて、Excelでも見たことない。 テーブルのことを表、インデックスを索引と呼ぶのはいまだに違和感がある 軽視していないけど、人間の脳には難しいからだよ。 人件費がいくらあっても足りない。 ディープラーニングに任せたほうがいい分野だよ。 設計のどの部分をディープラーニングに任せるって話なんだろうか >>550 製品マニュアルを呼んだことがありますか? >>550 製品マニュアルを読んだことがありますか? 軽視したくないけどさ、設計が良いかどうかってどうやって見分けるの? 正規化をバカにする人が多いけど、あれ以外に人に教えられる観点ってあるのか? RDBに関して言えば正規化ほど体系化されててわかりやすい観点は他にはないね 良い設計かどうかは求められた状況に対してどれだけ高い品質特性を備えているかで 観点としては機能性以外に使いやすさ、わかりやすさ、堅牢性、運用性、耐障害性、 保守性(柔軟性/拡張性/変更容易性)、効率性(時間/資源)、移植性なんかがある 正規化はデータ整合性、使いやすさ、保守性あたりを高めようとするもの 正規化は非正規形で起きる問題(更新異常等)を防ぐものであってそれ以上ではない。 実際、更新異常を考慮する必要のないDWHなどでは不要。 >>559 DWHでも更新異常は考慮する必要あるよ 更新異常ってCRUDのUだけのことじゃないから DWHは正規化が不要なんじゃなく ソースデータの正規形をベースに特定の分析用途に特化させて非正規化してるだけ スタースキーマもスノーフレークもDWHに特化した非正規化パターン 非正規形のデメリットはDWHだろうがOLTPだろうが同じ >ソースデータの正規形をベースに特定の分析用途に特化させて非正規化してるだけ 正規形非正規形というのはあくまでもリレーションの表現であって抽象的なデータモデルには そんな区別はないんだが。 だからDWHにおいて >ソースデータの正規形 通常これは実在しない。 >>561 ごめん、何言ってるかわからない 抽象的なデータモデルって何のこと? どっから出てきたの? 更新異常が発生しにくいだけで 考慮する必要がないわけないわな >>561 はエアプが即バレして煙に巻きたいのだろう >ソースデータの正規形 これが抽象的なデータモデルを指しているのかと思ったんだが、そうでないなら話は簡単。 DWHは「ソースデータの正規形」が存在することを要求しないんで>>560 は正しくない。 データソースが正規化された他のDBであることはあるが、それはそのシステム自身の 要求によって正規化されているだけ。 >>557 正規化がバカにされてるんじゃなく 正規化を理解してなかったり正規化されてるかどうか以外にDB設計を見る目がないのに ドヤ顔でDB設計を語ろうとしてる人間がバカにされてるんだと思うぞ RDBと関係ないRやPython使った統計処理の分野でも 分析をやりやすくするために下準備としてDBで言うところの正規化をしてる 更新異常を考慮する必要は全くないけど そういうのごっちゃにすると話が発散するからやめて。 そもそもその「正規化」って、リレーションの正規化と違ってなにをどうするかきちんと定義されたものじゃないでしょ。 それに統計解析向けの加工って、クレンジングは最初に必要かもしれないけどあとは解析しやすいようにJOINしまくるのがふつう。 DWHのスタースキーマから任意に抽出した1つの表の形のデータセット、あれがまさに統計解析向けのもの。 エアプDWHの次はエアプ統計解析かよw なんでろくにやったこともない事を語りたがるのかね データベース設計は軽視されるの原因と エアプ野郎が語りたがる原因の一つに 素人に毛が生えたような人間には難しさが分からず 自分でもできそうに思えてしまうところにある >>571 誰のどのレスに対して言っているのか曖昧でよくわからんが、とりあえずどのレスの どこがどう違っているのかはっきり書いたら? 反論は受けたくないけどマウントだけ取った気分になりたい中学生じゃなけりゃ。 エアプ素人さんはスタースキーマのファクトとディメンションがそれぞれ第何正規形か考えると良いと思うよ >>565 の言葉を借りれば正規化すら理解してないのにドヤ顔で語ろうとしてるのが丸わかりだから ど底辺の土方グラマーだけどDB設計させられて「なんでちゃんとしたDB屋に頼まないんだよ、DBって根幹部分で大切だろ!」って疑問だったけどここ見て納得。 日本の企業が作る(使う)システムがクソな理由も・・・ ある意味当たってる。 そうやってしばらくして、曲がりなりにもER図書いたり正規化ができるようになって いっぱしのDB屋を気取れるようになったら彼等の仲間入り。 >>575 根幹部分だからこそDB中心のシステムを作る開発者なら誰もが身につけておくべきスキルだぞ 要件定義や基本設計を含めて依頼するならともかく DB設計だけを外部に依頼するのは今の時代にはそぐわないので設計専業のDB屋は絶滅危惧種 ホンマにうわさ以上に凄いのが金さんの億様株レシピて投資ブログ。 ここまじで神すぎる! めちゃ当てまくる。 おすすめなのは危険な銘柄と宝石の銘柄て記事に出てくる銘柄。 プログラム組まないやつが設計すると保守性重視になるよな… 人間がパッと見て理解しやすい設計にしがち ナチュラルキー多用したり >>579 ナチュラルキーを多用してるにもかかわらず保守性が高いならいいんじゃね >>580 >>579 は「保守性」と言っちゃってるが、実はたぶん保守性の話やないな。 初見のわかりやすさしか見えてないような、困ったちゃんの話なんやろな。 そうすると保守性を理解してない>>579 が困ったちゃんってことになる すまん、保守性って言葉が悪かったな プログラムの保守性ではなくて ユーザーからの問い合わせ時にデータ見てパッとわかるテーブル構造を好む 人間にとっての見やすさというかわかりやすさも重要な品質要素だからね それを犠牲にして得られるメリットとのバランス次第 何と何をトレードオフしようとしてるのか理解してないうちはまともな設計は期待できない パッと見理解しやすくて保守性も高いならいいことずくめに読めるが。 たぶん言いたいことは逆になにか問題があるということなんだろうけど 結論書いてないから何を言いたいのかわからない。 >>585 理解力なさすぎ。 人工キー+JOIN前提みたいな、不慣れだとややこしげに見えるテーブルを組みたがらない素人の話なだけやろ。 だから、そこで自然キーの欠点や人工キーの利点を説明しなきゃ何を言いたいのかわからんだろ。 人工キーが自然キーより優れているのは自明だと思ってるとかそんなとこかね。 >>587 SQL書くときに条件や結合は少ないほうがバグが発生しにくい プログラマにとってはサロゲートキーの方がわかりやすい しかしサロゲートキーだと生データを見たときにわかりにくいことがある ナチュラルキーとサロゲートキーの代表的なメリットデメリットだと思うけど… その辺天秤にかけてこのテーブルはサロゲートキー、このテーブルはナチュラルキーと決定できるのは 設計もプログラムも保守もやる人。 どれか一つしかやらない人はこのへんのさじ加減わからないのでは。 こうやってブレイクダウンするとどこに誤解があるか見えてくる。 複合キーは扱いづらいのでかわりにサロゲートキーを使うことはあるが 自然キーだと一律にサロゲートキーより扱いづらいなんて理由はないだろう。 >>589 おっしゃる通り複合キーの場合だな 大変失礼しました 設計と保守しかしない年配のSEさんはサロゲートキーを知らずに複合キーを使いまくる傾向にある プログラマは若かったり雇われだったりなので口出しできずにクソシステムの出来上がり >>589 めんどくさ。 そんな話じゃなかったやろ。。。 おまえは、自分が理解できない話を、自分が理解できるようにしたいだけ。w 何が「ブレイクダウン」や。w >そんな話じゃなかったやろ。。。 どういう話なのか、お前はまず言いたいことを結論からハッキリ書くようにしろ。 呼び名はともかく人工キーは80~90年代でも普通に使われてただろうから年配だろうが知らないわけない 複合キーは見てわかりやすいわけじゃないが 人工キーに比べると整合性を維持する設計が簡単なんだよ SQL書く時は面倒くさいから嫌がられるけど不整合が発生するのに比べればマシだから >>593 不整合はユニーク制約つければいいんでないの 同じ型の単純キー同士なら、それが自然キーか人工キーかで扱いやすさが変わることはないやね。 >>593 ちょっと、「整合性を維持する設計」について詳しく説明してくれ >>557 仕様変更に強いかどうか。それと人間にとってわかりやすいかどうか。正規化の話はもっともらしいが、ちゃんとしたテストと運用・保守をやっていれば、ただの非現実的な理屈だとわかる。 >>593 論理的な整合性をアプリケーションで担保する。そうでないとアプリケーションのテストも難しい。 >>598 彼はアプリ屋と壁を作るタイプだから、かかわらない方がいいよ。 >>599 このちゃんとした ってのがどれだけ難しいか ははは・・・ 晴れて?「DB屋()」の仲間入りしそうだ・・・ PostgreSQL9.3とSQLServer2005を、プライベートで、弄ったことあるだけなのに(実務ではOracle11の炎上案件の燃料として放り込まれたぐらい) 7月からPostgreSQL12がフロントエンドで、Oracle(ナンバリングは効いてない)がバックエンドで動いてる「工場のFAのすごいやつと思えば間違いじゃない(スマートファクトリー)」とかいう謎の説明されたシステムのDBチームに配属になったわ・・・ メカ系や移動体通信系のファームしか経験ないつにいきなり・・・ ズブの素人よりはマシかもしれないけどDBそのもののスキルだったらそこらの学生以下だよ俺・・・orz. >>606 開発対象が、工場の機械からデータ受け取る中継ボックスみたいなところから、工場の中間サーバから複数の工場の情報をまとめるサーバまで一貫してるんだそうな。 そして中継ボックス、中間サーバ、全体の情報あつめるサーバってのを全部面倒見てる10人ほどのチームとのこと。 まだ現場に入ってないから実態判らんけど、門外漢な俺を採用しちゃうところだし、上下どころか横の連携もまともにとれないようなカオスなところでもおかしくないって個人的な経験則が言ってる。 他に仕事ないから受けたけど、今から「どんなとこかなー? 抜けるとしたらどうやって抜けようかなー?」って考えてるw もし関係者が見たら、特定できそうやな。w ほどほどにしとけよ。 データベースのテーブル設計書ってどうしてる? エクセル方眼紙にしてかいてるんだけど、なんかいいのないのかな >>609 MySQL Workbenchはどや? 最近は使ってないから知らんが。 データベーススペシャリストでよく問われるページサイズとか空き容量率とかどのメーカーのDBをターゲットにしてるんや? 教えてくれ 特にどのDBMSをターゲットにしてるとかないぞ 一般的なBTreeを前提にしてるだけ プロジェクトが燃え尽きたから別の案件に燃料しに行ったんだが、TEXT(可変長文字列)をPKにしてINDEX張ってて「パフォーマンス出ねぇ!」ってやってんですけど・・・ ちょう乱暴に描くと CREATE TABLE T_TAGS( JPN AS TEXT NOT NULL, ENG AS TEXT, ・・・品詞とか同義語とかの定義いろいろ・・・ PRIMARY KEY(JPN) ) て感じの定義で、SELECTのサブクエリとかでも ON TBL1.JPN = ・・・ みたいにテキストのカラムをJOINしてるんすよ? ドテ・イ・ヘーンな俺でも「なんで数値でIDのカラムを作らないの?」ぐらいの疑問はあるんだけど、 これって「データベースあるある」だったりするの? 遅いのがTEXTのせいだってどうやって判断したの? >>614 >これって「データベースあるある」だったりするの? 文字列をPKに使うかどうかは状況による 絶対避けるというほどのものでもない 個人的には可変長は極力避けるけどパフォーマンスクリティカルなシステムじゃなければ 全部可変長で揃えてても特に問題なかったりする PKを数値にしたバージョン作ってさくっと比較すればいいんじゃん? >>614 あなたの言っていることは頭がおかしいくらい変なことを言っている。 たまたまいままで見てきたテーブルの主キー項目が数値型だっただけで、根拠のない思い込みをしてないか? 念を押すと、頭のおかしい発言だぞ。 >>614 そのTEXT型がラージオブジェクト型というオチのネタ書き込みじゃないだろうな? >>617 そこまでやないやろ。w テキストはCOLLATEの懸念があるし、 数値のが望ましいのはたしかやし。 まあ、遅いのはテキストキーやからと決めつけてかかってるところはアタマ弱そうやが。 EXPLAINしろっつーの。 俺の思い込みが解消されないレベルの現場という前提を認識ください m(_ _)m マジ学生以下よ、俺のスキル・・・・ EXCELを読んでDBに追記して、DBを参照してEXCELに吐き出すっていう単機能のモジュール2つを並行して「これ、改良して」ってソースだけ渡されたんすよ! 周りが「おそいおそい!」って騒いでて「どんなもんじゃらほい?」って見たらJOINが5〜6個あってTEXTのカラムでつないでたんよ。 さすがにSELECTのWHERE句でIN使うほどじゃなかったけど、そういうSQLあっても不思議じゃないレベルのある意味読みやすいSQLでしたw あと、遅いの根拠が「本番で使ってる高負荷に耐える超高性能マシン」で動かした旧バージョンと「テスト用のレンタル屋から借りてるそこそこの性能のマシン」で動かした新バージョンというね・・・ 何の比較にもなってねぇじゃん! という新事実が発覚して、馬鹿らしくなったので今日は仕事放り出して酒飲んできましたw charやvarcharの文字列って意味でtextって言ってるんじゃなくtext型って話だったのか・・ sqliteならともかくそれ以外のメジャーなサーバー系DBMSでtext型をPKにすることはまずないぞ >>620 まとめたら、スペックの違いやろ。 一言ですむわ。w よくわかってないクライアントがよくわかってないSEに文句言って よくわかってないフィルターで「お前らの作ったシステム遅いぞゴラァ!」ってなって現場に届くあるある案件ですな。 >>626 性能要件があって、データが増えてもパフォーマンスに問題がないと一言、入っているだけで違うのにな。 まあ、最近はフルSSDのストレージで構築したからsqlがとても早いです。statpack見るととんでもなくディスクREADしてるアホsqlあるけど、システム影響なし、いいんだか悪いんだかですねー >>628 それで解決したことにするとSSDでもどうにもならないSQLが増産されることになる。 お前ら和歌山県出身の下村拓郎様(35歳独身、元自衛隊)をご存知か、この方は将来素晴しい人物になるから覚えておいて損はないぞ スキーマの意味よくわかってないけどスキーマ設計書にテーブル構成書いてるよ スキーマの概念が後付けの製品しか知らないんだろうな ER図を見てもよくわからない設計は典型的なダメパターン だか大手SIerの人間はテストも運用も保守もしたことがないので、理解不能な理屈で設計したがる。 今月から、某メーカー系の現場入り。 50万件ぐらいしか入っていない商品マスターを検索するサイトが激重。 DB設計がもろこぼらーの発想。苦言をやんわり現場に伝えたつもりだが、超絶俺様気質の担当者で、聞き入れる気配なし。 逃げたい。 ちなみに、私はデータベーススペシャリスト餅。 よくある話。 「こぼらーの発想」とか言ってもどこがどう悪いのか他人には伝わらんだろうし。 正規化って概念がないんだろうな エクセル感覚であるだけ用意する設計なんだろ 検索が重いとしか書かれていないのに正規化が出てくる人もどっこいどっこい。 >ちなみに、私はデータベーススペシャリスト餅。 オレはお前から逃げたいw こぼらーがなぜ嫌われるかをこぼらー自身は検証もしないし、俺流正義マンで権力まで持ってたら。。。。 出くわしたら逃げるしかないんだろうか? いまどきCOBOL知ってる人も少ないだろうしどこがどのように問題かという具体的な指摘もないから 傍で見ていてよくわからんのよね。検証のしようもないだろう。 RDBをよく知らない構造化ファイル時代のコボラーはJOINを嫌い COBOLプログラムから一番扱いやすい形の構造化ファイル風にテーブルを作る でもそんな時代は30年近く前に終わってる上に定形検索だけなら遅くはならないので データベーススペシャリスト餅wが表面しか見ていないだけだろう 「コボラー」と言っとけば多分反論は来ないしお手軽にマウントとった気分になれる便利なワード。 このスレなんてそれが生き甲斐のやつばかりじゃん 初心者の質問にはまともに答えず、馬鹿にして溜飲を下げるだけ 処理速度の遅さが頻繁に問題になっていても、めちゃくちゃな設計とめちゃくちゃなSQLを使うのが優秀な開発者なのがITの世界ではエリートだったりするからなあ 目に見えない部分は評価されにくい アプリ開発者がただの入れ物として設計してしまうからなあ read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる