powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Модель связанных объектов. Проблемы выборки
25 сообщений из 36, страница 1 из 2
Модель связанных объектов. Проблемы выборки
    #38511739
sender219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня!

Есть несколько таблиц, связанных как 1:M. Таблица "А" - справочник пользователей, все последующие - связанные объекты. Таблица "B" содержит поле для связи с "А", таблица "C" - поле связи с "B", и т.д.

Чтобы узнать принадлежность объекта типа "C" пользователю (из таблицы "A") придётся найти связанный объект "B", затем перейти к "A". Проблема в том, что уровней "вложенности" объектов будет 5 или 6. В итоге, для выяснения принадлежности объекта "N" пользователю придётся джойнить все таблицы "вверх" до "B".
Пример: авторизованный пользователь открывает объект типа "N". Необходимо выяснить наличие прав (принадлежность) открываемого объекта по идентификатору пользователя.

Специфика проекта предусматривает частое чтение данных и редкую запись, поэтому есть такая идея: прокинуть поле ссылки на таблицу "A" по всем "подчинённым" таблицам, затем триггером проставлять значения (поднимаясь по всей схеме) при вставке.

Есть ли у вас другие варианты решения?
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38511767
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sender219Доброго дня!

Есть несколько таблиц, связанных как 1:M. Таблица "А" - справочник пользователей, все последующие - связанные объекты. Таблица "B" содержит поле для связи с "А", таблица "C" - поле связи с "B", и т.д.

Чтобы узнать принадлежность объекта типа "C" пользователю (из таблицы "A") придётся найти связанный объект "B", затем перейти к "A". Проблема в том, что уровней "вложенности" объектов будет 5 или 6. В итоге, для выяснения принадлежности объекта "N" пользователю придётся джойнить все таблицы "вверх" до "B".
Пример: авторизованный пользователь открывает объект типа "N". Необходимо выяснить наличие прав (принадлежность) открываемого объекта по идентификатору пользователя.

Специфика проекта предусматривает частое чтение данных и редкую запись, поэтому есть такая идея: прокинуть поле ссылки на таблицу "A" по всем "подчинённым" таблицам, затем триггером проставлять значения (поднимаясь по всей схеме) при вставке.

Есть ли у вас другие варианты решения?

вы бы понизили уровень абстракции, а то сложно разобраться: A, B, C, N, что куда....
На каком-нибудь житейском примере.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38511771
sender219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Максим Н,

Легко (просто хотел не напрягать предметной областью):

Пользователи - Поставщики - Поставки - Заказы (клиентские)

Так вот, пользователь отправляет запрос на открытие карточки клиентского заказа по номеру. Начинаем генерировать список возможных действий над заказом для пользователя. Открыть для просмотра можно только тот заказ, который относится к поставке от поставщика, которого зарегистрировал пользователь. Вот и получается уже два джойна: заказ - поставка и поставка - поставщик. В таблице поставщиков берем идентификатор пользователя (ссылка на родителя) и сверяем с данными авторизации.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38511807
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sender219Есть ли у вас другие варианты решения?

Если Ваш сервер позволяет materialized/indexed view - используйте их.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38511816
sender219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

Нет, платформа - MySQL
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38511893
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы узнать принадлежность объекта типа "C" пользователю (из таблицы "A") придётся найти связанный объект "B", затем перейти к "A". Проблема в том, что уровней "вложенности" объектов будет 5 или 6. В итоге, для выяснения принадлежности объекта "N" пользователю придётся джойнить все таблицы "вверх" до "B".




это как раз не страшно.



проблема будет если есть тебя условия выборки будут размазаны по несколькими таблицам.

а при join ить их потом очень просто.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512009
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sender219Есть ли у вас другие варианты решения?

