因此,我将在接下来的两周内构建一个网络应用程序,旨在将音乐学生与音乐教师联系起来。
这将全部使用带有ActiveRecord数据库的Ruby on Rails
完成我正在尝试以适当的关系计划我的数据库,并希望确保在继续前进之前一切都很好。
我的想法是进行user
到user
互动。
这将包括以下列:
- 名字(字符串)
- 姓氏(字符串)
- location(string)
- mobile(boolean)
- bio(text)
- 电子邮件(字符串)
- 密码(字符串)
模型中的关联类似于
- 班级学生
- has_many:老师,通过:::tutorships
- has_many:instruments
然后
- 班级老师
- has_many:学生,通过:::tutorships
- has_many:instruments
然后是仪器表
- instrument(string)
- skill_level(整数)*使用模型中的枚举与初学者,中级和&先进
- 模型将是(belongs_to(:student /:teacher)
然后,用户之间的联接表将是一个辅导表:
- belongs_to:student
- belongs_to:老师
- has_many:课程
然后是课程表
- belongs_to:tutorship
所以,这就是我到目前为止所拥有的。我的问题是,当我在Rails中设置我的迁移时,我是否会丢失表格中的任何内容?
我认为我需要提出类似t.belongs_to :student
之类的内容,但因为这是一种user
到user
关系。
我在这里缺少什么?我知道有些不对劲。
答案 0 :(得分:0)
SQL数据库是高度规范化的,但您当然可以将学生和教师ID复制到课程中,从而进行非规范化,并且为了提高性能,这是一个很好的理由。
实际上,在这种情况下,这是一个好主意,想到老师生病了,还有一个课程由替代老师教授。无需创建新的辅导,只需为该课程分配不同的老师。
你缺少的东西当然是时间戳/日期。
答案 1 :(得分:0)
如果您想知道的话,您只需要将t.belongs_to :student
添加到辅导和工具表中,而不是教师。
许多人希望添加一些状态列来区分学生和教师的活跃/前/ ...