X



結局開発で最も大切なのはテーブルの正規化と制約 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2017/08/24(木) 07:52:17.47ID:PyrFLEpH
テーブルを正規化したり
適切なデータ型を決定したり
制約を定義するといったことが
開発の中で最も大切

炎上してるプロジェクトは
必ずと言って良いほど
これらを軽視している
0048デフォルトの名無しさん
垢版 |
2017/08/26(土) 23:59:32.28ID:ZKx1xKF8
>>47
君は正規化をやらないの?
0050デフォルトの名無しさん
垢版 |
2017/08/27(日) 00:33:18.16ID:VryqwFGe
>>49
正規化などが行われていない炎上プロジェクトで
「正規化などをやるべきだ」と言った人がいるとして
その人の意見は通るかな?
0052デフォルトの名無しさん
垢版 |
2017/08/27(日) 00:46:07.69ID:QZuIwK0r
>>50
正規化してないことが炎上の真の原因だと納得させられるなら
その人の意見は通るでしょ
みんな炎上なんて嫌なんだから
0053デフォルトの名無しさん
垢版 |
2017/08/27(日) 00:55:59.03ID:VryqwFGe
>>52
納得させることが出来ると思う?
0054デフォルトの名無しさん
垢版 |
2017/08/27(日) 00:56:07.71ID:QZuIwK0r
 
顧客ID, 氏名, メールアドレス, 郵便番号, 都道府県, 市町村, …

↑住所のところが正規化されてないけど
こういう顧客テーブル使ってても炎上とは無縁の会社いくつも知ってるよ
炎上防ぐために正規化する?
0055デフォルトの名無しさん
垢版 |
2017/08/27(日) 00:57:53.81ID:QZuIwK0r
>>53
そう主張できる論拠がないからね
少なくとも今のところこのスレでは

だから誰も納得しない
0056デフォルトの名無しさん
垢版 |
2017/08/27(日) 00:58:43.29ID:VryqwFGe
>>55
だから君は正規化などをやらないと
0057デフォルトの名無しさん
垢版 |
2017/08/27(日) 01:05:41.41ID:QZuIwK0r
>>56
それ論点ずらしって言うんだよ
「炎上するのは正規化してないから」や「正規化すれば炎上の可能性が小さい」という主張に対する反証を出してるだけ

俺が正規化するかどうかとは何の関係もない
都合が悪くなると論点ずらしするのはよくないね
もっと考えないと
0058デフォルトの名無しさん
垢版 |
2017/08/27(日) 01:11:16.15ID:lDZtG8Od
>>54
市町村合併とかの時に大変そうだな
まぁもう暫くはないだろうけど
あ!金もらえるなら別に大変でもいいか
タダでやれとか言われたら涙目だけど
0059デフォルトの名無しさん
垢版 |
2017/08/27(日) 01:11:33.07ID:5LlLs1qL
そもそも正規化が何たるかを知らない

知った上で正規化崩ししているなら話はまた別
0060デフォルトの名無しさん
垢版 |
2017/08/27(日) 01:22:38.07ID:VryqwFGe
>>59
それは正論
「敢えて正規化を崩している」とか
「敢えて制約を外してる」とかなら
それはそれでok
0061デフォルトの名無しさん
垢版 |
2017/08/27(日) 01:29:04.48ID:VryqwFGe
>>57
それは話が逆

正規化などは「当然やるべきこと」だよ

説明が必要だとすれば
敢えて正規化を崩したり
敢えて制約を外したりする場合だよ
0063デフォルトの名無しさん
垢版 |
2017/08/27(日) 01:55:57.44ID:VryqwFGe
>>62

正規化などが行われていない炎上プロジェクトで
「正規化などをやるべきだ」と言った人がいるとして
その人の意見は通るかな?
0064デフォルトの名無しさん
垢版 |
2017/08/27(日) 02:00:25.45ID:lDZtG8Od
炎上してるプロジェクトで、設計の初期段階まで戻って正規化をやり直す時間なんかくれるわけないわな
つまり、進むも地獄、戻るも地獄の状況で、地獄の深みに突き進んでいくしかないわけさ
まさに、デスマーチ
笑いながらウンコ漏らすってもんよ
0065デフォルトの名無しさん
垢版 |
2017/08/27(日) 02:09:04.83ID:QZuIwK0r
>>61
それ正規化しないと炎上しやすいっていう主張の根拠になってるの?

