2013-05-10 80 views
-2

我有点困在一个泡菜试图制作两个相互关联的两个独立的数据库表。关联两个MySQL表?

在我的网站上,我有一组课程以及属于每个班级的一组目标。类存储在他们自己的数据库表中,而且他们自己的表中的目标也是如此。

我希望用户能够为活动类的任何目标手动设置开始日期和结束日期,当发生这种情况时,还需要在数据库中进行更新。我的麻烦来自于试图想象这是如何发生的,以及数据库中的表应该如何处理这个问题。所有的帮助都非常赞赏。谢谢

编辑:这是我目前的表设计。 (我不知道如何做一个适当的表上现在还没有,所以我就创造了设计的草稿。)

Classes 
class_id | instr_id | class_name | start_date | end_date | 
1  | 1  | Class1  | 2013-05-10 | 2013-05-30 | 
2  | 2  | Class2  | 2013-05-10 | 2013-05-30 | 
3  | 3  | Class3  | 2013-05-10 | 2013-05-30 | 
.. and so on for each class. 

Objectives 
class_id | objective_id | start_date | end_date | 
1  | 1   | 2013-05-10 | 2013-05-30 | 
1  | 2   | 2013-05-10 | 2013-05-30 | 
1  | 3   | 2013-05-10 | 2013-05-30 | 
2  | 1   | 2013-05-10 | 2013-05-30 | 
2  | 2   | 2013-05-10 | 2013-05-30 | 
2  | 3   | 2013-05-10 | 2013-05-30 | 
... and so on so every class has every objective_id, assuming each 
class has only 3 objectives. 

我真的希望这有助于澄清一些事情。

+0

如果可以,请输入一些代码,以便我们能够处理它。 – SAVAFA 2013-05-10 17:41:10

+0

为什么选择两列?将Objective.ClassID外键键入Class.ClassID。这就是你需要的。发布您的数据库模式可能会有所帮助。 – 2013-05-10 17:41:49

+0

以表格形式显示'CREATE TABLE'语句,表格形式的示例数据 – peterm 2013-05-10 17:42:34

回答

0

如果两个关系表之间存在多对多关系(如此处所述 - 可以为许多类设置一个目标,并且每个类可以有多个目标),那么通常应该用链接表来表示,这将与每个父表具有多对一的关系。

在此,链接表可以被称为像objective_assigned(作为“目标分配给类”简写形式) - 它可能有这样的结构:

class_id 
objective_id 
start_date 
end_date 

- 与类标识码的化合物的主键和objective_id。

我还希望存在一个目标表,其中主键为objective_id,列中包含目标标题/名称。