###前提・実現したいこと
PHP+MYSQLでkakaku.comのようなユーザー登録機能+各商品の口コミ機能+各商品のまとめ記事投稿機能をつけたものを構築したいのですが、PHP+MYSQL共に独学で小規模利用しか経験がありません。
大規模化になる事を想定してテーブルを設計しようとする場合、どのように設計すれば、データ数が増えても処理がもたつかず、将来の拡張等にも対応しやすいのかが良くわかりません。
大体以下のように考えているのですが、過不足やアドバイス等、何かありましたらアドバイスやご指摘等いただけると大変助かります。
なお、今回のシステムは初級レベルの個人でやるのですが、可能な限り大規模システムの経験者の方々の貴重な意見等を取り入れて、長く使えるシステムにしたいと考えています。
丸投げではなく、プログラミングやデータベースを独学で勉強して試行錯誤しながらやってきた素人で技術レベルの低い人間ではありますが、経験者の方々の貴重な意見を取り入れて可能な限り長く使える良いデータベースを設計してみたいとの意図で書き込みをさせていただきました。
プロの方たちには不適切な質問、気に入らない丸投げ質問に見えてしまったようであれば申し訳ありません。
(今回、teratailを使って質問するのもはじめてで勝手がよくわからないのですが、初心者はこのような扱いをされてしまうのでしょうか?)
何卒よろしくお願いいたします。
(最大想定ユーザー数)
ユーザー数 最大:10万人(MYSQLを利用して一定時間以内で検索(0.5秒以内)、登録(1秒以内)できる事が前提)
(現在考えている大まかなテーブル設計-最低限の事項のみ掲載)
(1)t_user[InnoDB] ユーザーテーブル (最大データ数100万件を想定)
user_id(autoincrement),mail_adress(メールアドレス),username(ニックネーム),password(パスワード),regdate(登録日)
※user_idがプライマリキー
(2)t_product[InnoDB] 商品テーブル(最大データ数100万件を想定)
pro_id(autoincrement),pro_name(商品名),pro_cat(商品カテゴリーID),pro_data1(商品基本データ1),~pro_datan(商品基本データn)、regdate(登録日)、update_date(更新日)
※pro_idがプライマリキー
(3)t_kuchikomi[InnoDB]口コミテーブル(商品カテゴリID別に必要数のテーブルを作成:1テーブル辺りの最大データ数約1000万件を想定)
kuchikomi_id(autoincrement),user_id,pro_id,kuchikomi_id2(口コミに対する回答等の口コミID),kuchikomi_data(口コミ記事データ),regdate(登録日)、update_date(更新日)
※kuchikomi_idがプライマリキー
(4)t_matome[InnoDB]まとめ記事テーブル(商品カテゴリID別に必要数のテーブルを作成:1テーブル辺りの最大データ数約1000万件を想定)
matome_id(autoincrement),user_id,pro_id,matome_data(まとめ記事データ),regdate(登録日)、update_date(更新日)
※matome_idがプライマリキー