ループしすぎじゃないか?
0066デフォルトの名無しさん
垢版 |
2017/08/27(日) 02:13:54.74ID:VryqwFGe
>>65
「正規化しないと炎上しやすい」っていう主張に根拠が必要とは思えん
0067デフォルトの名無しさん
垢版 |
2017/08/27(日) 04:17:04.67ID:0cj4lMWm
炎上してる場合、テストを書こうだってほとんど通らないよw
ただひたすら言われたことやるだけw
0068デフォルトの名無しさん
垢版 |
2017/08/27(日) 05:29:14.49ID:sNhXAArf
>>63

コーディング規約がない炎上プロジェクトで
「コーディング規約を作るべきだ」と言った人がいるとして
その人の意見は通るかな?


つまり、あんたが言いたいことはどういうこと?
0070デフォルトの名無しさん
垢版 |
2017/08/27(日) 09:30:22.66ID:2IgWlIeb
>>67
少しづつテストを入れるなら
普通に通ると思うよ

>>68
少しづつコーディング規約を適用していくなら
普通に通ると思うよ

>>69
それはある
0072デフォルトの名無しさん
垢版 |
2017/08/27(日) 13:02:52.37ID:7sdTDI+/
>>71
そんな連中ばかりでも
正規化などの「当然やるべきこと」を
普通にやらせてくれるなら
まだマシだけどね
0073デフォルトの名無しさん
垢版 |
2017/08/27(日) 13:14:26.04ID:VryqwFGe
「テーブル数が増えると管理が面倒だから〜」確実にあんたが面倒にしている
0074デフォルトの名無しさん
垢版 |
2017/08/27(日) 13:27:18.19ID:7sdTDI+/
>>73
本当にそれだよね
0075デフォルトの名無しさん
垢版 |
2017/08/27(日) 14:53:14.86ID:V0hwi73r
正規化するとパフォーマンスに影響があるから
崩しましょうとか、正規化する前にやるなよw
0076デフォルトの名無しさん
垢版 |
2017/08/27(日) 14:58:15.64ID:sNhXAArf
>>70
> 少しづつテストを入れるなら
> 普通に通ると思うよ

あんたテスト書いたこと有る?
テストの量は実装コード以上になる上に
炎上しているようなものは実装コードも
テスト可能になってないのだから、
ようするに工数が今の3倍ぐらいになるってことだよ

テストなんてのは最初から書いて
テスト可能なように設計しておくのが前提
0077デフォルトの名無しさん
垢版 |
2017/08/27(日) 16:04:34.86ID:1mZPOaVb
>>76
カバレッジ100%でも目指してるの?
0078デフォルトの名無しさん
垢版 |
2017/08/27(日) 16:17:02.37ID:5LlLs1qL
どの工程の設計であろうと、「やる前によく考えろ」の一言に尽きる

期間がない、予算がない、で取り敢えずのその場しのぎの設計が多い

結局いい加減な設計は後で何十倍にもなって自分に返ってくるってのにな

何事も初動が大事
0080デフォルトの名無しさん
垢版 |
2017/08/27(日) 16:47:00.08ID:okZux0mu
正規化とか知らない素人同然のなんちゃってSEが設計してるからどうしようもない
未熟者が上流に従事することなど医療や建設の業界ではあり得ないことだが、それが
平然とまかり通るのがIT業界
目に見える形での直接的な人命への影響がないから見過ごされているが、実は人の体力ばかりか精神をも蝕み最悪殺すこともあるというのに
0081デフォルトの名無しさん
垢版 |
2017/08/27(日) 17:34:22.83ID:AdHUTbRj
>>79
工数が増大しないように要所要所に入れればいいじゃん

>>80
ほんそれ
0082デフォルトの名無しさん
垢版 |
2017/08/27(日) 18:37:07.73ID:sNhXAArf
>>81
工数を増やさずに入れるのは無理
だからちょっとだけ入れて満足しましょうって話をしたんだろう?

