powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Модель связанных объектов. Проблемы выборки
11 сообщений из 36, страница 2 из 2
Модель связанных объектов. Проблемы выборки
    #38513410
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскинэто отношение владения, по которому [в том числе] однозначно строятся права доступа.
Я предложил универсальную схему для прав доступа, в которой может меняться все. В реале так и происходит. А ТС просто не может сформулировать задачу.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513439
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модКот Матроскинэто отношение владения, по которому [в том числе] однозначно строятся права доступа.
Я предложил универсальную схему для прав доступа, в которой может меняться все.
Именно поэтому она не явлется хорошим решением для описанного случая - тут не "может меняться все", гибкость решения не приносит пользы, хотя по прежнему за нее надо платить свою цену (в данном случае - дополнительным обьектом базы, дополнительным обьемом данных, дополнительным join'ом в коде, необходимостью проверок "нет ли двух владельцев у обьекта?" и т.п.)
Логика "Для того чтобы вскипятить чайник, нужно налить в него воды, включить плиту, поставить чайник и дождаться кипения. Если в чайнике есть вода - выливаем ее и используем универсальное решение" - она плохая, негодная ;) Проектировщик сэкономил свои усилия, и вместо того чтобы подумать над конкретной задачей применил "универсальное решение"(tm), цену которого будут платить разработчики, dba и пользователи.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513465
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот МатроскинИменно поэтому она не явлется хорошим решением для описанного случая
Этот случай типовой и решение тоже типовое. Отдельная таблица с индексами по user и объект - самый эффективный способ. Все остальное дороже.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513514
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модКот МатроскинИменно поэтому она не явлется хорошим решением для описанного случая
. Отдельная таблица с индексами по user и объект - самый эффективный способ. Все остальное дороже.

ээ, эффективный в чем?
у меня получилось, (user - ~5К записей, Object ~220k) что запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
select o.objectID
from _user u
     join _Object1_user ou 
     on ou.UserID = u.UserID
     join _object1 o
     on ou.ObjectID = o.ObjectID
where u.UserID = @UserID


примерно в полтора раза уступает
Код: sql
1.
2.
3.
4.
5.
select objectid
from _#user u with (index = iuser)
     join _#object2 o
     on o.UserID1 = U.UserID
where u.UserID =  @UserID



и такая же картинка - при поиске по ObjectID

Единственно когда второй запрос проигрывает - когда нет индексов на таблицах object1, object2 (поскольку происходит table scan, и по object2 за счет лишнего поля надо просто больше страниц читать.)
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513516
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин,

пардон, сорвалось сообщение раньше, не почистил второй запрос с именами таблиц и хинтом- хинт там роли не играет, что с хинтом что без хинта результат одинаковый.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513528
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sender219,

Блин. Или я туплю или ... А описание модели где? Или это озвученное выше "Пользователи - Поставщики - Поставки - Заказы (клиентские)" ?
Если озвученное выше то уберите из providers user_id. Сделайте таблицу providers_user (provider_id, user_id, ...). Можете в нее еще добавить дату начала и дату конца, тогда сможете организовать историю изменения пользователя для данного поставщика. В таблице orders поле purchase_id явно лишнее, можете смело убирать.
И если приводите схему то отображайте все элементы таблиц, это избавит от непоняток (в данном случае я непытаюсь угадать что у вас там еще скрыто).
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513827
sender219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр...Сделайте таблицу providers_user (provider_id, user_id, ...)...
Зачем? Если отношение между ними 1-М, зачем мне переходить на М-М?
По условию поставщик принадлежит только одному пользователю. И у одного пользователя может быть много собственных (личных) поставщиков.

Злой Бобр...В таблице orders поле purchase_id явно лишнее, можете смело убирать...

А это зачем? Если по каждой поставке (purchases) может быть ноль или М заказов (orders).

В целом картина такова: каждый пользователь системы ведёт собственный каталог поставщиков. По каждому своему поставщику пользователь формирует поставки. По каждой поставке может быть сформировано М заказов.

Злой Бобр...И если приводите схему то отображайте все элементы таблиц, это избавит от непоняток (в данном случае я непытаюсь угадать что у вас там еще скрыто).

Скрыты атрибуты, не имеющие отношения к вопросу. Свойства пользователя, поставщика и т.д.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513879
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин
При условии:
По условию поставщик принадлежит только одному пользователю
вы правы.
Но условие сомнительное :)
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513901
sender219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_мод...Но условие сомнительное :)...
Согласен. Вообще система достаточно специфична. Именно поэтому и старался здесь абстрагироваться от предметной области, с таблицами A, B, C ... N.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38513952
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sender219 Вообще система достаточно специфична.
Такие системы крайняя редкость. Не думаю, что ваша к ним принадлежит. Поэтому и нужно применять типовые решения.
зы Как правило, юзер, создавший объект, фиксируется в аудите. Этим можно воспользоваться.
...
Рейтинг: 0 / 0
Модель связанных объектов. Проблемы выборки
    #38514412
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sender219Злой Бобр...Сделайте таблицу providers_user (provider_id, user_id, ...)...
Зачем? Если отношение между ними 1-М, зачем мне переходить на М-М?
По условию поставщик принадлежит только одному пользователю. И у одного пользователя может быть много собственных (личных) поставщиков.
Зачем - я написал выше (что б видеть историю если у поставщика меняется пользователь). Но если вас устраивает что при изменении пользователя вы тупо перепишите поля таблицы (вместо Петров напишете в ФИО Сидоров) - невопрос, это ваша кухня и вам там рулить. Если считаете что пользователь будет жить вечно - это тоже ваше дело.
Я вовсе не претендую на мнение последней инстанции. Все что тут пишется носит лишь рекомендательный характер. Конечный выбор за вами.
sender219Злой Бобр...В таблице orders поле purchase_id явно лишнее, можете смело убирать...
А это зачем? Если по каждой поставке (purchases) может быть ноль или М заказов (orders).
В целом картина такова: каждый пользователь системы ведёт собственный каталог поставщиков. По каждому своему поставщику пользователь формирует поставки. По каждой поставке может быть сформировано М заказов.
Ну тогда я неправильно понял смысл поставки. У вас это оказывается сводный заказ по клиентам, а я "телепартировал" что это аналог Партии. Увы, отсутствие описания дает подобные казусы.
sender219Злой Бобр...И если приводите схему то отображайте все элементы таблиц, это избавит от непоняток (в данном случае я непытаюсь угадать что у вас там еще скрыто).
Скрыты атрибуты, не имеющие отношения к вопросу. Свойства пользователя, поставщика и т.д.
Опять же это лишь рекомендация. Хотите удивляться почему вам рекомендуют то что явно невписывается в вашу задачу - можете и дальше вырывать куски из контекста, а мы будем "телепартировать".
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Модель связанных объектов. Проблемы выборки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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