Как разделить запросы данных с БД, чтобы предотвратить запросы всего БД - PullRequest
0 голосов
/ 23 января 2020

спасибо заранее.

У меня есть Db, подобный этому: Модель базы данных

Она была смоделирована с использованием ORM и затем отображена с помощью небольшого настольного приложения. .

Цель этого приложения - отправить ящики в разные места в зависимости от того, что в них содержится . (Место может содержать один ящик за раз или быть пустым)

Поскольку основной вид приложения позволяет выполнять эти движения, ему потребуется следующая информация:

  • Текущий context
  • Состояние мест [с выдвижным ящиком / пусто]
  • Состояние ящиков [если на месте] [его содержимое (так что листы) и относительная информация]

Чтобы помочь пользователю идентифицировать ящики, они будут сгруппированы по вышкам. Каждый ящик будет иметь описание своего содержимого: лист и материал.

Как видите, все таблицы требуются одновременно.

Вопрос is: Как запрашивать только определенные данные вместо всей базы данных? Вероятно, лучший подход - редактировать представление, чтобы иметь возможность показывать только некоторые из этих данных одновременно, но я изо всех сил пытался придумать с таким дизайном, при этом оно не является более утомительным для конечного пользователя.

My. Net приложение использует EF6, и теперь оно в основном использует один запрос с вложенными инструкциями include. Боюсь, что в реальном сценарии этот подход очень быстро замедлит мое приложение.

Спасибо.

Ps. Очевидно, что перенаправление меня на разработку шаблонов или другого материала, который может мне помочь, очень ценится.

1 Ответ

1 голос
/ 23 января 2020

Речь пока не идет о запросах. Сначала вам нужно правильно его сохранить.

  1. В вашей схеме есть куча циклических зависимостей: drawer -> place; place -> drawer, tower -> drawer; tower -> context -> place-> drawer -> tower. Вы должны избавиться от них. После того, как вы создадите схему DAG , вы сможете легко справиться с фильтрацией и избежать проблем с согласованностью.

  2. Начните с простой звездообразной схемы и итерируем по нему.

  3. Если у вас возникли проблемы с производительностью, рассмотрите [денормализацию] (https://en.wikipedia.org/wiki/Denormalization).

  4. Прочитайте книгу о дизайне / моделировании базы данных или пройдите онлайн-курс.

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