結局開発で最も大切なのはテーブルの正規化と制約 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
テーブルを正規化したり
適切なデータ型を決定したり
制約を定義するといったことが
開発の中で最も大切
炎上してるプロジェクトは
必ずと言って良いほど
これらを軽視している >>48
重要なのは正規化することで炎上しないのが
本当かってことでしょう?w >>49
正規化などが行われていない炎上プロジェクトで
「正規化などをやるべきだ」と言った人がいるとして
その人の意見は通るかな? >>50
正規化してないことが炎上の真の原因だと納得させられるなら
その人の意見は通るでしょ
みんな炎上なんて嫌なんだから
顧客ID, 氏名, メールアドレス, 郵便番号, 都道府県, 市町村, …
↑住所のところが正規化されてないけど
こういう顧客テーブル使ってても炎上とは無縁の会社いくつも知ってるよ
炎上防ぐために正規化する? >>53
そう主張できる論拠がないからね
少なくとも今のところこのスレでは
だから誰も納得しない >>56
それ論点ずらしって言うんだよ
「炎上するのは正規化してないから」や「正規化すれば炎上の可能性が小さい」という主張に対する反証を出してるだけ
俺が正規化するかどうかとは何の関係もない
都合が悪くなると論点ずらしするのはよくないね
もっと考えないと >>54
市町村合併とかの時に大変そうだな
まぁもう暫くはないだろうけど
あ!金もらえるなら別に大変でもいいか
タダでやれとか言われたら涙目だけど そもそも正規化が何たるかを知らない
知った上で正規化崩ししているなら話はまた別 >>59
それは正論
「敢えて正規化を崩している」とか
「敢えて制約を外してる」とかなら
それはそれでok >>57
それは話が逆
正規化などは「当然やるべきこと」だよ
説明が必要だとすれば
敢えて正規化を崩したり
敢えて制約を外したりする場合だよ >>62
正規化などが行われていない炎上プロジェクトで
「正規化などをやるべきだ」と言った人がいるとして
その人の意見は通るかな? 炎上してるプロジェクトで、設計の初期段階まで戻って正規化をやり直す時間なんかくれるわけないわな
つまり、進むも地獄、戻るも地獄の状況で、地獄の深みに突き進んでいくしかないわけさ
まさに、デスマーチ
笑いながらウンコ漏らすってもんよ >>61
それ正規化しないと炎上しやすいっていう主張の根拠になってるの?
ループしすぎじゃないか? >>65
「正規化しないと炎上しやすい」っていう主張に根拠が必要とは思えん 炎上してる場合、テストを書こうだってほとんど通らないよw
ただひたすら言われたことやるだけw >>63
コーディング規約がない炎上プロジェクトで
「コーディング規約を作るべきだ」と言った人がいるとして
その人の意見は通るかな?
つまり、あんたが言いたいことはどういうこと? 上がポンコツだとなにやっても無駄無駄無駄ァッ!って事じゃないかと >>67
少しづつテストを入れるなら
普通に通ると思うよ
>>68
少しづつコーディング規約を適用していくなら
普通に通ると思うよ
>>69
それはある 本当に上が体育会系の脳筋のごますりと金勘定しか興味ない奴だと大変だわ >>71
そんな連中ばかりでも
正規化などの「当然やるべきこと」を
普通にやらせてくれるなら
まだマシだけどね 「テーブル数が増えると管理が面倒だから〜」確実にあんたが面倒にしている 正規化するとパフォーマンスに影響があるから
崩しましょうとか、正規化する前にやるなよw >>70
> 少しづつテストを入れるなら
> 普通に通ると思うよ
あんたテスト書いたこと有る?
テストの量は実装コード以上になる上に
炎上しているようなものは実装コードも
テスト可能になってないのだから、
ようするに工数が今の3倍ぐらいになるってことだよ
テストなんてのは最初から書いて
テスト可能なように設計しておくのが前提 どの工程の設計であろうと、「やる前によく考えろ」の一言に尽きる
期間がない、予算がない、で取り敢えずのその場しのぎの設計が多い
結局いい加減な設計は後で何十倍にもなって自分に返ってくるってのにな
何事も初動が大事 >>77
100%は目指してないが
意味があるぐらいは目指すだろ
たった一個書いて終わりか? 正規化とか知らない素人同然のなんちゃってSEが設計してるからどうしようもない
未熟者が上流に従事することなど医療や建設の業界ではあり得ないことだが、それが
平然とまかり通るのがIT業界
目に見える形での直接的な人命への影響がないから見過ごされているが、実は人の体力ばかりか精神をも蝕み最悪殺すこともあるというのに >>79
工数が増大しないように要所要所に入れればいいじゃん
>>80
ほんそれ >>81
工数を増やさずに入れるのは無理
だからちょっとだけ入れて満足しましょうって話をしたんだろう?
テストがあればデグレが防げます
ただしテストは全体のごくわずかしか入れてません。
じゃ意味が無いって言ってるの とくにテストを意識していないコードにテストを注入していくのは
かなり至難の業なわけ。
不可能ではないが、企業としてよっぽど本気になることがないとまず無理。 おっと乗り遅れたか
第1正規化は当然やるとして
第3正規化は基本やる必要ないぞ >>86
どこまで正規化するかは状況しだいかもしれないけど
全くやらないのは論外だね ちょっとまとめてみた
1.テーブルを正規化する
2.適切なデータ型を決定する
3.制約を定義する
この3つが実施されなければ炎上して当然
実施されなければ炎上して当然の重要事項であるから
「この3つを実施したい」と主張する側に説明責任は無く
「この3つを実施させない」と主張する側に説明責任はある
実施されなけれは炎上して当然の重要事項であるから
「テーブルが増えるから」なんて理由で実施させないのは
あってはならない
正規化した上で何か事情があって正規化を崩すのは構わない
それと正規化を実施しないというのは話が別
どこまで正規化するのかは状況しだいかだが
全く実施しなければ炎上して当然 >>1の範囲なら別にかまわないと思う
(マ板でやれという意見の人もいるかもしれない)
具体的な話をしたければ、データベース板でどうぞ 開発でDBが絡まない案件の方が少ない気がするな
それに向こうはここより過疎だし 正規化しないと炎上するだろうって事は分かるが
炎上してるからって正規化してないとは限らないと思う >>98
もちろん正規化などをやってるプロジェクトでも炎上することはある
だけど
正規化などをしていなければ炎上して当然
これも仰る通り >>99
テストをしていなければ炎上して当然だし、
コードレビューをしていなければ炎上して当然だし
コード設計をしていなければ炎上して当然だし
SEが役立たずだと炎上して当然だが? まあ、要するに
酒飲むのと残業が好きな連中が集まると大抵炎上する >>100
テストしてなければ簡単に潰せるバグが大量に出るね
だけど意外と影響は小さい
「技術者への不信感が強くなる」というのが最も問題
コードレビューは「やらない方がマシ」というプロジェクトが結構ある
それから「コード設計」って何? 正規化することより正規化されていないレガシーDBをどうにかするテクニックを研究した方が有益
ゼロから正しく作るのは簡単
困るのはいつも引き継いだ時だ 正規化をしていなくても別に後から修正すればいいだけだし、
それよりもコードだよ。
一旦書いてしまったら全部書き直しになってしまう >>103
それはその通りだね
旧システムを新システムに置き換える仕事をやってる時に
正規化しない理由が「データ移行が大変だから」なんて言われた日には・・・
データ不整合が起きてる旧システムのデータを
そのまま新システムのデータベースにブチこむという決断が行われましたと >>107
うちも今まさにそれやってるわ
というかDB担当が使えねえカスで非正規のテーブル増やしやがったからもっと酷い
5年10年も勤めてる奴らなのに呆れ果てるわ
愚痴すまんな >>110
( TДT)
大変やね
俺は「金が出ればホワイト。残業代が出るからホワイト」ってアタマの中で唱え続けて乗りきった >>106
いやいや
本番運用開始したらDB構造を変えるのに比べればプログラムを変えるほうが簡単
DBは複数のシステム/アプリケーションから使われてることがほとんどだから >>112
「コード設計」でググったからわかったのだが
ID:0eH/9F76が言ってる「コード」ってソースコードのことじゃないんだわ せめてモデル層をクラスで集約出来ていれば正規化して正規化する前の形をSQL-VIEWで復元してあげればわりとやりやすくはなるかも Railsとかのフレームワークを使っていれば
普通に設計しても正規化状態になるので
フレームワークを導入しなければ炎上するって
言ったほうが良いと思う
もちろんオレオレフレームワークは
実績が少ないので意味がない フレームワークを導入してないところは
時代が20〜30年ぐらい遅れてると思う。
結局開発で最も大変なのは
最新技術を取り入れていくことかな 開発で最も大切なのは
1.テーブルを正規化する
2.適切なデータ型を決定する
3.制約を定義する
この3つ ローテク極めていくほうがだいたい早い
30年前のCOBOLでもやってること大差なし ようするにDRYだよ
1つの事実(知識)を1つの場所に
正規化はDRYのサブセット > 1.テーブルを正規化する
> 2.適切なデータ型を決定する
> 3.制約を定義する
まぁ、それができてたってアンチパターンにははまる可能性はあるわけで。
ということで、知らなかった人は書籍「SQLアンチパターン」を読むといい。
https://www.oreilly.co.jp/books/9784873115894/ >>123
読むの面倒だからトップ3くらい紹介してくれない? >>124
こういう奴を切っていくのが、プロジェクトを炎上させないコツ。 >>125
テーブルの正規化以前に人に依存していると言う主張してか?
やはりスレタイは正しく無くて、>>1のようなカスを排除する事が炎上防止の最善策 プロジェクトが炎上する要因は複数ある。
そこから合意してかないといけないのか? 「最も大切」というお題だから
自分で設定したお題を忘れてもらっちゃ困る >>121
正規化はDRYよりもSRPに近い
DRYは意味を理解しなくても機械的にほぼ判断できるが
正規化はエンティティ・キー・属性の意味や関係性を理解しないと判断できない
その時その時の主観によって意味や理解が変わりうる点や
原則を過剰に適用するとわかりにくく使いにくいものになる点が似ている >>122
読んだけど、この人はちょっと理論に寄り過ぎだね
「データベース設計においては、正規化できる部分だけをきっちり正規化すれば良いのである」
「どのテーブルが正規化できるかという見極めが重要なのである」
「正規化の対象となるテーブルでは、NULLはご法度である」
↑いいたいことはわけるけど、こういう指針だけだと実践では役に立たないし
DB設計が原因で炎上してるようなところだと火に油を注ぐことになると思う 開発で最も大切なのは
1.テーブルを正規化する
2.適切なデータ型を決定する
3.制約を定義する
この3つ
これらをやってなければ炎上して当然
>>128
その通りだね
この3つより大切なモノを挙げてみるといいと思う >>130
> 読んだけど、この人はちょっと理論に寄り過ぎだね
たしかに『理論から学ぶデータベース実践入門』も理論がうざかったけどね。
ま、でも、このスレの有象無象のゴミレス読む暇があったら、「漢のコンピュータ道」の
DB関連記事読んだ方が、よっぽどためになると思うよ。 >>131
> この3つ
> これらをやってなければ炎上して当然
殆どの炎上はそれらをやっていて
炎上していると思うけど?
それらをやってない所は少ないと思う それらをきっちりやらなくても済まされるようなド底辺で生きてるんだろ
さっしてやれ どこまで正規化すんの?
大抵の落としどころはボイスコッドだと思うけど
おまいらだと第5正規化までやってそうw
システムに不要なほど過剰な正規化はするべきじゃない >>133
そりゃ予算に無理があるんじゃね?
>>134
炎上してるのだから「済まされる」とは言えないかな >>135
開発で最も大切なのは
1.テーブルを正規化する
2.適切なデータ型を決定する
3.制約を定義する
この3つ
2や3について言うことは無いのかい? 開発で最も大切なのは
1. 単一責任の原則(SRP)
2. 適切な型の定義
3. 入力チェック
この3つ
んなわけない 汎用機の考え方を引きずっているひとか設計すると正規化うんぬんの話が出るが、そもそもリレーショナルデータベースを理解している人間が設計した場合は、正規化という作業がほぼ発生しない。 わかってなければ
リレーショナルとは無縁な
単なるデータの置き場所となる 正規化って何時頃からあるの?
それ以前は殆どのプロジェクトは炎上してたの? 正規形を知っているからRDBを理解してるんじゃね?無意識に正規化してるって事だろ >>146
用途によるけど業務アプリケーションならトランザクションデータも普通は正規化するでしょ
注文明細に受注単価が入ってるのとかは正規化違反じゃないよ ■ このスレッドは過去ログ倉庫に格納されています