2012-02-27 3 views
0

Отказ от ответственности: я не проектировал эти таблицы, и я знаю, что они не лучший способ сохранить эти данные. Мне нужен совет по наилучшему способу справиться с ситуацией.Лучшая практика MySQL UPDATE/INSERT

У меня есть две таблицы 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 и комментарий. Поскольку каждый студент может иметь 3 профессора в своей строке, новые строки должны быть добавлены к professors всякий раз, когда они перечислены для нескольких учеников. Это означает, что поле id professors необходимо будет автоматически увеличивать для каждого нового комментария ученика.

Каков наилучший способ выполнить эту передачу данных с помощью запроса MySQL? Я пробовал смотреть UPDATE в сочетании с JOIN, но я не уверен, что есть даже правильный способ сделать это. Кроме того, мне нужно создать другой первичный ключ для professors, так как несколько строк будут иметь одинаковый идентификатор?

Я подозреваю, что просмотр может быть лучшим способом для достижения этого, но приложение на передней панели ожидает, что информация будет сохранена в таблице professors.

Еще одна вещь, которую я рассматривал, состояла в том, что я мог бы создать новую таблицу, объединив две таблицы и получив первичный ключ с двумя столбцами, students.id, Professor.id.

Спасибо!

ответ

0

Кроме того, мне нужно создать еще один первичный ключ для профессоров, так как несколько строк будут иметь один и тот же идентификатор?

Да. Это хорошая идея.

Я написал простой запрос, который объединяет данные из первой таблицы в 2 столбца. Это не полный ответ, но он может помочь вам много:

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

Вы можете использовать это для просмотра, вставки, но им не знакомы с specyfic синтаксиса MySQL и я не хочу, чтобы misslead вас. Пожалуйста, дайте отзыв, если он работает.

«СОЮЗ» удаляет повторяющиеся строки, вам может потребоваться использовать «СОЮЗ ВСЕ», чтобы сохранить дубликаты (например, дублированные значения в столбцах 2 или 3 профессора).

+0

Спасибо Камилю, я рассмотрю СОЮЗ. – Beatrice

Смежные вопросы