我在设计桌子时遇到了麻烦。
我目前的关系是代表锻炼程序和一周中的几天。我有一个常规表,一对多,有一个日表,日表是多对多的,有一个练习表。因为由不同日期和不同日期组成的例程由不同的练习组成。
表: 常规, 天, day_exercise(多对多关系的联结表), 锻炼
我遇到的问题是日间和锻炼关系,我希望有一个排序字段,以便用户必须按特定顺序进行当天的锻炼。我不能在联结表(day_exercise表)中放置一个排序字段,因为它不再是纯粹的多对多关系。另一个原因是因为MVC框架确实支持复合主键,并且为联结表创建自动增量字段是糟糕的设计。
我认为解决方案是要么我制作第三张桌子,练习排序,所以联结表将有3个主键,而不是仅仅2天和练习。这是正确的方法还是我必须重新考虑这种关系?
提前谢谢!
答案 0 :(得分:1)
如果你需要一个排序列,而且看起来你确实这样做了,那么它几乎肯定会进入存储当天每个用户练习的表格中。我期待看到一张像这样的桌子。
user_id day exercise_id sort_order
--
1 Mon 32 1
1 Mon 33 2
...
1 Mon 13 9
...
1 Fri 32 1
...
1 Fri 17 9
2 Mon 36 1
等等。但是我不清楚这可能是你的架构中的哪个表。我认为列(day,exercise_id)将具有对表day_exercise的外键引用。 (虽然我不确定我是否在表格中看到包含日期和练习但没有包含用户ID的内容。不是说没有一个很好的理由,只是因为我没有看到原因你发布了。)