我有点陷入困境,试图通过两列制作两个相互关联的数据库表。
在我的网站上,我有一组课程以及属于每个班级的一系列目标。类存储在它们自己的数据库表中,同样也存储在它们自己的表中。
我希望用户能够为活动类的任何目标手动设置开始和结束日期,并且当发生这种情况时,它也需要在数据库中更新。我的麻烦来自于试图想象这是怎么发生的,以及数据库中的表应该如何处理。非常感谢所有帮助。感谢
编辑:这是我目前的表格设计。 (我不知道如何在这里制作一张合适的桌子,所以我只想创建一个粗略的设计草案。)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 :(得分:0)
如果两个关系表之间存在多对多关系(如此处所述 - 可以为许多类设置一个目标,并且每个类可以有许多目标),这通常应该由链接表表示,将与每个父表具有多对一关系。
这里,链接表可以被称为objective_assigned(作为“Objective to Class”的缩写形式) - 它可能具有如下结构:
class_id
objective_id
start_date
end_date
- 在class_id和objective_id上使用复合主键。
我还希望存在一个Objective表,其主键为objective_id,另一列用于保存目标标题/名称。