質問編集履歴
4
重要情報があったので修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
MySQL初心者です。
|
5
|
+
MySQL初心者です。初めてDB設計を行います。
|
6
6
|
|
7
7
|
MySQLでログデータを管理し、Web上から検索可能なシステムを構築しております。
|
8
8
|
|
9
9
|
ログデータには「要素」があり、それぞれのログデータの要素数や要素項目はバラバラです。定期的にデータベースに格納されていきます。
|
10
10
|
|
11
|
-
ログデータ全体は
|
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
試したことを追記
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
改行
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
説明を追記
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
|
-
クラステーブル継承したテーブルを下記に示します。main
|
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 main
|
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 main
|
83
|
+
FOREIGN KEY (id) REFERENCES main(path_id)
|
80
84
|
|
81
85
|
);
|
82
86
|
|