Ты как бы чем занимаешься ? БД разрабатываешь ?
Вот и разрабатывай, пока про производительность не думай.
Потом поглядишь, если будет тормозить, и переделаешь.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512144
sender219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Спасибо, Вы правы.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512264
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sender219... есть такая идея: прокинуть поле ссылки на таблицу "A" по всем "подчинённым" таблицам, затем триггером проставлять значения (поднимаясь по всей схеме) при вставке.
Идея бредовая. Одно дело если пользователей до 100. А если их больше?.. А их будет больше, просто об этом еще никто незнает.
Создание правильных индексов значительно облегчает жизнь.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512307
sender219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр...Идея бредовая. Одно дело если пользователей до 100. А если их больше?.. А их будет больше, просто об этом еще никто незнает...
А как на такую схему повлияет количество пользователей? Пользователи добавляются в первую таблицу ("А"), созданные ими объекты записываются в подчинённые таблицы. При этом количество созданных объектов системы (то есть записей в подчинённых таблицах) не велико. А вот чтение из них - очень частая операция.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512318
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sender219,

Может я конечно и несовсем правильно понял (было б немлохо схему посмотреть), но в идее предлагается инсерт (триггером или скриптом - не столь важно) по объектам конкретного пользователя. Т.е. если в системе будет 3 пользователя то максимум одновременного инсерта - 3, если 100 то 100, ... Таким образом чем больше пользователей в системе тем выше шанс увеличения нагрузки при инсертах.
Собственно в примере с заказом вполне разумно держать в таблице заказа поле пользователя, а не вытягивать его через ...
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512370
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sender219,
Нужна отдельная таблица соответствия пользователей и объектов (групп объектов). Как ее поддерживать - вопрос отдельный
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512450
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модНужна отдельная таблица соответствия пользователей и объектов (групп объектов). Как ее поддерживать - вопрос отдельный
Чем это лучше варианта ТС-а?
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512465
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле незная целей и задач, не видя так сказать всей картины - сложно что-то утверждать. Поэтому абсолютно все вышесказанное относится к гаданию на кофейной гуще. Так что или автор попробует "разжевать", или пусть выбирает из "потока" то что ему нужно.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512754
sender219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр...автор попробует "разжевать"...
Вот часть модели.

Особенности такие:
- вставка в orders - достаточно редкая операция (около 10 записей в месяц на пользователя).
- чтение из orders - операция частая. При этом, авторизованный пользователь (со своим user_id) открывает заказ из orders по order_id. Необходимо проверить принадлежность order к user.

Решение:
В таблицу orders добавляем поле user_id. Триггер на вставку в таблицу orders находит по указанному purchase_id через provider_id значение user_id и прописывает его в соответствующее поле.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512789
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это ж сколько у вас тыщ мильенов записей, что нельзя 3-4 таблички заджоинить ?
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512800
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин Чем это лучше варианта ТС-а?
При изменении прав доступа не надо трогать сами объекты.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512806
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sender219Вот часть модели.
Пользователям даются права на провайдеров. Соответственно каждому пользователю д.б. видны только опереации с этим провайдером. Вот и вся нехитрая иерархия.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512882
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модКот Матроскин Чем это лучше варианта ТС-а?
При изменении прав доступа не надо трогать сами объекты.

У ТС-а это вроде бы не права доступа, а отношения владения. Если владелец обьекта вдруг изменился - нет ничего странного, что ссылка в обьекте изменится.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512898
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот МатроскинУ ТС-а это вроде бы не права доступа, а отношения владения. Если владелец обьекта вдруг изменился - нет ничего странного, что ссылка в обьекте изменится.
Если так, то это другая задача ( мне не интересная)
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38512899
sender219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин...У ТС-а это вроде бы не права доступа, а отношения владения...
Именно так.
Кот Матроскин...Если владелец обьекта вдруг изменился - нет ничего странного, что ссылка в обьекте изменится.
Владелец объекта не может быть изменён, поэтому нарушения значения поля "user_id" в таблице orders быть не может.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513048
trayal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь видит только "своих" поставщиков?
С поставщиком может работать только один пользователь?
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513134
sender219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
trayal,

Да, именно так.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513336
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sender219Кот Матроскин...У ТС-а это вроде бы не права доступа, а отношения владения...
Именно так.

Все-таки это именно права доступа, а не просто атрибут объектов
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513399
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод,
это отношение владения, по которому [в том числе] однозначно строятся права доступа.

ТС же сказал, владелец у обьекта не меняется вообще никогда, т.е. аргумент
При изменении прав доступа не надо трогать сами объекты
- не имеет смысла.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Модель связанных объектов. Проблемы выборки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]