【发布时间】:2018-05-02 21:00:19
【问题描述】:
我有这样的架构:
create_table "grades", force: :cascade do |t|
t.integer "cls"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "post_grades", force: :cascade do |t|
t.integer "post_id"
t.integer "grade_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "posts", force: :cascade do |t|
t.integer "user_id", null: false
t.string "title"
t.text "content"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "user_grades", force: :cascade do |t|
t.integer "user_id"
t.integer "grade_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
在这个架构中,等级、帖子和用户都是相互关联的。
所以我的第一个问题:这样做是否正确?
假设一个用户在他的列中添加了等级 4 (cls = 4),而另一个用户添加了相同的等级。现在我在成绩表中对于两个不同的成绩 id 有相同的 cls 值。那么这个架构中是否有任何数据冗余?
【问题讨论】:
-
你能描述一下你的表的逻辑吗?没有任何概念性的理解就很难说有用的东西
-
用户有多个等级,可以在这些等级发布帖子。年级可以有很多职位,一个职位只能在一个年级。一个等级可以有许多用户。是否足够或需要详细说明?
-
Grade是否有任何特定用户,例如创作者/等,或者他们都相似? -
什么是
cls?是的,您的回复让事情变得有点清楚,但仍需要更多信息来帮助您 -
是的,这个用户有很多角色,比如管理员、教师和学生,其中只有管理员和教师可以在成绩中发布帖子。
标签: ruby-on-rails ruby-on-rails-5 database-schema table-relationships