回答編集履歴
1
追記
test
CHANGED
@@ -3,3 +3,71 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
SQLをシンプルにパフォーマンス良く実行できるように、[データベースのテーブルは[データベースの正規化](https://oss-db.jp/measures/dojo_info_04.shtml) に沿って設計します。通常、第3正規化まで行います。この質問では第1正規化で繰り返しを排除します。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
追記
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
Markdown を使いたいのでこちらに追記します。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
オオカミは全部で何匹でしょうか?
|
20
|
+
|
21
|
+
現行テーブルと以下に提示したテーブルでSQLを追記してください。
|
22
|
+
|
23
|
+
最初に書いたように動物が増えた時のSQLでの対応方法も現行と提案部分で各々追記してください。
|
24
|
+
|
25
|
+
[SUM ... GROUP BY](https://www.dbonline.jp/sqlite/select/index14.html) を使って各動物毎の合計数を取得するSQLを提示してください。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
正規化とは維持を容易に、しかもパフォーマンスが良いシステムを作る為に必要不可欠な手法です。
|
30
|
+
|
31
|
+
繰り返しの排除を理解できないようなのでCREATE TABLEを提示します。
|
32
|
+
|
33
|
+
```SQL
|
34
|
+
|
35
|
+
CREATE TABLE card (
|
36
|
+
|
37
|
+
card_id INTEGER,
|
38
|
+
|
39
|
+
card_name TEXT,
|
40
|
+
|
41
|
+
PRIMARY KEY (card_id)
|
42
|
+
|
43
|
+
);
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
CREATE TABLE user (
|
48
|
+
|
49
|
+
user_id INTEGER,
|
50
|
+
|
51
|
+
user_name TEXT,
|
52
|
+
|
53
|
+
PRIMARY KEY (user_id)
|
54
|
+
|
55
|
+
);
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
CREATE TABLE card_user (
|
60
|
+
|
61
|
+
card_id INTEGER,
|
62
|
+
|
63
|
+
user_id INTEGER,
|
64
|
+
|
65
|
+
toosu INTEGER, -- 頭数
|
66
|
+
|
67
|
+
PRIMARY KEY (card_id, user_id)
|
68
|
+
|
69
|
+
);
|
70
|
+
|
71
|
+
```
|
72
|
+
|
73
|
+
現行では[SUBSTR](https://www.dbonline.jp/sqlite/function/index13.html) の多用が必要です。
|