回答編集履歴
2
ゲデヒトニスリスペクト
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
|
-
|
29
|
+
外部キーのNOT NULL制約が剥げてしまい、
|
16
30
|
|
17
|
-
ただの曲がった
|
31
|
+
`Model`は**ただの曲がった物**になってしまいました。
|
18
32
|
|
19
33
|
|
20
34
|
|
21
|
-
ちゃんとルールを守ってい
|
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
|
-
|
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
清書しました。
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
|
|