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

回答編集履歴

2

追記

2017/01/27 17:58

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -39,4 +39,17 @@
39
39
 
40
40
  一意制約の付け方次第で、
41
41
  ここまで暗黙的な仕様が変化するので、
42
- 実現したいこと・満たすべき要件をきちんと整理してから作業を行うようにしましょう。
42
+ 実現したいこと・満たすべき要件をきちんと整理してから作業を行うようにしましょう。
43
+
44
+ #追記
45
+ 質問者様のキャプチャ画像今頃目を通してみましたが、
46
+ もしかして**ユーザIDとサイズそれぞれで一意制約を定義**してませんか?
47
+
48
+ その場合は以前に回答したパターンの内、
49
+ 4つ目で紹介したような振る舞いとなります。
50
+
51
+ つまるところ、
52
+ - 1ユーザは1ファイルしか登録できない(同ユーザの2回目以降の登録は常に上書き)
53
+ - 同サイズのファイルは全ユーザ分を含めて1つしか存在できない(サイズが同じファイルがあれば常に上書き)
54
+
55
+ となってしまいますよ。

1

回答一部修正

2017/01/27 17:58

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -12,17 +12,29 @@
12
12
  その際に発生する暗黙的な仕様を浮き彫りにしていきます。
13
13
 
14
14
  - ユーザIDで一意
15
- → 1ユーザ1ファイルしか登録できない(恐らく変更前の状態)
15
+ → 1ユーザ1ファイルしか登録できない
16
+ (恐らく変更前の状態)
16
17
 
17
18
  - ユーザID、ファイル名で一意
19
+ → 1ユーザ複数ファイルを登録できる。
18
- → 1ユーザ複数ファイルを登録できる。同名ファイルを登録した場合は上書きされる
20
+ 同名ファイルを登録した場合は上書きされる
19
21
 
20
22
  - ユーザID、サイズで一意
23
+ → 1ユーザ複数ファイルを登録できる。
21
- → 1ユーザ複数ファイルを登録できる。同一サイズのファイルを登録した場合は同一サイズのファイルが上書きされる。つまり名称が違う全然別ファイルでもサイズが被れば上書きされる(恐らく質問者様の現状)
24
+ 同一サイズのファイルを登録した場合は同一サイズのファイルが上書きされる。
25
+ つまり名称が違う全然別ファイルでもサイズが被れば上書きされる。
26
+ (恐らく質問者様の現状)
22
27
 
23
28
  - ユーザID、ファイル名、サイズで一意
29
+ → 1ユーザ複数ファイルを登録できる。
30
+ 同名、同サイズのファイルを登録した場合のみ上書きされる。
24
- 1ユーザ複数ファイルを登録できる。同名、同サイズのファイルを登録した場合のみ上書きされる。つまりサイズ違いは名前が一緒のファイルでも別物扱いとなる。
31
+ つまりサイズ違いは名前が一緒のファイルでも別物扱いとなる。
25
32
 
33
+ - ユーザIDで一意、かつファイル名で一意(おまけ)
34
+ → 1ユーザ1ファイルしか登録できない。
35
+ かつ他のユーザで同名ファイルの登録があるとそのファイルが上書きされる。
36
+ (複合一意キーの認識誤りの場合に陥ることがあるミス)
37
+
26
38
  ---
27
39
 
28
40
  一意制約の付け方次第で、