Не думаю, что на этот вопрос был дан ответ.
Если изменить значение поля «Имя» в таблице недвижимости ... Вы бы изменить дизайн таблицы Test, добавив столбец имен свойств и удаление таблицы отображения TestProperty?
Определенно нет. Это добавило бы массового дублирования для цели.
Если ваше требование заключается в поддержании целостности значений данных (в свойстве) во время тестирования, правильным (базовым) методом является внедрение таблицы истории. Это должна быть точная копия исходной таблицы плюс один элемент: в PK добавляется столбец TIMESTAMP или DATETIME.
PropertyHistory
PropertyId AUTONUMBER,
Name CHAR
CONSTRAINT PRIMARY KEY CLUSTERED UC_PK (PropertyId)
PropertyHistory
PropertyId INT,
AuditedDtm DATETIME,
Name CHAR
CONSTRAINT PRIMARY KEY CLUSTERED UC_PK (PropertyId, AuditedDtm)
For this to be meaningful and useable, the Test table needs a timestamp as well, to identify which version of ProperyHistory to reference:
TestProperty
TestId
PropertyId
TestDtm DATETIME
The property names column would have to be something like a delimited list of strings.
That would break basic design rules as well as Database Normalisation rules, and prevent you from performing ordinary Relational operations on it. Never store more than one data value in a single column.
... or drop a row in the Property table
Deletion is something different again. If it is a "database" then it has Integrity. Therfore you cannot delete a parent row if it has child rows in some other table (and you can delete it if it does not have children). This is usually implemented as a "soft delete", an Indicator such as IsObsolete
. Это относится к различным SELECTS, чтобы исключить использование строки (для добавления новых детей), но остается доступной в качестве родителя для существующих детей.
Я не думал о том, чтобы сделать строки неактивными. Это отличная идея. –
Кроме того, если вы создаете копии свойств, когда пользователи обновляют имена свойств, вам придется скопировать все значения свойства. Вам также придется решить, что, поскольку это отношение multi-to-multi, если вы хотите, чтобы все остальные тесты использовали новое имя свойства. Если это так, вам придется обновить все остальные записи в TestProperty, дублируя все записи со старым идентификатором свойства и устанавливая дубликаты для использования нового идентификатора свойства. –