У меня есть такая схема:
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) в свой столбец, а другой пользователь добавил ту же оценку. Теперь у меня есть одинаковое значение cls в таблице оценок для двух разных идентификаторов оценок. Так есть ли в этой схеме избыточность данных?