免责声明:我没有设计这些表,我知道它们不是存储这些数据的最佳方式。我需要关于处理这种情况的最佳方法的建议。
我有两个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查询完成此数据传输的最佳方法是什么?我试着将UPDATE与JOIN结合起来看,但我不确定是否有有效的方法可以做到这一点。此外,由于多行将具有相同的id,我是否需要为professors
创建另一个主键?
我怀疑VIEW可能是实现这一点的最佳方式,但前端的应用程序希望将信息存储在professors
表中。
我正在考虑的另一件事是,我可以通过连接两个表来创建一个新表,并有一个两列主键students.id,professor.id。
谢谢!
此外,我是否需要为教授创建另一个主键,因为多行将具有相同的id?
是的。这是个好主意。
我编写了一个简单的查询,将第一个表中的数据合并为两列。这不是完整的答案,但它可以帮助你很多:
SELECT id, prof1id as profid
UNION
SELECT id, prof2id
UNION
SELECT id, prof3id
UNION;
你可以用它来查看、插入,但我不熟悉MySQL的特殊语法,我不想误导你。如果有效,请提供反馈。
"UNION"删除重复的行,您可能需要使用"UNION ALL"来保持重复(如2或3个教授列中的重复值)。