Дизайн базы данных для ревизий?
- Делать не помещать все это в одну таблицу с атрибутом дискриминатора IsCurrent. Это просто вызывает проблемы в будущем, требует суррогатных ключей и всевозможных других проблем.
- Дизайн 2 имеет проблемы с изменениями схемы. Если вы измените таблицу «Сотрудники», вы должны изменить таблицу «Истории сотрудников» и все связанные с ней sprocs. Потенциально удваивает ваши усилия по изменению схемы.
- Дизайн 1 работает хорошо и, если все сделано правильно, не требует больших затрат с точки зрения производительности. Вы можете использовать схему xml и даже индексы, чтобы преодолеть возможные проблемы с производительностью. Ваш комментарий об анализе xml действителен, но вы можете легко создать представление с помощью xquery, которое вы можете включить в запросы и присоединиться к ним. Как-то так...
CREATE VIEW EmployeeHistory
AS
, FirstName, , DepartmentId
SELECT EmployeeId, RevisionXML.value('(/employee/FirstName)[1]', 'varchar(50)') AS FirstName,
RevisionXML.value('(/employee/LastName)[1]', 'varchar(100)') AS LastName,
RevisionXML.value('(/employee/DepartmentId)[1]', 'integer') AS DepartmentId,
FROM EmployeeHistories
databases
sql
database
database-design
versioning
2021-12-03T20:12:42+00:00
2022-11-08T22:56:18+00:00
Runjkeee
Вопросы с похожей тематикой, как у вопроса:
Дизайн базы данных для ревизий?
Предупреждение о файлах Cookies
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.