Уникальные поля ввода на основе идентификаторов определенных типов событий - PullRequest
0 голосов
/ 18 февраля 2019

Мне было поручено создать систему регистрации физических событий, где сотрудник будет создавать событие на основе физического события, которое произошло исключительно для целей регистрации.Например, скажем, что они отвечают на звонок - они должны затем создать событие «Телефон» и указать, кто звонил, почему и когда.

Каждый 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.В ближайшие дни я опубликую свою полную реализацию для других, если она кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...