Скажем, у меня есть три правильно нормализованных таблицы. Один из людей, один из квалификаций и один сопоставление людей с квалификациями:
Люди:
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
Итак, мне нужно обновить это сопоставление через мой веб-интерфейс. (Я допустил ошибку. У Боба степень бакалавра, а не доктор философии, а Элис только что получила степень бакалавра технических наук.)
Существует четыре возможных состояния этих отображений отношений «один ко многим»:
- было верно раньше, теперь должно быть ложным
- было ложным раньше, теперь должно быть правдой
- было правдой раньше, должно оставаться правдой
- было ложным раньше, должно оставаться ложным
что я не хочу делать, так это читать значения из четырех флажков, а затем четыре раза обращаться к базе данных, чтобы сказать: «Был ли у Боба BA раньше? Ну, теперь он есть». «Был ли у Боба докторская степень раньше? Потому что у него ее больше нет» и так далее.
Как другие люди решают эту проблему?
Мне любопытно посмотреть, придет ли кто-то еще к тому же решению, что и я.
ОБНОВЛЕНИЕ 1: onedaywhen предлагает то же самое, что пришло мне в голову — просто удалите все старые записи, правильные или нет, и ВСТАВЬТЕ новые.
ОБНОВЛЕНИЕ 2. Картофельные пилинги предлагают добавить в форму некоторый код, в котором хранится исходное значение поля, которое можно сравнить с новым значением при отправке.