你不想有两张routines
桌子。
您需要一个 routines
表,以及一个exercises
引用该表的routines
表。
取决于一个例程是否对所有用户都相同,或者每个用户是否可以拥有自己版本的“二头肌”例程,也许您需要多一张桌子。
看看下面的例子!
示例 1(每个用户都可以有自己的“二头肌”例程):
用户表:
UserId Name
----------------
1 Joe
2 Bill
例程表:
RoutineId Name UserId
-------------------------------
1 biceps 1
2 biceps 2
练习表:
ExerciseId RoutineId Name
--------------------------------------------------------
1 1 first exercise of routine 1
2 1 second exercise of routine 1
3 2 first exercise of routine 2
4 2 second exercise of routine 2
示例 2(只有一个“二头肌”例程,对所有用户都一样):
用户表:
UserId Name
----------------
1 Joe
2 Bill
例程表:
RoutineId Name
------------------
1 biceps
用户 <--> 例程链接表:
UserId RoutineId
--------------------
1 1
2 1
练习表:
ExerciseId RoutineId Name
--------------------------------------------------------
1 1 first exercise of routine 1
2 1 second exercise of routine 1
编辑:
你说:
是的,例程对每个用户都是私有的,因为他们创建了它们。它们不共享
和:
每个练习应该能够使用不止一次。即我可能在我的“背部锻炼”程序和我的“手臂锻炼”程序中进行“引体向上”运动
最终解决方案:
用户表:
UserId Name
----------------
1 Joe
2 Bill
例程表:
RoutineId Name UserId
-----------------------------------------------------
1 Joe's back workout 1
2 Joe's arm workout 1
3 Bills's back workout 2
“全局”练习表:
ExerciseId Name
--------------------------------------------------------
1 pull up
2 whatever
例程 <--> 练习链接表:
RoutineId ExerciseId
----------------------------------
1 2
2 1
3 1
这样,“引体向上”锻炼出现在 Joe 的手臂锻炼(例程 2)和 Bills 的背部锻炼(例程 3)中,但不在 Joe 的背部锻炼(例程 1)中。
“随便”例行程序仅在 Joe 的背部锻炼(例行程序 1)中。
这是你想要的吗?