2011-05-23 40 views
1

我是一個學習SQL和PHP的學生,我已經設置了一個任務來創建一個使用PHP和mySQLi的學生反饋表單,而且我真的很想知道如何設計項目數據庫!規劃一個SQL數據庫所需的幫助

我創建了一個系統,用戶可以登錄到網頁,如果用戶是學生,他們可以看到一個頁面留下每個課程對每個模塊(課程)的反饋。如果他們是導師,當他們登錄時,他們可以查看反饋信息,添加模塊並添加學生帳戶。

我不明白哪個是創建數據庫表的最佳方式,特別是因爲我明白你不能在表中放置一個表,我將有一個表模塊,並在每個模塊內成爲每個課程的表格,每個課程是一個表格,其中包含每個反饋項目以及一些其他變量,如附加信息。

如何構建我的數據庫而不創建數百個表並嘗試將它們鏈接在一起,因爲我是SQL新手,這似乎是一個非常漫長的不整齊的方式。

我一直在試圖讓我的頭數據庫數天,現在我只是不知道該怎麼做!

+0

查看鏈接表。這是您正在尋找的有關「嵌套表」的功能 – Earlz 2011-05-23 22:02:34

+0

我強烈建議使用完全關係數據庫設計,但這意味着您將爲您可能需要的某些信息進行一些連接。所以它取決於你,如果你想這樣做或不... – judda 2011-05-23 22:04:50

+3

你甚至還沒有嘗試過任何東西,或者你只是想找人做你的功課?你知道如何使用外鍵嗎?你教過正常化嗎?如果你希望成爲一名專業程序員,你需要能夠針對這個問題提出一些具體的解決方案,而無需交出答案。 – webbiedave 2011-05-23 22:08:06

回答

0

你不應該需要數百個表!你會的,但是,需要使用主鍵將它們連接。這是SQL的本質,也是新手或者不是,這正是你需要學習的內容。

本質上,你把一張表放在一張表中,但你把它們連接在一起b Ÿ匹配的密鑰:

student_id student_name 
1   Bob 
2   Jane 

comment_id student_id comment_body 
123   2   Jane says hi! 
124   1   Bob says hi also! 
125   1   Bob says hi again! 

當查詢這些表,你在一起,你的SELECT語句連接它們:

SELECT student_id, student_name, comment_id, comment_body 
FROM student, comment 
WHERE student.student_id = comment.student_id 


student_id student_name comment_id comment_body 
2   Jane   123   Jane says hi! 
1   Bob   124   Bob says hi also! 
1   Bob   125   Bob says hi again! 

中的行,你回來是兩個表的組合,連接(或加盟)無論主鍵(在這種情況下,student_id)在兩個表中的哪個位置都是相等的。

+0

這真的很有幫助!即時開始看到光現在哈哈。 那麼您是否已經將student_name設置爲主鍵?你是否還將comment_body設置爲主鍵? 如果你能夠匹配每個表中的student_id列,你需要做到這一點? 感謝您的幫助!真的很感激:) – TomFrom 2011-05-24 00:50:49

+0

我想我誤會了! 那麼這裏的紅色值是主鍵?並通過使用相同的主鍵,選擇可以從兩個表中的每個加工行獲取數據。 與藍色文字有任何關聯嗎? – TomFrom 2011-05-24 00:57:41

+0

忽略紅色和藍色。 :)「student_id」是學生表的主鍵。註釋表的「student_id」被認爲是一個外鍵,「comment_id」是該表的主鍵(雖然它不用於在這裏加入)。每個連接總是涉及將表的外鍵連接到另一個表的匹配主鍵(這些名稱不需要匹配,但有助於理解)。 – 2011-05-25 18:14:11

4

數據庫表可以有彼此關係,模仿你描述的嵌套表。按照數據庫的說法,有1對1關係,1對多關係和多對多關係。如果您希望爲單個模塊創建多個類,則可以在Class表中包含一個字段,該字段包含它所屬的Module記錄的外鍵。 (多個類到1個模塊)。

如果您想將許多學生鏈接到一個班級,併爲單個學生安排很多班級,則通常使用一個單獨的表格,該表格僅將外鍵保存到兩個表格中。那就是你有一個Student_2_Class表,它有一個Class_FKey的字段和一個Student_FKey的字段,有時這些多對多的鏈接表在需要時會有附加字段。至少要添加一個約束條件,即兩個外鍵的組合是唯一的。這樣你就不能把同一個學生放在同一個班上不止一次。

我不認爲我可以教你如何在線程響應中設計數據庫,但你應該能夠搜索像主鍵,外鍵,多對一,一對多,多對多等術語找東西。此外,您的學校圖書館可能有關於「數據建模」的書籍可能會對您有所幫助(我喜歡Simsion和Witts 數據建模基礎。Visio有一個體面的實體關係圖工具(數據庫模型通常稱爲實體關係圖),因此您也可以能夠找到在線教程展示瞭如何使用它,你可能會選擇一些造型TIPS只是看着。

+0

感謝您的建議,我沒有完全按照它,但我會研究像你所建議的條款! – TomFrom 2011-05-23 22:31:47

+0

好運。數據庫編程本身就是一門學科。[本教程頁](http://www.learn -sql-tutorial.com/DatabaseBasics.cfm)對術語進行了很好的概述,在第一頁之後,它進入了你可能不需要的SQL細節,你需要一個好的初學者關於數據建模的教程,但是我沒有一個在我的指尖,幸運的是你會在那裏找到一個。 – Tod 2011-05-24 00:17:51

+0

現在我得到了!感謝這裏的幫助:)我可以做我現在需要的東西,它只是弄清楚如何處理錯誤或者當某些事情不對。令人敬畏的東西雖然工作,但! – TomFrom 2011-05-25 04:23:36