Как реализовать построчное управление версиями, используя mysql + java?
Допустим, для примера у нас есть таблица с именем student (sID является первичным ключом, isValid=1 означает, что строка действительна, а 0 на данный момент недействительна)
sId sName gpa isValid
1 Tom 3.0 1
2 Hanks 3.5 1
теперь давайте предположим, что я обновил значения Тома. но все же я хочу сохранить предыдущие значения.
sId sName gpa isValid
1 Tom 3.0 0
2 Hanks 3.5 1
1 Tom 3.6 1
Теперь в значениях Томса произошли изменения. его предыдущие значения не удалены навсегда.
Как я могу реализовать это есть плагин или что-то? Проблема в том, что первичный ключ встречается более одного раза.
2 ответа
Вам нужно изменить дизайн базы данных.
Держать в sId,sName
и любое другое поле (если требуется) в student
таблица, которая будет родительской таблицей. Создайте другую таблицу как student_academic
с sId
в качестве внешнего ключа студенческого стола вместе с gpa, isvalid
поля.
Для каждого студента значения изменений вставьте новую запись перевода. Это также обеспечивает базу данных Normalization
и выполнит вашу потребность.
Я не чувствую необходимости в каком-либо плагине здесь, я бы сделал что-то вроде этого:
- Сделайте свой sID автоинкремент
- Для каждой вставки получите последнюю версию (sId - 1) и отметьте ее как isValid = 0
Я полагаю, вы используете JDBC