teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

追記修正

2016/07/22 12:11

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -33,7 +33,7 @@
33
33
 
34
34
  上記の要件があるのでしたら主キー制約が張れないにしろ、
35
35
  UNIQUE制約とNOT NULL制約は、
36
- よっぽどの理由がない限りは付与した方が良いです。
36
+ よっぽどの理由がない限りはpost_idには付与した方が良いです。
37
37
  (既にしてるということであれば以下もスルーで…)
38
38
 
39
39
  制約は**ビジネスルールの再現、データ整合性の保証**を可能にするので。

4

誤字修正

2016/07/22 12:11

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -31,7 +31,7 @@
31
31
  1.post_idは必ず採番される
32
32
  2.post_idは必ず一意に定まる
33
33
 
34
- 上記の要件があるのでしたらが張れないにしろ、
34
+ 上記の要件があるのでしたら主キー制約が張れないにしろ、
35
35
  UNIQUE制約とNOT NULL制約は、
36
36
  よっぽどの理由がない限りは付与した方が良いです。
37
37
  (既にしてるということであれば以下もスルーで…)

3

蛇足の追加

2016/07/22 12:08

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -13,7 +13,7 @@
13
13
  とかで一括移行すると良いと思います。
14
14
  主キー重複には要注意ですが。
15
15
 
16
- **追記**
16
+ **追記**
17
17
  CakePHPほとんどかじってないから見当違いなこと言ってるかも…。
18
18
 
19
19
  ①と②にも返答しておくと、
@@ -26,8 +26,26 @@
26
26
  save時にpost_idが重複してこけるのであれば、
27
27
  save呼び出し前にユニークなpost_idを採番できてないだけとかありませんか?
28
28
 
29
+ **追記②**
30
+ 質問にあまり関係のない蛇足ですが…
31
+ 1.post_idは必ず採番される
32
+ 2.post_idは必ず一意に定まる
29
33
 
34
+ 上記の要件があるのでしたらが張れないにしろ、
35
+ UNIQUE制約とNOT NULL制約は、
36
+ よっぽどの理由がない限りは付与した方が良いです。
37
+ (既にしてるということであれば以下もスルーで…)
30
38
 
39
+ 制約は**ビジネスルールの再現、データ整合性の保証**を可能にするので。
40
+ 付加的な要素として他の開発者にも意図を伝える手段にもなり得ます。
31
41
 
42
+ 洗練されたテーブル設計は、
43
+ それだけである程度のビジネスルールを浮き彫りに出来ることを知っておいて損はないです。
32
44
 
33
45
 
46
+
47
+
48
+
49
+
50
+
51
+

2

追記

2016/07/22 12:07

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -11,4 +11,23 @@
11
11
  INSERT INTO post SELECT * FROM post_bk
12
12
  ```
13
13
  とかで一括移行すると良いと思います。
14
- 主キー重複には要注意ですが。
14
+ 主キー重複には要注意ですが。
15
+
16
+ **追記**
17
+ CakePHPほとんどかじってないから見当違いなこと言ってるかも…。
18
+
19
+ ①と②にも返答しておくと、
20
+ ①はUNIQUE制約を張れば主キーと似たようなことはできますが、
21
+ 違いとしとしてNULLが許容される点とNULLに限っては重複が認められる点があります。
22
+ まぁNOT NULL制約を合わせてつけるとNULL自体登録不可に出来るのでより主キーっぽくは出来ますが。
23
+ (UNIQUE INDEXも勝手に貼られたと思います。)
24
+
25
+ ②は範疇外であまり分からないのですが、
26
+ save時にpost_idが重複してこけるのであれば、
27
+ save呼び出し前にユニークなpost_idを採番できてないだけとかありませんか?
28
+
29
+
30
+
31
+
32
+
33
+

1

追記など

2016/07/22 10:18

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -7,5 +7,8 @@
7
7
  ただ恐らくデータが入っていると思うので、
8
8
  今のテーブルをリネーム(post_bkなど)して
9
9
  正しくテーブル定義し直したものに、
10
+ ```SQL
10
11
  INSERT INTO post SELECT * FROM post_bk
12
+ ```
11
- とかで一括登録すると良いと思います。
13
+ とかで一括移行すると良いと思います。
14
+ 主キー重複には要注意ですが。