• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データベーステーブル設計)

データベーステーブル設計

このQ&Aのポイント
  • レストランデータベースのシンプルなアプリケーションを作成する際に、どのようなテーブル設計が最適かについて教えてください。
  • レストランの情報を表示するアプリを作りたいですが、レストラン名、住所、電話番号、営業時間、評価をどのように設計するのがベストでしょうか。
  • レストランのデータベースを作成する際に、評価をどのように扱えば良いかについて教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

基本は次のとおりです。 レストランテーブル (レストランID,レストラン名,住所,電話番号,営業時間) ユーザテーブル (ユーザID,ユーザ名) 評価テーブル (レストランID,ユーザID,評価) 平均値はDBに格納せず,SELECT検索のたびに AVG(評価) 集約関数で計算させて出力します。ユーザは特定の3人に限定せず,多数のユーザが投票してもその評価の平均を出力することができます。 この設計で運用を進めてみて,「使用しているサーバの性能があまり高くなく,テーブルを結合したり AVG(評価) 計算していると時間がかかることが分かった」ということが判明したのであれば,この基本の正規形をあえて崩すことは検討するかもしれません。

rio_grande
質問者

お礼

jjon-com様、とてもクリアなご回答大変有難うございました。よくわかりました。念のため一点だけ確認ですが、ユーザはメンテナンス画面からデータベースに存在するレストラン1つあたり1回まで(0回 or 1回)評価出来るようにしたいのですが、この場合、評価テーブルのレストランID、ユーザIDの複合をプライマリキーにすればよいですよね?

その他の回答 (1)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

> レストランID、ユーザIDの複合を > プライマリキーにすればよいですよね? はい,そのとおりです。

rio_grande
質問者

お礼

有難うございました!