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

Сначала я задам вопрос:

Можно ли сделать тип значения «динамическим», создав разные таблицы с разными типами значений и используя простой запрос на соединение, чтобы получить правильныйтаблица на основе типа, указанного в столбце?

Вот контекст:

Я строю своего рода конструктор страниц, где я хочу, чтобы «модули» были динамическими вощущение, что я могу создавать новые модули без какой-либо модификации базы данных.

Я представляю 4 объекта:

  1. Поле, которое представляет собой одно значениеопределенный тип, например текстовое поле или флажок;

  2. Тип записи, представляющий группу полей, которые будут использоваться для записи.Например, Статья = Заголовок + Содержимое + Изображение.

  3. Запись, которая является содержимым, определяемым соответствующим типом записи.

  4. Aзначение, которое содержит данные для одного поля для одной записи, определенной типом значения поля.

Для объекта «значение» я планировал использовать несколько таблиц для каждого «типа»стоимости ".«value_text», «value_integer», «value_boolean» и т.д.правильная таблица «значений».

Вот изображение структуры, которую я представлял: (imgur) UML Диаграмма БД

Так что я ищу способсделать один запрос для получения правильного значения для каждого поля определенной записи (по идентификатору).

Это означает, что мне нужно получить доступ к назначенному типу entry_type, получить все поля, связанные с этим entry_type, а затем получить значениекаждого из этих полей из таблиц значений на основе столбца 'value_type' таблицы полей.

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

  1. Сделайте первый запрос для извлечения полей, а затем запрос для каждого поля, чтобы получить правильное значение?Это делает множество запросов для получения значений одной записи ...

  2. Изменить структуру базы данных для более эффективного набора отношений, принимая во внимание, что все динамично...

  3. Избавьтесь от идеи использования нескольких «типов значений» и придерживайтесь более распространенного подхода «все для сериализации».

Кроме того, так как это один из моих первых вопросов о StackOverflow, пожалуйста, дайте мне знать, если я правильно спросил, и как мне сформулировать это в будущем.

Спасибо всем, кто даже взялвремя прочитать это:)

...