Скажем, у меня есть три правильно нормированные таблицы. Один из людей, один из квалификации и один картографирования людей к квалификации:Эффективный способ обновления таблицы отношений SQL
Люди:
id | Name
----------
1 | Alice
2 | Bob
градусы:
id | Name
---------
1 | PhD
2 | MA
Люди-на-градусов:
person_id | degree_id
---------------------
1 | 2 # Alice has an MA
2 | 1 # Bob has a PhD
Так то я должен обновить это сопоставление через мой веб-интерфейс. (Я сделал ошибку, Боб имеет степень бакалавра, а не доктора философии, и Элис только что получил ее B анг.).
Есть четыре возможных состояния этих многих один-к-отображений отношений:
- был правда, раньше, теперь должно быть ложным
- был ложным, то теперь должно быть правдой
- был истинным раньше, должен оставаться верным
- был ложным до того, должен оставаться ложным
то, что я не хочу делать, это прочитать значения из четырех флажков, а затем четыре раза нажать на базу данных, чтобы сказать: «У Боба была БА? Ну, теперь он делает. - Раньше у Боба был доктор философии? Потому что он не больше»и так далее.
Как другие люди решить эту проблему?
Мне любопытно увидеть, если кто-то приходит в то же самое решение, которое я сделал.
UPDATE 1: onedaywhen предлагает то же самое, что произошло со мной - просто удалить все старые записи, правильно или нет, и вставить новые
UPDATE 2: potatopeelings предлагает добавить некоторый код в форму, которая хранит. первоначальное значение поле, которое можно сравнить с новым значением для submit.
что такое элементы управления на вашем веб-интерфейсе? Все флажки для значений в таблице «Люди и градусы»? Это одно обновление для одного человека? – IsmailS
Вы можете принять различные стратегии в зависимости от вашей конкретной базы данных и версии – josephj1989
Да, Ismail, это флажки. И josephj, я надеюсь на общее замечание по этой проблеме, а не на специфику реализации. Обычно я использую MySQL. – AmbroseChapel