最佳实践MySQL更新/插入

最佳实践MySQL更新/插入,mysql,sql,sql-update,sql-view,join,Mysql,Sql,Sql Update,Sql View,Join,免责声明:我没有设计这些表,我知道它们不是存储这些数据的最佳方式。我需要关于处理这种情况的最佳方法的建议 我有两个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

免责声明:我没有设计这些表,我知道它们不是存储这些数据的最佳方式。我需要关于处理这种情况的最佳方法的建议

我有两个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
教授的用户名可能位于
学生
表中最后三列中的任意一列。教授需要为
学生
表中的每一行学生提供一条评论

作为该数据库前端的应用程序在
professors
表中还需要两列:student\u id和comment。由于每个学生的行中可能有任意3位教授,因此每当为多个学生列出时,都需要将新行添加到
教授
。这意味着,
professors
id字段需要为每个新学生的评论自动递增

使用MySQL查询完成数据传输的最佳方式是什么?我尝试过将UPDATE与JOIN结合起来,但我不确定是否有一种有效的方法可以做到这一点。另外,由于多行将具有相同的id,我是否需要为
professors
创建另一个主键

我怀疑视图可能是实现这一点的最佳方式,但前端的应用程序希望信息存储在
表中

我考虑的另一件事是,我可以通过连接两个表来创建一个新表,并具有两列主键students.id和professor.id

谢谢

另外,我需要为教授创建另一个主键吗 多行将具有相同的id

对。这是个好主意

我编写了一个简单的查询,将第一个表中的数据合并到两列中。这不是一个完整的答案,但它可以帮助你很多:

SELECT id, prof1id as profid
UNION
SELECT id, prof2id
UNION
SELECT id, prof3id
UNION;
你可以用它来查看,插入,但我不熟悉specyficmysql语法,我不想误导你。如果有效,请给出反馈


“UNION”删除重复的行,您可能需要使用“UNION ALL”来保留重复的行(如2或3列中的重复值)。

谢谢Kamil,我将研究UNION。