- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データベーステーブル設計)
データベーステーブル設計
このQ&Aのポイント
- レストランデータベースのシンプルなアプリケーションを作成する際に、どのようなテーブル設計が最適かについて教えてください。
- レストランの情報を表示するアプリを作りたいですが、レストラン名、住所、電話番号、営業時間、評価をどのように設計するのがベストでしょうか。
- レストランのデータベースを作成する際に、評価をどのように扱えば良いかについて教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
基本は次のとおりです。 レストランテーブル (レストランID,レストラン名,住所,電話番号,営業時間) ユーザテーブル (ユーザID,ユーザ名) 評価テーブル (レストランID,ユーザID,評価) 平均値はDBに格納せず,SELECT検索のたびに AVG(評価) 集約関数で計算させて出力します。ユーザは特定の3人に限定せず,多数のユーザが投票してもその評価の平均を出力することができます。 この設計で運用を進めてみて,「使用しているサーバの性能があまり高くなく,テーブルを結合したり AVG(評価) 計算していると時間がかかることが分かった」ということが判明したのであれば,この基本の正規形をあえて崩すことは検討するかもしれません。
その他の回答 (1)
- jjon-com
- ベストアンサー率61% (1599/2592)
回答No.2
> レストランID、ユーザIDの複合を > プライマリキーにすればよいですよね? はい,そのとおりです。
質問者
お礼
有難うございました!
お礼
jjon-com様、とてもクリアなご回答大変有難うございました。よくわかりました。念のため一点だけ確認ですが、ユーザはメンテナンス画面からデータベースに存在するレストラン1つあたり1回まで(0回 or 1回)評価出来るようにしたいのですが、この場合、評価テーブルのレストランID、ユーザIDの複合をプライマリキーにすればよいですよね?