テストがあればデグレが防げます
ただしテストは全体のごくわずかしか入れてません。
じゃ意味が無いって言ってるの
0083デフォルトの名無しさん
垢版 |
2017/08/27(日) 19:37:01.59ID:0cj4lMWm
とくにテストを意識していないコードにテストを注入していくのは
かなり至難の業なわけ。
不可能ではないが、企業としてよっぽど本気になることがないとまず無理。
0084デフォルトの名無しさん
垢版 |
2017/08/27(日) 21:24:12.45ID:SWHCUx4b
>>83
言葉がおかしい
0085デフォルトの名無しさん
垢版 |
2017/08/27(日) 21:46:51.08ID:m+VUF/Wq
>>83
え?なんで意味が無いの?
0086デフォルトの名無しさん
垢版 |
2017/08/27(日) 22:17:02.74ID:42wr1dDO
おっと乗り遅れたか
第1正規化は当然やるとして
第3正規化は基本やる必要ないぞ
0087デフォルトの名無しさん
垢版 |
2017/08/28(月) 07:48:06.86ID:8/dWo19X
>>86
どこまで正規化するかは状況しだいかもしれないけど
全くやらないのは論外だね
0088デフォルトの名無しさん
垢版 |
2017/08/28(月) 08:06:02.98ID:8/dWo19X
ちょっとまとめてみた

1.テーブルを正規化する
2.適切なデータ型を決定する
3.制約を定義する

この3つが実施されなければ炎上して当然

実施されなければ炎上して当然の重要事項であるから
「この3つを実施したい」と主張する側に説明責任は無く
「この3つを実施させない」と主張する側に説明責任はある

実施されなけれは炎上して当然の重要事項であるから
「テーブルが増えるから」なんて理由で実施させないのは
あってはならない

正規化した上で何か事情があって正規化を崩すのは構わない
それと正規化を実施しないというのは話が別

どこまで正規化するのかは状況しだいかだが
全く実施しなければ炎上して当然
0090デフォルトの名無しさん
垢版 |
2017/08/28(月) 13:19:41.42ID:u/z24YLE
>>89
あら
目障りだった?
0091デフォルトの名無しさん
垢版 |
2017/08/28(月) 13:44:39.31ID:Q6Vyd4iZ
ここでいいです
0093デフォルトの名無しさん
垢版 |
2017/08/28(月) 16:52:16.58ID:/IEjfDVp
>>92
あら?
ウザかった?
0096デフォルトの名無しさん
垢版 |
2017/08/28(月) 18:53:17.36ID:FadrHY99
>>1の範囲なら別にかまわないと思う
(マ板でやれという意見の人もいるかもしれない)

具体的な話をしたければ、データベース板でどうぞ
0097デフォルトの名無しさん
垢版 |
2017/08/28(月) 21:26:14.86ID:Z2A2Xztk
開発でDBが絡まない案件の方が少ない気がするな

それに向こうはここより過疎だし
0098デフォルトの名無しさん
垢版 |
2017/08/28(月) 23:00:32.12ID:E9bYmb9B
正規化しないと炎上するだろうって事は分かるが
炎上してるからって正規化してないとは限らないと思う
0099デフォルトの名無しさん
垢版 |
2017/08/28(月) 23:13:40.97ID:8heg7vkK
>>98
もちろん正規化などをやってるプロジェクトでも炎上することはある

だけど

正規化などをしていなければ炎上して当然

これも仰る通り
0100デフォルトの名無しさん
垢版 |
2017/08/28(月) 23:20:15.80ID:0eH/9F76
>>99
テストをしていなければ炎上して当然だし、
コードレビューをしていなければ炎上して当然だし
コード設計をしていなければ炎上して当然だし
SEが役立たずだと炎上して当然だが?
0102デフォルトの名無しさん
垢版 |
2017/08/28(月) 23:33:14.45ID:8heg7vkK
>>100
テストしてなければ簡単に潰せるバグが大量に出るね
だけど意外と影響は小さい
「技術者への不信感が強くなる」というのが最も問題

コードレビューは「やらない方がマシ」というプロジェクトが結構ある

それから「コード設計」って何?
0103デフォルトの名無しさん
垢版 |
2017/08/28(月) 23:33:45.46ID:ml0Q9t1V
正規化することより正規化されていないレガシーDBをどうにかするテクニックを研究した方が有益
ゼロから正しく作るのは簡単
困るのはいつも引き継いだ時だ
0106デフォルトの名無しさん
垢版 |
2017/08/28(月) 23:40:08.73ID:0eH/9F76
正規化をしていなくても別に後から修正すればいいだけだし、
それよりもコードだよ。

一旦書いてしまったら全部書き直しになってしまう
0107デフォルトの名無しさん
垢版 |
2017/08/28(月) 23:42:57.04ID:8heg7vkK
>>103
それはその通りだね

旧システムを新システムに置き換える仕事をやってる時に
正規化しない理由が「データ移行が大変だから」なんて言われた日には・・・

