2012-02-27 55 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