Мне было поручено создать систему регистрации физических событий, где сотрудник будет создавать событие на основе физического события, которое произошло исключительно для целей регистрации.Например, скажем, что они отвечают на звонок - они должны затем создать событие «Телефон» и указать, кто звонил, почему и когда.
Каждый event
будет иметь одинаковые поля ввода, доступные для ввода, однако некоторые из них требуют дополнительных полей ввода, которые доступны только для определенных event_types
.
Вот фрагмент схемы:
table: event_types
| column | type |
|--------|---------|
| id | integer |
| name | varchar |
table: events
| column | type |
|---------------|----------|
| id | integer |
| report_id | integer |
| user_id | integer |
| event_type_id | integer |
| date | datetime |
| details | text |
| locations | json |
| people | json |
| data | json |
По сути, event_type_id
может быть одним из 50+ типов событий.Только 15 из них потребуют уникальных полей.Эти типы событий являются статическими, когда приложение установлено (они добавляются в БД), и пользователи не будут создавать их в самом приложении.
locations
, people
и date
В поле будут доступны входные данные по каждому событию.Сначала я думал о том, чтобы иметь поле data
json
для хранения дополнительных данных поля ввода.
Однако я не уверен, что это лучший способ обработки уникальных полей ввода в зависимости от конкретных event_type_id
s.Я также не уверен, как я буду обрабатывать проверку этих уникальных полей на основе event_type_id
.
. Было бы лучше жестко кодировать event_type_id
, а затем назначать правила проверки в зависимости от того, какие event_type_id
событие создано с помощью?Мне также интересно, как справиться с этим при рендеринге представления формы для загрузки в дополнительные поля ввода.
Я также думал о сохранении правил проверки и имени представления внутри таблицы event_types
, ноЯ подумал, что это может быть плохой практикой, так как мне нужно обновлять запись event_type
в базе данных в любое время, когда я хочу добавить другое поле.
Я действительно надеюсь получить совет от любого, кто должен былреализовать обработку уникальных полей в своей базе данных - я действительно не знаю, как правильно обрабатывать это ... Большое спасибо за ваше время!
РЕДАКТИРОВАТЬ: Я пошел с гибридом- очень ограниченная версия полей данных Entity-Value-Model и json.В ближайшие дни я опубликую свою полную реализацию для других, если она кому-нибудь поможет.