В моей системе версия производственного плана (Imalat Plan Revizyonu) может использовать несколько ресурсов, таких как:
- Машины (например, пресс-машина)
- Персонал (например, оператор)
- Измерительные устройства (например, штангенциркуль)
- Машина
- Измерительное устройство
- Пользователь (для персонала)
В настоящее время я рассматриваю два возможных подхода:
Option 1 – Каждый объект имеет свой собственный тип ресурса.
Каждый объект (Машина, Измерительное устройство и т. д.) имеет поле sourceType (например, «Машина», «Устройство», «Человек»).
При создании редакции плана производства я просто выбираю из этих объектов и сохраняю их идентификаторы в объединяющей таблице, например Production_revision_source.
Код: Выделить всё
@Table(name = "production_revision_source")
class ProductionRevisionSource {
@ManyToOne
private ProductionRevision revision;
private UUID referenceId; // e.g., Machine.id or Device.id
@ManyToOne
private SourceType sourceType; // e.g., "Machine", "Person", "Device"
private String description; // specific to this revision
}
- Просто, легко понять.
- Нет необходимости в центральной исходной таблице.
- Меньше логики синхронизации.
- Сложнее. чтобы перечислить все ресурсы в одном месте
- Для добавления новых типов ресурсов требуются новые объекты
Каждый реальный объект (машина, пользователь, измерительное устройство) автоматически создает соответствующую запись источника:
Код: Выделить всё
@ManyToOne
private SourceType sourceType; // e.g., Machine, Person, Device
private String description;
private UUID referenceId; // points to the real entity (Machine.id, etc.)
}
```Then the revision only references Source:```
class ProductionRevisionSource {
@ManyToOne
private ProductionRevision revision;
@ManyToOne
private Source source;
private String description; // optional per revision
}
- Централизовано, масштабируется для новых типов
- Упрощенная отчетность («показать все источники, используемые в системе»)
- Необходимо синхронизировать описание источника, если исходный объект изменения
- Немного более сложная логика CRUD
- Какой подход лучше на практике для производства/систем в стиле ERP с использованием JPA?
- Должен ли я моделировать все «ресурсы» (машины, персонал, устройства) через центральную исходную таблицу,
или позволить каждому объекту действовать как отдельный тип ресурса и просто ссылаться по типу + referenceId?
Подробнее здесь: https://stackoverflow.com/questions/798 ... -types-mac
Мобильная версия