关联两个MySQL表?

时间:2013-05-10 17:38:57

标签: php 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.

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

1 个答案:

答案 0 :(得分:0)

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

这里,链接表可以被称为objective_assigned(作为“Objective to Class”的缩写形式) - 它可能具有如下结构:

class_id
objective_id
start_date
end_date

- 在class_id和objective_id上​​使用复合主键。

我还希望存在一个Objective表,其主键为objective_id,另一列用于保存目标标题/名称。