データ不整合が起きてる旧システムのデータを
そのまま新システムのデータベースにブチこむという決断が行われましたと
0109デフォルトの名無しさん
垢版 |
2017/08/28(月) 23:44:07.06ID:8heg7vkK
>>106
後から修正とか
まず不可能ですわ
0110デフォルトの名無しさん
垢版 |
2017/08/28(月) 23:48:09.43ID:ml0Q9t1V
>>107
うちも今まさにそれやってるわ
というかDB担当が使えねえカスで非正規のテーブル増やしやがったからもっと酷い
5年10年も勤めてる奴らなのに呆れ果てるわ

愚痴すまんな
0111デフォルトの名無しさん
垢版 |
2017/08/28(月) 23:52:26.36ID:8heg7vkK
>>110
( TДT)

大変やね

俺は「金が出ればホワイト。残業代が出るからホワイト」ってアタマの中で唱え続けて乗りきった
0112デフォルトの名無しさん
垢版 |
2017/08/29(火) 00:06:42.81ID:rUOtN+gs
>>106
いやいや
本番運用開始したらDB構造を変えるのに比べればプログラムを変えるほうが簡単
DBは複数のシステム/アプリケーションから使われてることがほとんどだから
0113デフォルトの名無しさん
垢版 |
2017/08/29(火) 00:09:43.35ID:LVYauoO8
>>112
「コード設計」でググったからわかったのだが
ID:0eH/9F76が言ってる「コード」ってソースコードのことじゃないんだわ
0115デフォルトの名無しさん
垢版 |
2017/08/29(火) 01:57:11.98ID:oqFekZxP
せめてモデル層をクラスで集約出来ていれば正規化して正規化する前の形をSQL-VIEWで復元してあげればわりとやりやすくはなるかも
0116デフォルトの名無しさん
垢版 |
2017/08/29(火) 02:01:49.56ID:6sGVgGr/
Railsとかのフレームワークを使っていれば
普通に設計しても正規化状態になるので
フレームワークを導入しなければ炎上するって
言ったほうが良いと思う

もちろんオレオレフレームワークは
実績が少ないので意味がない
0117デフォルトの名無しさん
垢版 |
2017/08/29(火) 02:02:57.99ID:6sGVgGr/
フレームワークを導入してないところは
時代が20〜30年ぐらい遅れてると思う。

結局開発で最も大変なのは
最新技術を取り入れていくことかな
0118デフォルトの名無しさん
垢版 |
2017/08/29(火) 02:06:13.74ID:LVYauoO8
開発で最も大切なのは

1.テーブルを正規化する
2.適切なデータ型を決定する
3.制約を定義する

この3つ
0119デフォルトの名無しさん
垢版 |
2017/08/29(火) 02:06:51.41ID:TMhzTuGH
ローテク極めていくほうがだいたい早い
30年前のCOBOLでもやってること大差なし
0121デフォルトの名無しさん
垢版 |
2017/08/29(火) 08:13:33.58ID:X4Q/TPlH
ようするにDRYだよ
1つの事実(知識)を1つの場所に
正規化はDRYのサブセット
0123デフォルトの名無しさん
垢版 |
2017/08/29(火) 10:25:48.19ID:mN0xls38
> 1.テーブルを正規化する
> 2.適切なデータ型を決定する
> 3.制約を定義する

まぁ、それができてたってアンチパターンにははまる可能性はあるわけで。
ということで、知らなかった人は書籍「SQLアンチパターン」を読むといい。
https://www.oreilly.co.jp/books/9784873115894/
0126デフォルトの名無しさん
垢版 |
2017/08/29(火) 15:22:36.62ID:PNzW02X+
>>125
テーブルの正規化以前に人に依存していると言う主張してか?
やはりスレタイは正しく無くて、>>1のようなカスを排除する事が炎上防止の最善策
0127デフォルトの名無しさん
垢版 |
2017/08/29(火) 15:40:18.67ID:mN0xls38
プロジェクトが炎上する要因は複数ある。

そこから合意してかないといけないのか?
0128デフォルトの名無しさん
垢版 |
2017/08/29(火) 17:41:41.49ID:PNzW02X+
「最も大切」というお題だから
自分で設定したお題を忘れてもらっちゃ困る
0129デフォルトの名無しさん
垢版 |
2017/08/29(火) 18:22:47.86ID:rUOtN+gs
>>121
正規化はDRYよりもSRPに近い
DRYは意味を理解しなくても機械的にほぼ判断できるが
正規化はエンティティ・キー・属性の意味や関係性を理解しないと判断できない

