[英]SQL - database design, need suggestion
我正在構建每個用戶都有不同類的網站
+----+-----------+---------+
| id | subject | user_id |
+----+-----------+---------+
| 1 | Math 140 | 2 |
| 2 | ART 240 | 2 |
+----+-----------+---------+
然后每個類都會有大量的Homework文件,Class-Papers文件等等。 在這里,我需要你的幫助。 什么是更好的方法:構建一個這樣的表:
+----+-----------+--------------------------------------------------+--------------+
| id | subject | Homework | Class-Papers |
+----+-----------+-----------------------------------------------------------------+
| 1 | Math 140 | www.example.com/subjects/Math+140/file_name.pdf | bla-bla |
| 2 | Math 140 | www.example.com/subjects/Math+140/file_name.pdf | bla-bla |
| 3 | Math 140 | www.example.com/subjects/Math+140/file_name.pdf | bla-bla |
| 4 | ART 240 | www.example.com/subjects/ART +240/file_name.pdf | bla-bla |
| 5 | ART 240 | www.example.com/subjects/ART +240/file_name.pdf | bla-bla |
+----+-----------+--------------------------------------------------+--------------+
而不是僅僅在我想要顯示它時分離內容,或者為每個主題構建一個表而不僅僅是加載必要的表?
或者,如果您可以提出更好或更常見/有用/更有效的建議,請繼續。
在嘗試此操作之前,您應該閱讀有關規范化和關系設計的內容。
這是一對多的關系 - 就這樣建模。
每個主題的表都很瘋狂。 您必須為每個主題添加一個新表。
更好的解決方案可以簡單地通過添加數據來添加新主題。 這就是關系模型的全部意義所在。
不要擔心桌子; 首先用自然語言思考它。
主題(微積分)可以有許多課程(差異,積分,多變量)。
課程(差異微積分)可以有許多部分(數學建築的第2室上午9-10點)。
學生(名字,姓氏,學生ID)可以注冊零個或多個部分。 給定學生的SECTION列表是TRANSCRIPT。
每個學生每學期有一個TRANSCRIPT(2012年秋季)。
SECTION可以有零個或多個ASSIGNMENT。
這些是您在解決這個簡單問題時需要的表格。 在開始編寫SQL之前,請擔心名稱及其相關性。 你會很高興的。
我絕對不會為每個主題創建一個單獨的表。 如果你這樣做了,那么如果你想要一個像“為學生X列出所有作業”這樣的查詢,你將不得不根據學生注冊的科目來訪問不同的表格。更糟糕的是,只要有人添加了新的主題,你就會有創建一個新表。 如果你決定需要一個新的家庭作業屬性,而不是更新一個表,你將不得不更新這些主題表中的每一個。 這只是個壞消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.