回答編集履歴

2

ゲデヒトニスリスペクト

2017/12/07 10:13

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -2,9 +2,23 @@
2
2
 
3
3
  ファイアボールというアニメでは
4
4
 
5
- 「ルールを曲げてはいけません。ルールを曲げた場合、それはタダ曲がったモノ」となってしまいます。」
5
+ 「ルールを曲げてしまわれては、それはもはや**ただの曲がった物**でございます。」
6
6
 
7
7
  と説いています。
8
+
9
+
10
+
11
+ これをしっかり守る事により下記のようなメリットを得られます、というかRDBMSの存在意義です。
12
+
13
+
14
+
15
+ - RDBMSから出てきたデータは常に信頼できるからバリデーションが不要
16
+
17
+ - 最小限のSQLやコードで書けるから利用する際のコードが短く綺麗、そして高速に動作する
18
+
19
+
20
+
21
+ ---
8
22
 
9
23
 
10
24
 
@@ -12,17 +26,21 @@
12
26
 
13
27
 
14
28
 
15
- このルールを捻じ曲げてしまった為に、外部キーのNOT NULL制約が剥げてしまった為に
29
+ 外部キーのNOT NULL制約が剥げてしまい、
16
30
 
17
- ただの曲がったモノになってしまいました。
31
+ `Model`は**ただの曲がった物**になってしまいました。
18
32
 
19
33
 
20
34
 
21
- ちゃんとルールを守っている限り`ModelPrefecture`と`ModelCity`は不要で
35
+ もしちゃんとルールを守っていれば`ModelPrefecture`と`ModelCity`は不要でしたね
36
+
37
+ 従って、上記のテーブルを追加するリファクタリング案は不要です。
38
+
39
+
22
40
 
23
41
  ルールを守らないで出来た不備を継ぎ接ぎで直してたらどんどん糞なシステムになってしまいますので、
24
42
 
25
- 出来ればそういった継ぎ接ぎ対応は行わず、綺麗なデータに修復てください。
43
+ 出来るだけ綺麗なデータに修復する方向で頑張ってください。
26
44
 
27
45
 
28
46
 
@@ -36,11 +54,11 @@
36
54
 
37
55
  住所があるのになんで都道府県や市区町村がわからないの?
38
56
 
39
- 国外に住んでるの?浮浪者?
57
+ 国外に住んでるの?住所不定者?
40
58
 
41
59
 
42
60
 
43
- そうではなくCSVが汚いだけでしょう。
61
+ そうではなく妥当ではないCSVだけでしょう。
44
62
 
45
63
  読み込めないCSVを無理やり読み込もうとしているのが今回の一番駄目な所です。
46
64
 
@@ -52,7 +70,9 @@
52
70
 
53
71
 
54
72
 
73
+ もし、そのCSVが社員の人海戦術等によって作られており、ある程度の曖昧さを許容しなければならないのであれば、
74
+
55
- もしある程度の曖昧さを許容したいのであれば、Ruby側で死ぬほど考えてなんとかしましょう。
75
+ Ruby側で死ぬほど考えてなんとかしましょう。
56
76
 
57
77
  不正な住所データや郵便番号を探してきたりして、何とか都道府県を見つけて宛がうとか、
58
78
 
@@ -64,7 +84,7 @@
64
84
 
65
85
 
66
86
 
67
- …えっ、今すぐなんとかしたい?
87
+ …えっ?であるべき論ではなくて、今すぐなんとかしたい?
68
88
 
69
89
  しょうがないなぁ…じゃあ私だったらこう動くってやり方を共有するよ。
70
90
 

1

清書しました。

2017/12/07 10:13

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,32 +1,4 @@
1
- > CSVの都道府県や市区町村のデータでマスターとマッチしない文字列がある場合はNULLにするしかないからです。
2
-
3
-
4
-
5
- 読み込めないCSVを無理やり読み込もうとしているのが今回の一番駄目な所ですね。
6
-
7
- これユーザーの入力値を何も見ずにSQLに突っ込んで、
8
-
9
- 「うわー、`; delete users;`みたいな文字列埋め込まれてユーザー情報全部消し飛んじゃった!」と騒ぐくらいありえません。
10
-
11
-
12
-
13
- 清書されていないCSVファイルの信頼度はユーザーの入力値と同じであり、
14
-
15
- ちゃんした値になるようシステム側死ぬ気でチェックしべきです。
1
+ RDBMSの大前提は例外を作らないこ、常正の綺麗データ入っことです。
16
-
17
-
18
-
19
- もし都道府県や市区町村がヒットしなければ、
20
-
21
- エラー文言を出すと共にエラーCSVとして吐き出してCSV投げてきた人間に突き返しましょう。
22
-
23
- それが出来ないなら郵便番号等から推測しなおして綺麗なCSVに清書するスクリプトでも作りましょう。
24
-
25
-
26
-
27
- ---
28
-
29
-
30
2
 
31
3
  ファイアボールというアニメでは
32
4
 
@@ -48,9 +20,43 @@
48
20
 
49
21
  ちゃんとルールを守っている限り`ModelPrefecture`と`ModelCity`は不要です。
50
22
 
51
- ルールを守らないで出来た不備を継ぎ接ぎで直してたらどんどん糞なシステムになってしまうよ?
23
+ ルールを守らないで出来た不備を継ぎ接ぎで直してたらどんどん糞なシステムになってしまいますので、
52
24
 
25
+ 出来ればそういった継ぎ接ぎ対応は行わず、綺麗なデータに修復してください。
26
+
27
+
28
+
29
+ ---
30
+
31
+
32
+
33
+ > CSVの都道府県や市区町村のデータでマスターとマッチしない文字列がある場合はNULLにするしかないからです。
34
+
35
+
36
+
37
+ 住所があるのになんで都道府県や市区町村がわからないの?
38
+
39
+ 国外に住んでるの?浮浪者?
40
+
41
+
42
+
53
- 踏ん張り時だと思頑張って直ましょう。
43
+ うではなくCSVが汚いだけでしょう。
44
+
45
+ 読み込めないCSVを無理やり読み込もうとしているのが今回の一番駄目な所です。
46
+
47
+
48
+
49
+ 清書されていないCSVファイルの信頼度はユーザーの入力値と同じであり、
50
+
51
+ ちゃんとした値になるようシステム側が死ぬ気でチェックして守るべきです。
52
+
53
+
54
+
55
+ もしある程度の曖昧さを許容したいのであれば、Ruby側で死ぬほど考えてなんとかしましょう。
56
+
57
+ 不正な住所データや郵便番号を探してきたりして、何とか都道府県を見つけて宛がうとか、
58
+
59
+ どうにも見つからなかったら、不正なデータだけCSVに固めて出した人に差し戻すとか
54
60
 
55
61
 
56
62