その時その時の主観によって意味や理解が変わりうる点や
原則を過剰に適用するとわかりにくく使いにくいものになる点が似ている
0130デフォルトの名無しさん
垢版 |
2017/08/29(火) 18:35:37.73ID:rUOtN+gs
>>122
読んだけど、この人はちょっと理論に寄り過ぎだね

「データベース設計においては、正規化できる部分だけをきっちり正規化すれば良いのである」
「どのテーブルが正規化できるかという見極めが重要なのである」
「正規化の対象となるテーブルでは、NULLはご法度である」

↑いいたいことはわけるけど、こういう指針だけだと実践では役に立たないし
DB設計が原因で炎上してるようなところだと火に油を注ぐことになると思う
0131デフォルトの名無しさん
垢版 |
2017/08/29(火) 18:59:38.55ID:UC+DdZRH
開発で最も大切なのは

1.テーブルを正規化する
2.適切なデータ型を決定する
3.制約を定義する

この3つ
これらをやってなければ炎上して当然

>>128
その通りだね
この3つより大切なモノを挙げてみるといいと思う
0132デフォルトの名無しさん
垢版 |
2017/08/29(火) 19:07:47.55ID:mN0xls38
>>130
> 読んだけど、この人はちょっと理論に寄り過ぎだね
たしかに『理論から学ぶデータベース実践入門』も理論がうざかったけどね。

ま、でも、このスレの有象無象のゴミレス読む暇があったら、「漢のコンピュータ道」の
DB関連記事読んだ方が、よっぽどためになると思うよ。
0133デフォルトの名無しさん
垢版 |
2017/08/29(火) 22:00:48.63ID:6sGVgGr/
>>131
> この3つ
> これらをやってなければ炎上して当然

殆どの炎上はそれらをやっていて
炎上していると思うけど?

それらをやってない所は少ないと思う
0134デフォルトの名無しさん
垢版 |
2017/08/30(水) 06:15:13.11ID:6oCjgbIk
それらをきっちりやらなくても済まされるようなド底辺で生きてるんだろ
さっしてやれ
0135デフォルトの名無しさん
垢版 |
2017/08/30(水) 07:29:56.75ID:ca1piqKW
どこまで正規化すんの?
大抵の落としどころはボイスコッドだと思うけど
おまいらだと第5正規化までやってそうw

システムに不要なほど過剰な正規化はするべきじゃない
0136デフォルトの名無しさん
垢版 |
2017/08/30(水) 07:34:51.44ID:ev9FmYBb
>>133
そりゃ予算に無理があるんじゃね?

>>134
炎上してるのだから「済まされる」とは言えないかな
0137デフォルトの名無しさん
垢版 |
2017/08/30(水) 07:50:02.99ID:ev9FmYBb
>>135
開発で最も大切なのは

1.テーブルを正規化する
2.適切なデータ型を決定する
3.制約を定義する

この3つ

2や3について言うことは無いのかい?
0139デフォルトの名無しさん
垢版 |
2017/08/30(水) 21:01:44.13ID:RiHZq49u
開発で最も大切なのは

1. 単一責任の原則(SRP)
2. 適切な型の定義
3. 入力チェック

この3つ


んなわけない
0140デフォルトの名無しさん
垢版 |
2017/08/30(水) 21:09:48.80ID:vAN9hjOo
汎用機の考え方を引きずっているひとか設計すると正規化うんぬんの話が出るが、そもそもリレーショナルデータベースを理解している人間が設計した場合は、正規化という作業がほぼ発生しない。
0141デフォルトの名無しさん
垢版 |
2017/08/30(水) 21:17:21.02ID:E7OSkm2F
わかってなければ
リレーショナルとは無縁な
単なるデータの置き場所となる
0142デフォルトの名無しさん
垢版 |
2017/08/30(水) 21:21:36.74ID:Cx/iJc4q
正規化って何時頃からあるの?
それ以前は殆どのプロジェクトは炎上してたの?
0144デフォルトの名無しさん
垢版 |
2017/08/30(水) 22:19:01.02ID:cSzTCLjb
正規形を知っているからRDBを理解してるんじゃね?無意識に正規化してるって事だろ
0145デフォルトの名無しさん
垢版 |
2017/08/30(水) 22:32:47.74ID:E7OSkm2F
>>144
同意
0147デフォルトの名無しさん
垢版 |
2017/08/31(木) 00:34:28.16ID:J2aSRpVx
>>146
用途によるけど業務アプリケーションならトランザクションデータも普通は正規化するでしょ
注文明細に受注単価が入ってるのとかは正規化違反じゃないよ
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況