2016-08-18 2 views
1

В настоящее время я создаю систему управления документами, где пользователь должен иметь возможность настраивать поддерживаемые типы документов и, следовательно, атрибуты документов. Мой текущий концептуальный ERD для шаблона выглядит следующим образом: ERD for dynamic attributesДинамические атрибуты для модели

но если я хотел бы хранить свои документы, таким образом, я это создало бы для каждого документа с 2 атрибутами 3 записей в моей базе данных (1 для документа, и для каждого атрибута другая запись). На мой взгляд, я бы сделал это следующим образом: ERD to store document data

На мой взгляд, это выглядит не очень круто. Есть ли другой способ решить эту проблему?

ответ

2

Являются ли атрибуты фиксированными?

В этом случае верхний (m:n) выглядит лучше, но я думаю, что вам не нужен attribute name, а фактический value в таблице сопоставлений. Таблицу сопоставления можно улучшить с помощью некоторых столбцов, чтобы идентифицировать дополнительные данные, например, кто, когда, почему и, возможно, при необходимости - разрешить софт-удаление.

Второй - 1:n и будет определять одни и те же имена атрибутов снова и снова.

Подумайте в meta и instance: Это метаданные, как называется ваш атрибут. Вы можете определить сложный метамодель, атрибуты которого соответствуют контексту. Вы можете внедрить многоязычную поддержку. Только значение (и дополнительные данные, описывающие само отображение) - это данные экземпляра.

+0

да, извините, имя атрибута по умолчанию от видения, и я забыл его удалить;) моей идеей было иметь верхнюю ERD как конфигурацию, как программное обеспечение определяет шаблоны для серверных типов документов. Таким образом, будет только один DocumentType «Bill» и один «Letter» с его атрибутами. нижняя ERD будет представлять метаданные для сохранения из документов в базу данных. – BinaryFr3ak

+0

@ BinaryFr3ak, неважно ... Разрешено ли добавлять новые атрибуты во время выполнения? Это была бы единственная сложная задача, поскольку вам нужно вставить новый атрибут ** перед **, вы можете сохранить строку отображения. В этом случае вы можете подумать о 'INSTEAD OF TRIGGER' ... – Shnugo

+0

Нет, я не хочу эту функцию, потому что без нее легче. Это всего лишь небольшой проект для меня :-) – BinaryFr3ak

Смежные вопросы