好的,所以我有一个网站正在进行中,将允许用户使用提供的一组练习来建立例程。他们可以在自己创建和命名的例程中添加一些练习。
所以我想我应该有一个用户表。每个用户都有许多例程。每套动作都会有一些练习。
因此,我将有3个表:用户、例程和练习
但
我怎样才能将“routines”和“练习”联系起来,因为“routines”必须是一个以上的表,因为如果你想象一个用户创建了“二头肌”程序,并在其中填充了练习。然后,他创造出“三头肌”,并在其中进行练习。然后,他必须有两个常规的表,称为‘二头肌’和‘三头肌’。
那么,我该如何构建我的数据库来适应这种情况呢?
记住,每个用户都有一个唯一的ID,每个练习都有一个唯一的ID,每个例程都有一个唯一的ID。
发布于 2012-11-14 05:31:06
create table users(
userid int not null AUTO_INCREMENT PRIMARY KEY,
firstname char(30) not null,
lastname char(30) not null
);
create table routines(
rid int not null AUTO_INCREMENT PRIMARY KEY,
userid int not null,
rname char(30) not null
);
create table execises(
eid int not null AUTO_INCREMENT PRIMARY KEY,
rid int not null,
ename char(30) not null
);发布于 2012-11-14 05:30:15
您不希望有两个routines表。
您需要一个 routines表,外加一个引用routines表的exercises表。
取决于一个例程是否对所有用户都相同,或者每个用户是否可以有自己版本的“二头肌”例程,也许您还需要一个表。
看看下面的例子吧!
示例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这样,“引体向上”练习是在乔的手臂锻炼(例程2)和比尔的背部锻炼(例程3),但不是在乔的背部锻炼(例程1)。
“随便”套路只在乔的背部锻炼(套路1)。
这是你想要的吗?
https://stackoverflow.com/questions/13369050
复制相似问题