我开发一个应用程序,并跑进一对夫妇,我相信是因为我已经建立了我的架构方式的问题。构建连接表许多一对多的关系
该应用的概述大学课程系统。每门课程由多个模块组成,每个模块由多个单元组成,每个单元由练习组成。
要求是锻炼,单位和maulers可以以不同的方式重新使用,以形成新的内容。因此,例如锻炼可以在模块B和模块C存在
起初,我已经走了,看起来像这样的数据库,我已经删除了所有,但主键和外的ID为简洁。
+---------+
| courses |
+---------+
| id |
+---------+
+----------------+
| course_modules |
+----------------+
| id |
| course_id |
| module_id |
+----------------+
+---------+
| modules |
+---------+
| id |
+---------+
+--------------+
| module_units |
+--------------+
| id |
| module_id |
| unit_id |
+--------------+
+-------+
| units |
+-------+
| id |
+-------+
+----------------+
| unit_exercises |
+----------------+
| id |
| unit_id |
| exercise_id |
+----------------+
+-----------+
| exercises |
+-----------+
| id |
+-----------+
到目前为止,这似乎很明显,我已经搞砸了。
给定一个具体的unit_exercise
我没有办法知道它属于哪个过程,因为我无法可靠地向上移动“链”,因为不可能知道这是指哪个module_unit
。
我的问题是我应该连接表实际上是链接到自己的父母吗?因此,例如我改变加入到
+----------------+
| course_modules |
+----------------+
| id |
| course_id |
| module_id |
+----------------+
+-------------------+
| module_units |
+-------------------+
| id |
| course_modules_id |
| module_id |
| unit_id |
+-------------------+
+----------------+
| unit_exercises |
+----------------+
| id |
| module_unit_id |
| unit_id |
| exercise_id |
+----------------+
最初,它似乎是多余包含此信息,但更多的我看着它,好像它必须是必需的。
你没有搞砸了 - 一个单位的锻炼可以属于多个模块/课程。只要确保保持'{unit_id,exercise_id}'等等。独特。 – 2014-11-04 20:31:27
我需要能够去特定的单位(例如),并能够找到正确的相关课程。 没有表的“父”的辅助外键没有办法做到这一点,似乎他们是不明确的,哪一个'course_unit'属于'course_module' – veganista 2014-11-05 14:16:13