Попытка избежать полиморфной ассоциации в схеме для динамических полей - PullRequest
0 голосов
/ 18 марта 2019

Я хочу создать систему динамических полей. Идея заключается в том, что владелец сможет создавать динамические поля, скажем, для клиентов его компании. Проблема в том, что со структурой базы данных, которую я придумал, требуется использование полиморфной ассоциации. Моя структура следующая:

  1. Таблица полей, состоящая из следующих столбцов:

    ID, FieldName, FieldType (Тип поля можно избежать, вероятно)

  2. Таблицы значений полей (Существует несколько таблиц значений, по одной для каждого типа данных динамических полей, например. Таблица для хранения значений DATETIMES, таблица, в которой хранятся значения DECIMALS и т. Д. Эти таблицы имеют идентичную структуру, но с другим типом данных для столбца значений! Они состоят из следующих столбцов:

    ID, FieldID, CustomerID, FieldValue

Теперь, чтобы получить значение поля, я должен выполнить LEFT JOINs между таблицами значений и таблицами полей и сохранить только столбец значения, значение которого не равно NULL , поскольку этот единственный столбец значения, если он есть, будет иметь значение! Конечно, это неэффективно, и я пытаюсь избежать этого. Любые предложения, даже если они требуют совершенно другой структуры базы данных, приветствуются. Я также использую MySQL вместе с EntityFrameworkCore.

...