【发布时间】:2016-01-05 14:25:01
【问题描述】:
我有一个用户可以挑战另一个用户的应用程序。挑战有日期、时间、地点、获胜者、失败者、可以接受或拒绝的分数。 我正在考虑我应该应用的数据库结构。 起初,我创建了一个如下所示的挑战表:
create_table "challenges", force: :cascade do |t|
t.date "date"
t.time "time"
t.text "place"
t.text "score"
t.integer "winner"
t.integer "loser"
t.integer "referee"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "accepted", default: false
我还创建了一个包含 user_id 和 challenge_id 的参赛者联接表
create_table "contestants", force: :cascade do |t|
t.integer "user_id"
t.integer "challenge_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
我不确定这是正确的数据结构,因为我现在对挑战的创建者和“接收者”之间的观点(不同部分)有所区别。 因此,我现在添加了一个直接将挑战链接到用户的迁移:挑战属于用户(挑战的创建者)和用户 has_many 挑战。但是现在我的参赛者表似乎有点多余。
我想要实现的正确数据结构是什么?
【问题讨论】:
标签: ruby-on-rails database jointable