Лучшая практика MySQL ОБНОВЛЕНИЕ / ВСТАВКА - PullRequest
0 голосов
/ 27 февраля 2012

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

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

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

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

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

Спасибо!

1 Ответ

0 голосов
/ 27 февраля 2012

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

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

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

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

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

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

...