2012-07-20 146 views
1

我建立的網站,每個用戶都有不同的類SQL - 數據庫設計,需要建議

+----+-----------+---------+ 
| id | subject | user_id | 
+----+-----------+---------+ 
| 1 | Math 140 |  2 | 
| 2 | ART 240 |  2 | 
+----+-----------+---------+ 

然後,每個班都會有一大堆的作業文件,類紙文件等。 在這裏,我需要你的幫助。會有什麼更好的方法:建立一個表像:

+----+-----------+--------------------------------------------------+--------------+ 
| 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 | 
+----+-----------+--------------------------------------------------+--------------+ 

而不僅僅是單獨的內容時,我想以顯示它, 或建立一個表,每一個主題,並不僅僅是加載必要的表?

或者,如果您可以建議更好或更常見/有用/高效的東西,請繼續。

+0

對於所有主題使用單表並不要求每次添加新主題時添加新表。 – 2012-07-20 17:09:00

+0

越正規化越好,所以如果你有一個主題表,主題名稱,主題名稱,家庭作業鏈接和其他表格,那麼它會更好。 – dansasu11 2012-07-20 17:09:27

+0

你需要創建一個所有將要使用的數據的詳細列表,直到你有那就是,你不能就事物如何相互連接做出明智的決定。 – codewaggle 2012-07-20 17:12:39

回答

2

在嘗試此操作之前,您應該閱讀關於規範化和關係設計的內容。

這是一個一對多的關係 - 模擬它。

每個主題的表格都很瘋狂。你必須爲每個主題添加一個新表。

一個更好的解決方案可以簡單地通過添加數據來添加新的主題。這就是關係模型的全部內容。

不要擔心表格;先用自然語言思考它。

一個SUBJECT(微積分)可以有許多COURSES(差分,積分,多變量)。

課程(微積分)可以有很多章節(數學館2號房間的星期一上午9-10點)。

學生(名字,姓氏,學號)可以註冊零個或多個SECTION。給定學生的SECTION列表是一個TRANSCRIPT。

每個學生每學期有一個錄音帶(2012年秋季)。

SECTION可以有零個或多個ASSIGNMENT。

這些是您需要解決這個簡單問題的表格。在開始編寫SQL之前,擔心這些名稱以及它們之間的關係。你會很高興你做到了。

+0

我會,謝謝 – Vor 2012-07-20 17:16:51

+0

太棒了!這真的幫助了我,並且節省了很多次!謝謝 – Vor 2012-07-23 02:59:38

0

我絕對不會爲每個主題創建一個單獨的表格。如果你這樣做了,那麼如果你想要一個像「列出學生X的所有家庭作業」這樣的查詢,你將不得不根據學生註冊哪個科目訪問不同的表格。更糟糕的是,任何時候有人添加了一個新科目,你會有創建一個新表。如果你認爲自己需要一個新的家庭作業屬性,而不是更新一個表格,那麼你需要更新這些表格中的每一個。這只是一個壞消息。

+0

非常感謝 – Vor 2012-07-20 17:12:42