[英]Structuring join tables for Many-to-Many relations
我正在開發應用程序,但遇到了一些問題,我認為這是由於我建立模式的方式所致。
該應用程序的概述是大學課程系統。 每個課程均由多個模塊組成,每個模塊均由多個單元組成,每個單元均由練習組成。
要求以不同的方式重復使用演習,單元和ma彈槍,以形成新的內容。 因此,例如練習A可以存在於模塊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
指向的是哪個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 |
+----------------+
最初,包含此信息似乎是多余的,但我對它的了解越多,似乎就必須要求它。
我認為您可以通過兩種方式做到這一點。 您提到的第一個。 第二個,您可以像最初一樣擁有所有參考表course,unit,module,exercise,然后擁有一個最終的Course_details表,其中包含Course_id,Module_id,Unit_id和Exercise_id。 這樣,您可以添加單個單元或練習,而無需將其附加到課程或模塊等上。
很高興我打算開發一個非常相似的系統,並且我想我將來會遇到同樣的問題。 所以我威脅您的問題,好像是我的一樣。
也許沒有必要存儲完整的練習路徑。 不在數據庫中...在我看來,會話數據非常適合您的情況。 用戶可能會從適當的unity
頁面進行某種exercise
。 那么,為什么不將父母的標識符作為參數發送給后代的頁面呢?
我還要選擇復合主鍵。 從圖形上講,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.