Имеет смысл отделить общее понятие актива от специфики каждого типа актива, который вы хотите включить. Как правило, это принимает форму основной таблицы активов с различными таблицами для каждого отдельного типа актива, который вы хотите включить, например, «Книга», «Оборудование», «Мебель». Структура может выглядеть так:
Asset(AssetId, Description, Comments)
HardwareAsset(HardwareAssetId, AssetId, SerialNumber, ...)
BookAsset(BookAssetId, AssetId, ISBN, Publisher, Author, ...)
Где AssetId
в HardwareAsset
и BookAsset
- это внешний ключ к таблице Asset
. Таким образом, вы можете отслеживать различные активы и группировать их вместе, когда это должно иметь значение.
РЕДАКТИРОВАТЬ: Кроме того, вы можете создать таблицу ключ-значение для хранения значений для отдельных объектов, которые могут выглядеть следующим образом:
AssetValue(AssetValueId, AssetId, Key, Value)
Однако это громоздкое решение, которое, хотя и предоставляет поля для поиска, быстро раздувает вашу базу данных. Чтобы смягчить проблему, вы можете ограничить размер поля в зависимости от ваших требований. Я не предлагаю сериализовать словарь внутри одного поля, так как это приведет к еще большему увеличению вашей базы данных.