Как лучше хранить дополнительные параметры сущности в бд?
В базе данных есть 2 таблицы: Акты и История
Для отображения информации пользователю довольно часто мне приходится писать запросы следующего вида:
SELECT
a.Number
, created.AuthorId
, status.StatusId
, status.Timestamp
, verified.Timestamp AS Verified
, implemented.Timestamp AS Implemented
FROM Acts a
OUTER APPLY(SELECT TOP 1 * FROM ActHistories WHERE ActId = a.Id ORDER BY Id) created
OUTER APPLY(SELECT TOP 1 * FROM ActHistories WHERE ActId = a.Id ORDER BY Id Desc) status
OUTER APPLY(SELECT TOP 1 Timestamp FROM ActHistories WHERE ActId = a.Id AND StatusId = 947 ORDER BY Id Desc) verified
OUTER APPLY(SELECT TOP 1 Timestamp FROM ActHistories WHERE ActId = a.Id AND StatusId = 946 ORDER BY Id Desc) implemented
Подумываю насчет создания дополнительной таблицы в которой буду фиксировать данные для исключения запросов OUTER APPLY
, схема бд изменится следующим образом
соответственно запрос изменится следующим образом
SELECT
a.Id
, aa.OwnerId
, aa.StatusId
, aa.Timestamp
, aa.Timestamp AS Verified
, aa.Timestamp AS Implemented
FROM Acts a
JOIN ActAttributes aa ON a.Id = aa.ActId
Подскажите можно ли так сделать или может лучше поля из ActAttributes
сделать в таблице Acts?
Источник: Stack Overflow на русском