質問編集履歴

4

重要情報があったので修正

2018/09/09 10:18

投稿

dorado
dorado

スコア15

test CHANGED
File without changes
test CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
 
4
4
 
5
- MySQL初心者です。社内システムではありますが、初めてDB設計を行います。(担当は私のみ)
5
+ MySQL初心者です。初めてDB設計を行います。
6
6
 
7
7
  MySQLでログデータを管理し、Web上から検索可能なシステムを構築しております。
8
8
 
9
9
  ログデータには「要素」があり、それぞれのログデータの要素数や要素項目はバラバラです。定期的にデータベースに格納されていきます。
10
10
 
11
- ログデータ全体は20万件程度あります。後に示しますが、ここでいっている20万件はMainTableのidに相当します。
11
+ ログデータ全体は50万件程度あります。後に示しますが、ここでいっている50万件はMainTableのidに相当します。
12
12
 
13
13
 
14
14
 
@@ -144,7 +144,7 @@
144
144
 
145
145
  要求にある、「複数条件による検索が可能であること。」を満たすために悩んでいます。
146
146
 
147
- Webアプリ側から以下の質問を受けています。
147
+ Web設計側から以下の質問を受けています。
148
148
 
149
149
  例:SpeedTableの値が 20以上 かつ FuelTableの値が 50以上 のMainTableのCommentを取得するには、どのようなクエリが望ましいか。
150
150
 
@@ -170,7 +170,7 @@
170
170
 
171
171
  クラステーブル継承ではなく、シングルテーブル継承を使って全ての組み合わせを1レコードずつ使うことも考えました。
172
172
 
173
- ただ、ログデータを格納する側のアプリが譲らないため、かなり揉めてしまっています。
173
+ ただ、ログデータを格納する機能側が譲らないため、かなり揉めてしまっています。
174
174
 
175
175
  また、全ての組み合わせとなると「要素が追加されること」というシステム要求に対しても危険な設計なのかなと思っています。(組み合わせ爆発)
176
176
 

3

試したことを追記

2018/09/09 10:18

投稿

dorado
dorado

スコア15

test CHANGED
File without changes
test CHANGED
@@ -166,6 +166,20 @@
166
166
 
167
167
 
168
168
 
169
+ ### 試したこと
170
+
171
+ クラステーブル継承ではなく、シングルテーブル継承を使って全ての組み合わせを1レコードずつ使うことも考えました。
172
+
173
+ ただ、ログデータを格納する側のアプリが譲らないため、かなり揉めてしまっています。
174
+
175
+ また、全ての組み合わせとなると「要素が追加されること」というシステム要求に対しても危険な設計なのかなと思っています。(組み合わせ爆発)
176
+
177
+
178
+
179
+
180
+
181
+
182
+
169
183
  ### 補足情報
170
184
 
171
185
 

2

改行

2018/09/09 10:13

投稿

dorado
dorado

スコア15

test CHANGED
File without changes
test CHANGED
@@ -29,6 +29,10 @@
29
29
  Key-Value型で(Key-Value)の条件を複数している事例がほとんど見つからなかったです。
30
30
 
31
31
 
32
+
33
+
34
+
35
+ ---テーブル---
32
36
 
33
37
  クラステーブル継承したテーブルを下記に示します。mainテーブルはマスタテーブルです。
34
38
 

1

説明を追記

2018/09/09 10:09

投稿

dorado
dorado

スコア15

test CHANGED
File without changes
test CHANGED
@@ -6,11 +6,15 @@
6
6
 
7
7
  MySQLでログデータを管理し、Web上から検索可能なシステムを構築しております。
8
8
 
9
+ ログデータには「要素」があり、それぞれのログデータの要素数や要素項目はバラバラです。定期的にデータベースに格納されていきます。
10
+
11
+ ログデータ全体は20万件程度あります。後に示しますが、ここでいっている20万件はMainTableのidに相当します。
9
12
 
10
13
 
11
- ---システム要求と検討したこと---
12
14
 
15
+ ---システム要求と検討方針---
16
+
13
- システム要求に、
17
+ システム要求に
14
18
 
15
19
  要素の複数条件検索が可能であること、要素に数値が入ること、要素が追加されること。等があることを鑑みて、
16
20
 
@@ -18,7 +22,7 @@
18
22
 
19
23
 
20
24
 
21
- ※典型的なEAVアンチパターンであると思い、いろいろと書籍やネットで調査しました。
25
+ ※典型的なEAVアンチパターンと思いました。
22
26
 
23
27
  ※「要素の複数条件検索可能」という条件を満たすためには、EAV(KeyValuStore型)ではAND条件が厳しいと考えました。
24
28
 
@@ -26,7 +30,7 @@
26
30
 
27
31
 
28
32
 
29
- クラステーブル継承したテーブルを下記に示します。mainsテーブルはマスタテーブルです。
33
+ クラステーブル継承したテーブルを下記に示します。mainテーブルはマスタテーブルです。
30
34
 
31
35
  ログデータはクラステーブルに自動採番(Autoincrement)でデータが納入されていきます。
32
36
 
@@ -60,7 +64,7 @@
60
64
 
61
65
  value INT(11),
62
66
 
63
- FOREIGN KEY (id) REFERENCES mains(path_id )
67
+ FOREIGN KEY (id) REFERENCES main(path_id )
64
68
 
65
69
  );
66
70
 
@@ -76,7 +80,7 @@
76
80
 
77
81
  value INT(11),
78
82
 
79
- FOREIGN KEY (id) REFERENCES mains(path_id)
83
+ FOREIGN KEY (id) REFERENCES main(path_id)
80
84
 
81
85
  );
82
86