回答編集履歴

1

追記

2019/09/05 21:42

投稿

Orlofsky
Orlofsky

スコア16415

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) の多用が必要です。