2012-02-27 86 views
0

免責聲明:我沒有設計這些表,並且知道它們不是存儲此數據的最佳方式。我需要就處理這種情況的最佳方式提供建議。最佳實踐MySQL更新/插入

我有兩個MySQL表:

`students` 
id  int; primary, unique 
prof1_id varchar 
prof2_id varchar 
prof3_id varchar 

`professors` 
id   int; primary, unique, auto-increment 
username varchar 
fname  varchar 
fname  varchar 
students_id int 
comment text 

教授的用戶名可以是任何在students表的最後三列。教授將需要爲每個在students表中排在同一行的學生提供一條評論。

作爲該數據庫前端的應用程序需要professors表中的兩列:student_id和comment。由於每個學生可能有3名教授在他們的行中,因此每當列出多名學生時,需要將新行添加到professors。這意味着professors ID字段將需要爲每個新的學生評論自動增加。

使用MySQL查詢完成數據傳輸的最佳方法是什麼?我已經嘗試着與JOIN結合查看UPDATE,但我不確定有甚至有一種有效的方法來執行此操作。另外,我是否需要爲professors創建另一個主鍵,因爲多行將具有相同的ID?

我懷疑VIEW可能是實現這一目標的最佳方式,但前端應用程序期望將信息存儲在professors表中。

我正在考慮的另一件事是我可以通過加入兩個表並創建一個兩列主鍵students.id,professor.id來創建一個新表。

謝謝!

回答

0

此外,我是否需要爲教授創建另一個主鍵,因爲 多行將具有相同的ID?

是的。這是個好主意。

我寫了一個簡單的查詢,將第一個表中的數據合併到2列中。這不是完整的答案,但它可以幫助你很多:

SELECT id, prof1id as profid 
UNION 
SELECT id, prof2id 
UNION 
SELECT id, prof3id 
UNION; 

您可以使用此爲視圖,插入,但林不熟悉的MySQL specyfic語法和我不想要你misslead。如果有效,請提供反饋。

「UNION」刪除重複的行,您可能需要使用「UNION ALL」來保留重複項(如2或3個教授列中的重複值)。

+0

感謝卡米爾,我會看看UNION。 – Beatrice 2012-02-27 18:09:34