質問編集履歴

1

情報が足りていなかったと反省し、追記しました。

2022/12/02 21:25

投稿

mjnk_ct
mjnk_ct

スコア5

test CHANGED
File without changes
test CHANGED
@@ -5,56 +5,73 @@
5
5
 
6
6
  ### 実現したいこと
7
7
 
8
- ここに実現したいことを箇条書きで書いてください。
9
- 以下ようなステータスと効果定義されている場合
8
+ カードゲームのステータスと呼ばれる状態と、それぞれのステータス発動している時の効果ついてデータベースで持ちたいと思っています。
10
- |ステータス|
11
- |:----|
12
- |status1|
13
- |status2|
14
- |status3|
15
- |status4|
16
9
 
10
+ 以下のようなステータステーブルと効果テーブルが定義されている場合に、
17
- |効果|
11
+ |ステータスID|ステータス名|
18
- |:----|
12
+ |:----|:----|
19
- |効果A|
13
+ |1|status1|
20
- |効果B|
14
+ |2|status2|
21
- |効果C|
15
+ |3|status3|
16
+ |4|status4|
22
17
 
23
- 以下のようなステータスの保持状態と効果のマッピング設定に従い、現在のステータスに適した効果を取得したいです。
24
- |ステータスの状態|効果|
18
+ |効果ID|効果|
25
19
  |:----|:----|
26
- |status1, status2 を保持|効果A|
20
+ |1|効果A|
27
- |status1, status3 を保持|効果B|
21
+ |2|効果B|
28
- |status1, status3, status4 を保持|効果C, D|
22
+ |3|効果C|
23
+ |4|効果D|
24
+ |5|効果E|
29
25
 
26
+ 以下のようなステータスの有効状態と効果のマッピング設定に従い、現在有効になっているステータスの組み合わせに適した効果を取得したいです。
27
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-12-03/80877036-011f-404e-a8bd-86bf5c40194b.png)
30
28
 
29
+ キャラクターがステータスID=1のみの場合は、効果ID=1が有効化され、
31
- (入力値:status1, status2  出力:効果A  としたい。)
30
+ キャラクターがステータスID=1, 2の場合は、効果ID=2が有効化され、
31
+ キャラクターがステータスID=1, 3の場合は、効果ID=3が有効化され、
32
+ キャラクターがステータスID=1, 3、4の場合は、効果ID=4, 5が有効化される、
32
33
 
33
-
34
- ステータスの状態として組合わせの数は可変で、
34
+ ステータスは1つのみでも ある効果を有効化したりしますが
35
- 付与される効果もいくつかある場合があります。
36
- 最も多く条件を満たすステータスの状態適用ようと思っています。
35
+ 他のステータスと組み合わさるとまた別効果有効化たりします。
37
- ex→
38
- status1, status3, status4 を保持していた場合は、
39
- 効果Bではなく 効果C, D を付与する。
40
-
41
36
 
42
37
  このような、レコードを複数まとめて1つの意味を持たせるような形は、どのようにデータベース設計するのもでしょうか。
43
38
 
44
39
 
45
40
  ### 考えていること
46
41
 
42
+ ステータスとそれに紐づく効果が1対1の場合は、ステータスマスタから効果マスタを参照すればよいと思います。
43
+ |ステータスID|ステータス名|効果ID|
44
+ |:----|:----|:----|
45
+ |1|status1|1|
46
+ |2|status2|2|
47
+
48
+ ステータスとそれに紐づく効果が1対nの場合は、以下のように中間テーブルで紐づければよいと思います。
49
+ |ステータスID|効果ID|
50
+ |:----|:----|
51
+ |1|1|
52
+ |2|2|
53
+
54
+ 今回のように、まずステータスの状態を組み合わせた上で、それに対して効果が決まる場合は、
55
+ 以下のようにまずステータスのセットを定義して、
47
- 現状では、ステータスを複数まめるようの中間テーブル?作り、
56
+ そのステータスセットに対して効果の参照持たせることを考えました。
57
+ |ステータスID|ステータスセットID|
58
+ |:----|:----|
48
- そこで
59
+ |1|1|
60
+ |1|2|
61
+ |2|2|
62
+ |1|3|
63
+ |3|3|
64
+ |1|4|
65
+ |3|4|
66
+ |4|4|
67
+
49
-  ステータス状態セット1=status1
68
+ |ステータスセットID|効果ID|
50
- ステータス状態セット1=status2
51
- ステータス状態セット2=status1
52
- ステータス状態セット2=status3
53
- ステータス状態セット3=status1
54
- ステータス状態セット3=status3
55
- ステータス状態セット3=status4
56
- というようにレコードを複数まとめ、
69
+ |:----|:----|
57
- また別のテーブルでこのステータス状態セットがそれぞれどの効果と関連づいているかの関係性を持たせるなどを考えています。
70
+ |1|1|
71
+ |2|2|
72
+ |3|3|
73
+ |4|4|
74
+ |4|5|
58
75
 
59
76
  他に何か参考になるものがありましたらお教えください。
60
77