前提・実現したいこと
PHP+MySQLでWEBサービスを作成しています。
- 想定ユーザー数
10,000人
- 1ユーザーあたりのデータ件数
約20分類、計4000件程度(最大1分類2000件程度)
※分類・件数は今後増加の可能性もある
- 格納されるデータ
0~9のいずれか
ユーザーがサービスにアクセスする都度に、20分類のうちいずれかのデータ群にアクセスし、そのデータ群の保有するデータを表示する予定です。
検討した方針
最初は分類(データ群)ごとに、テーブルを作成し、データ件数分のカラムを用意し、レコードとしてユーザー各々のデータを格納しようかと思いました。
user_id | data1 | data2 | data3 | ... | data2000 |
---|---|---|---|---|---|
USER00001 | 0 | 1 | 4 | ... | 6 |
USER00002 | 1 | 1 | 7 | ... | 2 |
USER00003 | 1 | 3 | 1 | ... | 4 |
... | ... | ... | ... | ... | ... |
USER10000 | 4 | 5 | 2 | ... | 0 |
調べてみると、MySQLの最大カラム数は 4096カラムとのことでした。
ですが、カラム数が多いのは可読性や保守性が最悪になると感じました。
また、ユーザーごとにテーブルを作り4000レコードを保有することも考えましたが、1万テーブルも作成されるのはどうなのだろうか...
となりました。
加えて、下の質問に寄せられている回答でもテーブルやデータベースで分けるべきではないとのことでした。
【MySQL】データベースを追加するかテーブルを追加するか|teratail
どのようにデータベースを設計するのがベストなのでしょうか...
補足情報(FW/ツールのバージョンなど)
- APサーバ
さくらインターネット Windows Server2019
- DBサーバ
ConoHa DBサーバ(MySQL(MariaDB))
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/27 07:57
2020/05/27 08:30
2020/05/27 08:41
2020/05/27 08:42