私はクイズのアプリケーションを作りたいと思っているのですがその時に作るデータベース設計に悩んでいます。
クイズに多対1でカテゴリカルを作ろうと思うのですがこのカテゴリカルを何種類かで絞りたいと思っています。
例としてプロ野球の球団に関するクイズアプリだとしてカテゴリカルを12球団のみにするようなカテゴリカルテーブルを作りたいと思っています。
今考えていたのは
Categoriesテーブル
カラム名 | 型 | カラムの説明 |
---|---|---|
id | int型 | 連番 |
name | string型 | カテゴリー名 |
created_at | datetime型 | 作成日時 |
updated_at | datetime型 | 更新日時 |
これであっているでしょうか?
具体的なアプリはユーザが4択問題を出し合うようなアプリを作りたいと思っていました。
その中で
https://www.techpit.jp/courses/8/curriculums/9/sections/70/parts/237
このサイトに載っているテーブル設計を真似しようかなと思いました。
しかし、今は12球団だけなのでCategoriesテーブルを何種類かで絞りたいと思いこの質問をさせていただきました。
> これであっているでしょうか?
質問者さんの考えていることや何がしたいのかの詳細が分からない赤の他人にそういう漠然としたことを聞いてもまともな答えが返ってくるとは思えないのですが?
created_at と updated_at をどう使うつもりか気になります。現状の 12 球団固定なら不要だし、球団名変更に対応するなら履歴を持ちたいでしょうし、球団統合や新規参入に対応するならもっとよく考える必要がありそうですね。(いま検索したら 16 球団にするなんて話もあるみたいですが、本気かなぁ。)
新規参入なんかにも対応していきたいので一応その2つをつけました。
具体的にアプリの詳細も入れておきます。
全然具体的じゃないというか、具体的に考えるというのは実際にそのテーブルにどんな値を入れて、具体的なクイズ問題をどう紐づけるか考えるということです。
例えば、現在の 12 球団のデータには「オリックス・バファローズ」が含まれると思いますが、「かつてイチローが所属した球団はどこか?」「野茂英雄が…」という 2 つの問題のカテゴリーはいずれも「オリックス・バファローズ」ということでしょうか?
知識不足ですいません。そのように考えていました。近鉄とオリックスはバッファローズとして同じなのでオリックスバッファローズで問題を出そうと思っていました。その選手が今ある球団のどこか(球団名が変わっても)にいる場合いた時代の問題ならそのカテゴリに投稿できると考えていました。しかし、その選手がfaなどでいなくなった後の問題が設定されないようにすることは考えていないのでそこはユーザーの問題作りに任せようとしていました。
近鉄にいて楽天に行った場合は楽天に問題を書く感じです。
近鉄で一筋で野球を終えた場合はオリックスに書く感じです。
こちらこそ最近のプロ野球は見てないので、古い話を持ち出してごめんなさい。私が言いたかったのは、中途半端に「新規参入なんかにも対応していきたい」なんて言うと考えることが増えすぎて大変なので、とりあえず現在の 12 球団固定で構わないと思うし、そうすると created_at も updated_at も不要では (というか、実際にどんな値を入れるのか想像できない) ってことです。
参考にした記事ではすべてのテーブルに created_at と updated_at がありますが、たぶんどのテーブルにもユーザーが新しく情報を登録したり編集できるようにってことなんでしょうね。カテゴリーを球団名にこだわらず、あとから追加もできるようにしたいということならもちろん意味があると思いますよ。
そうですね。構造は簡単にしていきたいと思います。
先にクイズの問題をある程度作成されてはいかがでしょうか?
その後、必要なカテゴリーを決めることをお勧めします。
まずはクイズのテーブルを作ってからユーザーやカテゴリのテーブルを作っていく感じですか?
いえ、クイズの問題そのものを、ある程度作ってみては?というご提案です。
カテゴリーを球団別にした場合、球団を選択肢にした問題、複数在籍した選手に関する問題、消滅したトンボや松竹などの問題、など、管理が難しくなるものが発生しますので。
実体が見えないままでは、正しい設計もできないかと。
なるほど、ありがとうございます。そうしてます。野球詳しいですね...
あなたの回答
tips
プレビュー