回答編集履歴

5

追記修正

2016/07/22 12:11

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
  UNIQUE制約とNOT NULL制約は、
70
70
 
71
- よっぽどの理由がない限りは付与した方が良いです。
71
+ よっぽどの理由がない限りはpost_idには付与した方が良いです。
72
72
 
73
73
  (既にしてるということであれば以下もスルーで…)
74
74
 

4

誤字修正

2016/07/22 12:11

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -64,7 +64,7 @@
64
64
 
65
65
 
66
66
 
67
- 上記の要件があるのでしたらが張れないにしろ、
67
+ 上記の要件があるのでしたら主キー制約が張れないにしろ、
68
68
 
69
69
  UNIQUE制約とNOT NULL制約は、
70
70
 

3

蛇足の追加

2016/07/22 12:08

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
 
30
30
 
31
- **追記**
31
+ **追記**
32
32
 
33
33
  CakePHPほとんどかじってないから見当違いなこと言ってるかも…。
34
34
 
@@ -54,6 +54,35 @@
54
54
 
55
55
 
56
56
 
57
+ **追記②**
58
+
59
+ 質問にあまり関係のない蛇足ですが…
60
+
61
+ 1.post_idは必ず採番される
62
+
63
+ 2.post_idは必ず一意に定まる
64
+
65
+
66
+
67
+ 上記の要件があるのでしたらが張れないにしろ、
68
+
69
+ UNIQUE制約とNOT NULL制約は、
70
+
71
+ よっぽどの理由がない限りは付与した方が良いです。
72
+
73
+ (既にしてるということであれば以下もスルーで…)
74
+
75
+
76
+
77
+ 制約は**ビジネスルールの再現、データ整合性の保証**を可能にするので。
78
+
79
+ 付加的な要素として他の開発者にも意図を伝える手段にもなり得ます。
80
+
81
+
82
+
83
+ 洗練されたテーブル設計は、
84
+
85
+ それだけである程度のビジネスルールを浮き彫りに出来ることを知っておいて損はないです。
57
86
 
58
87
 
59
88
 
@@ -65,3 +94,10 @@
65
94
 
66
95
 
67
96
 
97
+
98
+
99
+
100
+
101
+
102
+
103
+

2

追記

2016/07/22 12:07

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -25,3 +25,43 @@
25
25
  とかで一括移行すると良いと思います。
26
26
 
27
27
  主キー重複には要注意ですが。
28
+
29
+
30
+
31
+ **追記**
32
+
33
+ CakePHPほとんどかじってないから見当違いなこと言ってるかも…。
34
+
35
+
36
+
37
+ ①と②にも返答しておくと、
38
+
39
+ ①はUNIQUE制約を張れば主キーと似たようなことはできますが、
40
+
41
+ 違いとしとしてNULLが許容される点とNULLに限っては重複が認められる点があります。
42
+
43
+ まぁNOT NULL制約を合わせてつけるとNULL自体登録不可に出来るのでより主キーっぽくは出来ますが。
44
+
45
+ (UNIQUE INDEXも勝手に貼られたと思います。)
46
+
47
+
48
+
49
+ ②は範疇外であまり分からないのですが、
50
+
51
+ save時にpost_idが重複してこけるのであれば、
52
+
53
+ save呼び出し前にユニークなpost_idを採番できてないだけとかありませんか?
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+

1

追記など

2016/07/22 10:18

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -16,6 +16,12 @@
16
16
 
17
17
  正しくテーブル定義し直したものに、
18
18
 
19
+ ```SQL
20
+
19
21
  INSERT INTO post SELECT * FROM post_bk
20
22
 
23
+ ```
24
+
21
- とかで一括登録すると良いと思います。
25
+ とかで一括移行すると良いと思います。
26
+
27
+ 主キー重複には要注意ですが。