質問編集履歴
2
ソースコードにコメントを追加しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -64,6 +64,8 @@
|
|
64
64
|
|
65
65
|
CREATE TABLE UserIdPatterns (
|
66
66
|
user_id_pattern_id INT AUTO_INCREMENT PRIMARY KEY,
|
67
|
+
|
68
|
+
-- "1,2,3,,," のように、User.user_id をカンマ区切りで持つ
|
67
69
|
user_ids VARCHAR(3068) NOT NULL UNIQUE
|
68
70
|
);
|
69
71
|
|
1
自分なりに変更したソースコードを追加しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -19,11 +19,9 @@
|
|
19
19
|
|
20
20
|
しかし要件2がわかりません。といいますのは、`user_ids`カラムにインデックスの最大値とされる3068バイトを持たせても、`INT(10)`のユーザが1万人は入りきらないためです。
|
21
21
|
|
22
|
-
|
23
|
-
|
24
22
|
### 該当のソースコード
|
25
23
|
|
26
|
-
```
|
24
|
+
```SQL
|
27
25
|
CREATE TABLE UserGroup (
|
28
26
|
group_id INT AUTO_INCREMENT PRIMARY KEY,
|
29
27
|
|
@@ -42,17 +40,41 @@
|
|
42
40
|
### 試したこと・調べたこと
|
43
41
|
- [x] teratailやGoogle等で検索した
|
44
42
|
- [x] ソースコードを自分なりに変更した
|
45
|
-
- [
|
43
|
+
- [ ] 知人に聞いた
|
46
44
|
- [ ] その他
|
47
45
|
|
48
|
-
#####
|
46
|
+
##### teratailやGoogle等で検索した
|
49
47
|
グループという名でネット検索すると、GROUP_CONCAT などの処理が出てしまい、今回の要件のような情報を見つけることはできませんでした。
|
50
48
|
|
51
49
|
そして、ChatGPT に聞いてもろくな返答はありませんでした。
|
52
50
|
|
51
|
+
##### ソースコードを自分なりに変更した1
|
53
|
-
|
52
|
+
`User` テーブルに新たに`user_unique`カラムを置いてそこに数字だけでなく英数記号の値を持たせ、`UserGroup`テーブルは`user_ids`でなく`user_uniques`とでもすれば、数字だけより多人数を管理できますが、やっぱりそれでも要件2を満たすには足りません。
|
54
53
|
|
54
|
+
##### ソースコードを自分なりに変更した2
|
55
|
-
すると残るは、`UserGroup.user_ids`という1つのカラムにまとめるのではなく、3068バイトずつ分割して別のテーブルに持たせ、それらのレコードのIDを繋げた値を`UserGroup`
|
55
|
+
すると残るは、`UserGroup.user_ids`という1つのカラムにまとめるのではなく、3068バイトずつ分割して別のテーブルに持たせ、それらのレコードのIDを繋げた値を`UserGroup.user_id_pattern_ids`として持たせるとかになるのでしょうか?あまりに不細工というか、ちょっとヘンだと思います。
|
56
|
+
|
57
|
+
```SQL
|
58
|
+
CREATE TABLE UserGroup (
|
59
|
+
group_id INT AUTO_INCREMENT PRIMARY KEY,
|
60
|
+
|
61
|
+
-- "1,2,3,,," のように、UserIdPatterns.user_id_pattern_id をカンマ区切りで持つ
|
62
|
+
user_id_pattern_ids VARCHAR(3068) NOT NULL UNIQUE
|
63
|
+
);
|
64
|
+
|
65
|
+
CREATE TABLE UserIdPatterns (
|
66
|
+
user_id_pattern_id INT AUTO_INCREMENT PRIMARY KEY,
|
67
|
+
user_ids VARCHAR(3068) NOT NULL UNIQUE
|
68
|
+
);
|
69
|
+
|
70
|
+
-- 以下は最初のコードと一緒
|
71
|
+
CREATE TABLE User (
|
72
|
+
user_id INT(10) AUTO_INCREMENT PRIMARY KEY,
|
73
|
+
user_name VARCHAR(255) NOT NULL,
|
74
|
+
group_id INT,
|
75
|
+
FOREIGN KEY (group_id) REFERENCES UserGroup(group_id)
|
76
|
+
);
|
77
|
+
```
|
56
78
|
|
57
79
|
もし良い方法があったら教えてください。
|
58
80
|
|