Принципы моделирования активов
В системах управления типами активов ключевыми механизмами организации данных являются иерархия и наследование. Эти концепции позволяют моделировать сложные структуры и связи, однако их некорректное применение приводит к ошибкам в проектировании. Цель статьи — разграничить понятия иерархии и наследования, объяснить их особенности и предложить рекомендации для эффективного использования.
Основные концепции
Наследование: от общего к частному
Наследование — механизм, при котором дочерние типы активов наследуют атрибуты и свойства родительских типов. Это позволяет создавать специализированные сущности на основе общих шаблонов.
Особенности:
Передача атрибутов:
Базовые атрибуты (например, ID, Название) наследуются автоматически.
Дополнительные атрибуты (например, Версия, Описание) могут быть выбраны пользователем.
Использование:
Моделирование отношений общее → частное.
Пример: Родительский тип: "Таблица" → Дочерний тип: "Логическая таблица" → Дочерний тип: "Физическая таблица"
Иерархия: часть и целое
Иерархия — структура, которая организует типы активов через отношение "часть-целое". Реализуется с помощью свойства "Вложенная связь".
Особенности:
Структурные связи:
Актив-родитель содержит дочерние активы как составные части.
Пример: Тип "Таблица" → Тип "Колонка" (вложенная связь).
Примечание
Иерархия типов активов может быть сложная и фактически является графом, а не деревом, т.к. одна вершина может иметь несколько родителей и несколько потомков, а также сам граф может иметь циклы (связь сама на себя и более сложные). Для преобразования и ацикличного отображения иерархии циклы разрываются, т.е. из цикла убирается одна связь.
Сравнение наследования и иерархии
Критерий |
Наследование |
Иерархия |
Цель |
Специализация типов |
Организация структуры данных |
Отношения |
«Родитель → потомок» |
«Целое → часть» |
Атрибуты |
Наследуются |
Не наследуются |
Пример |
Логическая таблица → Физическая таблица |
Таблица → Колонка |
Рекомендации по проектированию
Когда использовать наследование?
Если нужно создать специализированный тип на основе общего шаблона.
Пример: Базовый тип: Документ.
Дочерние типы: Договор, Акт, Счет.
Когда использовать иерархию?
Если нужно отразить физическую или логическую структуру данных.
Пример: База данных → Схема → Таблица → Колонка.