私は現在のプロジェクトで多くを行う前にデータベース設計と正規化の大部分を理解しようとしています。残念ながら、私はデータベース設計に関する多くの経験がないので、かなり遅いプロセスです。私が把握しようとしている問題の1つは、あるテーブルが別のテーブルに関連付けられているかどうかを処理する最善の方法です。データベースのためのRailsの方法:person may_have(has_one?)account
私は、Rails 3.2を使用してレースを管理するWebアプリケーションを構築しています。人々はアカウント(/ユーザーアカウント)を作成し、レースをホストし、さまざまな側面を管理することができます。
1つのことは、特定のレースの参加者がユーザーであるかどうかです。実際、彼らの大半はユーザーではないと仮定することができます。しかし、参加している人には、自分のプロフィールにリンクすることができればいいです(そして、逆に、プロフィールから彼らが参加したレースへのリンク)。
匿名のコメントを投稿できるブログのようなものですが、ログインしてアカウントを使用するとさまざまな方法で投稿とリンクします。
私はしばらく検索しましたが、解決策は見つかりませんでした。 Participantsモデルに "has_one UserParticipation"というメモを付けることです。これは通常はゼロです。
これは有効な解決策ですか? これについてもっと良い方法がありますか?
質問2:これは少しそれほど重要では が、私は「ので、私は同じ質問でそれを尋ねるだろう考え出し
ここで私は簡潔に問題を示すために、ペイントで一緒に投げた小さな図ですすでに関連する質問を掲載しました。いくつかのことが参加者を参照します。「race.participants」を使用してコンペティティブ{Race_ID、Participant_Number}スーパーキーを設定する必要はありませんか? (私が知る限り、これらは非常によく似た働きをします。)
ええ、その余分なテーブルは一種の不要なものでした。実際にあなたのモデルは、Railsがどのようにデータベースと連携するかについていくつかの点を明確にするのに役立ちます。 ユーザーモデルでは、ユーザーhas_manyの参加者(おそらく名前が変更された参加者)がある場合、「has_many participations:through Races」は使用しません。これはレースであったことを暗示します?それは単に "has_many participationations"となるでしょうか?今は意味をなさないようです。 – DRobinson
とにかく、私はあなたの答えを受け入れています。もともと私のデータベースの一部を考え出した方法に非常に似ています。テーブル内のヌル値の可能性が非常に高いため、「私の古いデータベース設計教授がこれを見たら私を殺すだろうと思っていました。 – DRobinson