powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сети. Вопрос по нормализации.
56 сообщений из 56, показаны все 3 страниц
Сети. Вопрос по нормализации.
    #35565409
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постановка задачи.
Имеется БД, описывающая стевую структуру, а конкретнее распределительную электрическую сеть. Т.е. имеется граф.
Основа базы - таблица описателей объектов коммутационная аппаратура, трансформаторы и т.п.

Код: plaintext
1.
2.
3.
4.
5.
create table objects(
  object_id int not null primary key,
  -- у объектов предусмотрена иерархия, ссылка на родительский объект
  parent_id int null foreign key references objects(object_id),
  ........
)
Связь объектов в таблице links
Код: plaintext
1.
2.
3.
4.
5.
create table objects(
  link_id int,
  idStart int null foreign key references objects(object_id),
  idFinish int null foreign key references objects(object_id),
  ........
)
Порядок связывания объектов вобщем-то совпадает с тем, что привычен операторам и совсем не совпадает с направлением движения тока по сети.
Вопрос: как лучше описать распространение электричества по графу? Не хотелось бы добавлять еще одну таблицу, аналог таблицы links. Будет ли это нарушением НФ (какой-нибудь:))?
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565437
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Вопрос: как лучше описать распространение электричества по графу?
А для чего Вы хотите его описывать?
Если у Вас корректно описаны все связываемые объекты с точки зрения
"источник-потребитель", по крайне мере "генерирующие" (источники тока,
трансформаторы), то находясь в любой точке графа можно найти ближайший
"источник", а от него направление легко определяется...
IMHO, нет смысла в базе это хранить отдельно, ибо это вопроизводимые данные.
Ну, или нужно сразу нормализовывать связи на этапе ввода.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565485
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill RazuvaevЕсли у Вас корректно описаны все связываемые объекты с точки зрения
"источник-потребитель", по крайне мере "генерирующие" (источники тока,
трансформаторы), то находясь в любой точке графа можно найти ближайший
"источник", а от него направление легко определяется...
Согласен на все 100%. Или на 99% :). Дело в том, что обход графа с использованием CTE может приводить к зацикливанию, поскольку в силу случайности направления дуг приходиться использовать соединения типа
Код: plaintext
  join objects on links.idStart = objects.object_id OR links.idFinish = objects.object_id
Идея такова, что при совпадении направленности дуг с направлением движением тока можно будет избежать "зацикливания". Точнее, если это и произошло при обходе, то это само по себе уже будет означать ошибочность стуктуры.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565561
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO, это клиентская задача... на нем ее и решить проще! Попутно стукнув
оператора по репе... :-)

P.S. А вообще, направление движения тока - вещь спорная... :-))))


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565582
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill RazuvaevIMHO, это клиентская задача... на нем ее и решить проще! Попутно стукнув
оператора по репе... :-) Есть требование, по которому бизнес-праивла должны быть реализованы в БД. Правда, с оговоркой "основная часть" :)
Kirill RazuvaevПопутно стукнув оператора по репе... :-) Пока получается наоборот. Вряд ли что то изменится в обозримом будущем
А если серьезно, то не совсем правильно выразился, что "операторам привычнее". Просто порядок присоединения не совпадает с порядком, в котором запитываются линии. Согласитесь, это не дело, когда в, допустим, в программе паспортизации скачет порядок ячеек ТП и только потому, что переключили рубильник.
Kirill RazuvaevНу, или нужно сразу нормализовывать связи на этапе ввода. Тогда сталкиваемся с другой проблемой, которая описана в предыдщем высказывании
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565607
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Есть требование, по которому бизнес-праивла должны быть реализованы в БД.
>> Правда, с оговоркой "основная часть" :)
Так вот же оно, ключевое слово! :-))

>> Согласитесь, это не дело, когда в, допустим, в программе паспортизации
>> скачет порядок ячеек ТП и только потому, что переключили рубильник.
Не понял, Вы хотите еще состояние оборудования отслеживать на этом этапе?

>> >> Ну, или нужно сразу нормализовывать связи на этапе ввода.
>> Тогда сталкиваемся с другой проблемой, которая описана в предыдщем
>> высказывании
А если "нормализацию" фрагмента схемы проводить по факту присоединения?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565647
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill Razuvaev
>> Есть требование, по которому бизнес-праивла должны быть реализованы в БД.
>> Правда, с оговоркой "основная часть" :)
Так вот же оно, ключевое слово! :-))
Это целых два слова
Kirill Razuvaev>> Согласитесь, это не дело, когда в, допустим, в программе паспортизации
>> скачет порядок ячеек ТП и только потому, что переключили рубильник.
Не понял, Вы хотите еще состояние оборудования отслеживать на этом этапе?
Именно! БД управления распределительной сети. переключения из одной программы, паспортизация/редактирование структуры - из другой.
Kirill Razuvaev
>> >> Ну, или нужно сразу нормализовывать связи на этапе ввода.
>> Тогда сталкиваемся с другой проблемой, которая описана в предыдщем
>> высказывании
А если "нормализацию" фрагмента схемы проводить по факту присоединения?

Хмм.... Имеете ввиду, если производим отключение одного рубильника и включение другого, то надо будет "переориентировать" направления дуг в соответствии с изменившимся "направлением распространения тока"? Специально использовал туманную характеристику, поскольку с переменным током знаком ;)
Эту мысль надо обдумать и переварить
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565682
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> >> А если "нормализацию" фрагмента схемы проводить по факту
>> >> присоединения?
>> Хмм.... Имеете ввиду, если производим отключение одного рубильника и
>> включение
>> другого, то надо будет "переориентировать" направления дуг в соответствии
>> с
>> изменившимся "направлением распространения тока"? Специально использовал
>> туманную характеристику, поскольку с переменным током знаком ;)
Ну, по факту отключения, думаю, ни фига делать не надо...
По включени - видимо, да. Хотя я в том посте имел ввиду, если есть две части
распределения и в первой ТП с рубильниками, а во второй - потребители, и
части не соединены друг с другом. Т.е. во второй нет источников. То нет
смысла пытаться расставлять направления в ней. Т.е. при добавлении связи -
смотрим, есть ли от чего плясать, если есть - то пляшем... Аналогично и при
включении рубильника будет.
Хотя, если хотим мониторить и отключения оборудования - стоит в отключаемых
фрагментах сбрасывать какой-то флаг. Накладные расходы при добавлении
элементов ниже будут. Т.е. если появляется связь схемы без источника с
другой схемой, в которой тоже не показан (отключен) источник, мы сразу это
увидим, без прохода по графу...


P.S. Эх.. Если б еще при отключении рубильника табличка "Работают люди"
автоматом появлялась... :-)))))))))


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565725
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill Razuvaev Надо будет переварить. Но вопрос о "пляшущем" порядке элементов схемы остается открытым.
Kirill RazuvaevP.S. Эх.. Если б еще при отключении рубильника табличка "Работают люди"
автоматом появлялась... :-))))))))) А она появляется Т.е. не табличка и не "автоматом", а признак, что на ТП запланировано переключение или другой вид работ.
Это называется Журнал работ, но это совсем другая песня, другой модуль :)

P.S. А Вы случаем с такими задачами не сталкивались лично?
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565729
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> P.S. А Вы случаем с такими задачами не сталкивались лично?
К счастью, нет...
Знакомый электрик есть просто, коий наличие запитанных шин слюнявым пальцем
проверяет... Уже много лет... :-)))


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565740
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill Razuvaev
"источник", а от него направление легко определяется...

Легко? Это если фидер в виде дерева. (Фидер - набор элементов, которые электрически соединены друг с другом). А если в виде графа, то как вы будете определять движение тока в данной точке?

Senya_LИдея такова, что при совпадении направленности дуг с направлением движением тока можно будет избежать "зацикливания". Точнее, если это и произошло при обходе, то это само по себе уже будет означать ошибочность стуктуры.
А вот переключат рубильник и ток потечёт в другую сторону и что тогда? Будете update всего графа делать?
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565767
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо, никак нельзя описать движение тока в БД. Точнее можно, например, каким-нибудь битовым полем, но лучше этого не делать. К тому же Вам важен будет не только факт наличия тока, но и его значение. Кроме того, наличие напряжения <> наличию тока. Напряжение может быть, а вот тока может и не быть (нагрузка = 0).
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565784
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodron Senya_LИдея такова, что при совпадении направленности дуг с направлением движением тока можно будет избежать "зацикливания". Точнее, если это и произошло при обходе, то это само по себе уже будет означать ошибочность стуктуры.
А вот переключат рубильник и ток потечёт в другую сторону и что тогда? Будете update всего графа делать?Зачем же всего графа? Только то, что изменилось. Фидера, например, того же
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35565865
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_LЗачем же всего графа? Только то, что изменилось. Фидера, например, того же
А этого мало?
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566008
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_L
P.S. А Вы случаем с такими задачами не сталкивались лично?
А Вы где работаете? Уж больно похоже на то, чем занимаюсь я.
Kirill Razuvaev
Знакомый электрик есть просто, коий наличие запитанных шин слюнявым пальцем
проверяет... Уже много лет... :-)))

Ха-ха :) Он резиновый?
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566027
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_LПорядок связывания объектов вобщем-то совпадает с тем, что привычен операторам и совсем не совпадает с направлением движения тока по сети.Если так хочется хранить направление тока, то проще всего будет добавить к структуре графа еще одно поле - направление. Прямое (совпадает с направлением ребра START->FINISH) и обратное.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566266
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>А если в виде графа, то как вы будете определять движение тока в данной
>>точке?
Ток, к счастью, в точке не течет... А течет он именно в линиях связи
графа...


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566271
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Ха-ха :) Он резиновый?
Не знаю. Сам не верил, пока не увидел в живую. Не удержался даже, чтоб
контрольку не включить!


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566336
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill Razuvaev
Ток, к счастью, в точке не течет... А течет он именно в линиях связи
графа...

Ну не суть...
Под точкой я имел в виду элемент электрической цепи, который может быть промоделирован дугой
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566345
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Если так хочется хранить направление тока, то проще всего будет добавить
>> к структуре графа
>> еще одно поле - направление. Прямое (совпадает с направлением ребра
>> START->FINISH) и обратное.
Как хранить - не вопрос. Однозначно - в БД! :-))
Основной вопрос в том, как определить правильное с учетом аппаратной
коммутации и переконфигурации системы.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566356
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Ну не суть...
>> Под точкой я имел в виду элемент электрической цепи, который может быть
>> промоделирован дугой
Ну, это делтали...

>> А вот переключат рубильник и ток потечёт в другую сторону и что тогда?
>> Будете update всего графа делать?
Насколько я понимаю, в силовой энергетике крайне редко от переключения
рубильника ток в другую сторону течь начинает... :-)

Тут многое зависит от того, что человеку надо на выходе получить. Если нужна
on-line картина, какие участки запитаны, какие - нет, это - одно. Тут проще
граф апдейтить. А если - статистика сугубо, там другой подход возможен.
Анализируем "подключенность" конкретного участка к источнику тока. Тут можно
и направления не учитывать и вообще простым обходом дерева пойти...


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566434
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill Razuvaev
IMHO, это клиентская задача... на нем ее и решить проще! Попутно стукнув
оператора по репе... :-)

P.S. А вообще, направление движения тока - вещь спорная... :-))))


Posted via ActualForum NNTP Server 1.4

Да ладно. Уравнение Кирхгофа - и направление в кармане.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566439
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай1 Kirill Razuvaev
IMHO, это клиентская задача... на нем ее и решить проще! Попутно стукнув
оператора по репе... :-)

P.S. А вообще, направление движения тока - вещь спорная... :-))))


Posted via ActualForum NNTP Server 1.4

Да ладно. Уравнение Кирхгофа - и направление в кармане.

В комплексных переменных, разумеется :)
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566492
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill Razuvaev
Насколько я понимаю, в силовой энергетике крайне редко от переключения
рубильника ток в другую сторону течь начинает... :-)

Нет. Это вполне типичная ситуация.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566495
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При любой аварии, когда включается дополнительное питание (замыкаются так называемые "нормальные разрывы"), ток как раз таки течет на участки, оставшиеся без напряжения и зачастую именно в обратном направлении.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35566974
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill RazuvaevКак хранить - не вопрос. Однозначно - в БД! :-))
Основной вопрос в том, как определить правильное с учетом аппаратной
коммутации и переконфигурации системы. Я бы поставил вопрос так - как часто происходит переконфигурация системы и как долго расчитывать направление движения тока?

Если редко меняется направление и расчет долог - проще update-ить граф.
Но расчет "на лету" имеет преимущество - он не зависит от того запускали процедуру пересчета или забыли. Меньше шансов нарваться на логическую нестыковку данных.

Что касается нормализации структуры - то тут обсуждать вобще нечего.
от добавления поля "направление" нормализация не пострадает.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35567338
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyЧто касается нормализации структуры - то тут обсуждать вобще нечего.
от добавления поля "направление" нормализация не пострадает.
Не знаю, как на счёт НФ, но некое дублирование появляется. Хранится состояние коммутации - оно-то и определяет направление тока.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35567497
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyЕсли так хочется хранить направление тока, то проще всего будет добавить к структуре графа еще одно поле - направление. Прямое (совпадает с направлением ребра START->FINISH) и обратное. Вы не совсем поняли. Вопрос в том, чтобы организовать схему БД так, чтобы "запитанные" подсистемы (они же фидеры) можно было обойти одним CTE запросом и избежать "зацикливания" рекурсии.
В чем польза, спросите Вы? Например, одним запросом можно узнать: 1) к какому источнику подключен потребитель (обратное направление обхода) и список потребителей (прямое направление обхода); 2) проверить возможность подачи напряжения на участок, где проводятся работы; 3) ... да мало ли еще чего, можно узнать ;-)
goodronИмхо, никак нельзя описать движение тока в БД. Точнее можно, например, каким-нибудь битовым полем, но лучше этого не делать. Не надо описывать движение тока, задача в том, чтобы описать саму сеть и организовать учет потребеления электроэнергии. А битовое поле - это точно денормализация. То же самое относится и к словам Bely'го.
goodronКроме того, наличие напряжения <> наличию тока. Напряжение может быть, а вот тока может и не быть (нагрузка = 0).Пусть тока и не будет. Направленность дуги в данном случае будет указывать, куда БЫ он пошел, если бы нагрузка имелась.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35567501
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай1 Николай1Да ладно. Уравнение Кирхгофа - и направление в кармане.

В комплексных переменных, разумеется :) Ой, не пугайте, пуганные мы
Приходилось брать уравнения в комплексных переменных, пусть и не Кирхгоффа.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35567595
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_LВы не совсем поняли. Вопрос в том, чтобы организовать схему БД так, чтобы "запитанные" подсистемы (они же фидеры) можно было обойти одним CTE запросом и избежать "зацикливания" рекурсии.Зацикливание рекурсии можно избежать двумя способами:
1) Если построенный граф является деревом (или подграф является деревом) с вершиной в точке откуда считаем.
2) Построением кратчайшего пути от точки к точке в ориентированном графе.

первый вариант - он зависит от реальной топологии.
Если она НЕ ПОДХОДИТ под это условие, то вы ничего с этим не сделаете.
Это означает, что есть источники, которые получают электричество из двух или более источников.

Второй вариант - алгоритмический. Алгоритмы поиска кратчайших путей - существуют и описаны в теории графов, вот только их реализация с помощью SQL запросов крайне неэффективна.

Senya_LВ чем польза, спросите Вы? Например, одним запросом можно узнать: 1) к какому источнику подключен потребитель (обратное направление обхода) и список потребителей (прямое направление обхода); С учетом сказанного выше - ответ может быть получен "к каким источникам (множественное число)".

Если такого не бывает - то откуда вобще может взяться зацикливание?

Ну и почему вы упираетесь именно на SQL запрос?
Почему эту информацию нельзя выдать с помощью хранимых процедур?

Senya_L3) ... да мало ли еще чего, можно узнать ;-)Для того, чтобы понять степень проблемы - хорошо бы знать "чего еще хочется знать".

Если вам необходимо знать только пути между потребителями энергии и генераторами энергии, то вы можете заблаговременно рассчитать все пути и сохранить их в БД.
Это будет денормализация, зато сможете получать данные одним запросом кто к кому подключен.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35568231
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_L Николай1 Николай1Да ладно. Уравнение Кирхгофа - и направление в кармане.

В комплексных переменных, разумеется :) Ой, не пугайте, пуганные мы
Приходилось брать уравнения в комплексных переменных, пусть и не Кирхгоффа.

В смысле?
Я как раз в смысле, что все очень просто.
Берешь свою систему, строишь по ней систему уравнений, решаешь, и вот тебе направления токов.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35568294
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belyоткуда вобще может взяться зацикливание?

+1
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35568307
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа не хочется заводить отдельную таблицу пройденных объектов или линков?
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35568310
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда действительно можно добавить поле "Пройден/не пройден" и в СТЕ в условии на объединение отсеивать "пройденные". Только перед каждым проходом нужно будет всё апдейтить в 0 - "ничего не пройдено".
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35568843
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай1В смысле?
Я как раз в смысле, что все очень просто.
Берешь свою систему, строишь по ней систему уравнений, решаешь, и вот тебе направления токов. Все не так просто. Учтите, что сеть распределительная и замкнутого контура не образует, что, насколько я помню, условие применимости ур-я Кирхгофа. Проще говоря, неизвестно нагрузка конечного потребителя.

BelyЗацикливание рекурсии можно избежать двумя способами:
....
первый вариант - он зависит от реальной топологии.
Если она НЕ ПОДХОДИТ под это условие, то вы ничего с этим не сделаете.
Есть и третий способ. Но сложен в реализации. Повторюсь, сеть распределительная, замкнутый контур не образует и существенной нагрузки в ней и быть не должно (это бы означало либо КЗ, либо этакий большоооой нагревательный элемент :)). Каждая дуга графа по сути обозначает три проводника тока, так как кол-во фаз три. Я считаю, что возможно ориентировать дуги таким образом, чтобы обеспечить обход фидера на уровне SQL. При этом одна и та же вершина может в итоговую выборку попасть и не один раз, но зацикливания не произойдет. Если все же произошло, то такая сеть не функциональна. Конечно, неплохо, когда бизнес правило обеспечивается уже на уровне структуры, но ....
Сложности в реализации и неизвестно, какова будет эффективность SQL-запросов.
goodronТипа не хочется заводить отдельную таблицу пройденных объектов или линков? Не хочется заводить временные таблицы и в цикле "запихивать" в них пройденные вершины и дуги.
авторТогда действительно можно добавить поле "Пройден/не пройден" и в СТЕ в условии на объединение отсеивать "пройденные". Только перед каждым проходом нужно будет всё апдейтить в 0 - "ничего не пройдено". К сожалению, нет средств для одновременной выборки и апдейта записей. Хотя нет, есть - курсоры или хранимки. Это зависит от используемой СУБД.


Подводя итоги, скажу, что Кирилл Разуваев, скорее всего, прав. Такие вещи надо делать на клиенте. Меньше будет необходимости прибегать к проктологии.
Пожалуй, тему можно закрывать.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35570371
Фотография shelsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) А направление вектора (направления тока) при задании графа нельзя задать ?
2) И попробовать после этого CTE ))


______________________________________________________
Давайте считать обступившее нас со всех строн коричневое море шоколадным
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35570393
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_L Все не так просто. Учтите, что сеть распределительная и замкнутого контура не образует, что, насколько я помню, условие применимости ур-я Кирхгофа. Проще говоря, неизвестно нагрузка конечного потребителя.

Добавляем суперисточник и суперсток - вот и замкнутый контур. Хотя существуют и другие алгоритмы для нахождения установившегося потока (в данном случае это электрический ток).
Senya_L
Не хочется заводить временные таблицы и в цикле "запихивать" в них пройденные вершины и дуги.

Думаете будет медленно? Пробовали?
Senya_L
Подводя итоги, скажу, что Кирилл Разуваев, скорее всего, прав. Такие вещи надо делать на клиенте. Меньше будет необходимости прибегать к проктологии.
Пожалуй, тему можно закрывать.
Вобщем и целом согласен, но...
Если нужно, к примеру, вывести таблицу (грид) в которой будет содержаться два поля: Имя источника, кол-во отпускаемой электроэнергии. Тогда всё передавать на клиента, вычислять и заново пихать в грид? В данном случае реализация Вашей идеи очень пригодилась бы :)
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35570411
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shelsoft1) А направление вектора (направления тока) при задании графа нельзя задать ?

"...задании графа.." - это построение его? В смысле, ввод начальных данных? Представим, что объектов в сети > 1000. ЛЭП рисуются ("задаётся граф") пользователем. Откуда он знает, как будет течь ток? Ведь всё зависит от того, как произведет переключение диспетчер.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35570745
Фотография shelsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodron
1) Если вы тянули проводку у себя дома то вы знаете что электричество начинается "от счетчика"
2) Т. е. при нормальном построении базы это можно сделать автоматом
3) Однако есть вопрос резервных линии (и тут и "задача коммивояжера" и весовых коэффициентов векторов) однако опять же при выполнении п. 2. вероятно в 80% случаев обойтись одним CTE




______________________________________________________
Давайте считать обступившее нас со всех строн коричневое море шоколадным
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35572186
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shelsoft goodron
1) Если вы тянули проводку у себя дома то вы знаете что электричество начинается "от счетчика"
2) Т. е. при нормальном построении базы это можно сделать автоматом
3) Однако есть вопрос резервных линии (и тут и "задача коммивояжера" и весовых коэффициентов векторов) однако опять же при выполнении п. 2. вероятно в 80% случаев обойтись одним CTE

Резервных линий не меньше, чем остальных.
Не думаю, что можно сделать автоматом, т.к. "веса" на момент создания топологии зачастую неизвестны.
Ну даже если и известно. Фактически вы автоматически хотите определить оптимальную схему. Т.е. расставить разрывы таким образом, чтобы потери электроэнергии были наименьшими. Правильно я понял? Это есть "Задача Коммивояжера"? (Насколько я помню, она NP-полная)
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35572316
Фотография shelsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodron
1) Правильно поняли
2) Однако тут самое сложное при написании выборки определить условие что CTE не прошло и надо применять какой-нибудь свой эвристический механизм решения задачи
3) Для одной конторы я писал нечто такое для определения движения по "связям" между людьми, так порядка 70% запросов проскакивали одним СТЕ на ура, однако при наступлении ряда условий подставлялся другой гораздо более затратный механизм поиска

______________________________________________________
Давайте считать обступившее нас со всех строн коричневое море шоколадным
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35572853
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shelsoft
1) Правильно поняли

это хорошо
shelsoft
2) Однако тут самое сложное при написании выборки...

Прежде чем писать выборку, нужно уметь задавать направление тока. Я так и не понял, как вы решали (или предлагаете) эту задачу.
Допустим у нас нарисован кусок схемы (см вложение). Яч 1 и Яч 19 - это источники эл. тока. Трансформаторы - это нагрузка (потребители). Где здесь должен будет потечь ток?
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35572870
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я могу для этой схемы посчитать, где потечёт ток при определенном состоянии коммутации. Но как посчитать, где он "должен" течь - я не могу.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35573468
Фотография shelsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodron
1) Интересное условие (с точки зрения графов не решал)
2) Буду думать применительно к своим условиям
3) Спасибо


______________________________________________________
Давайте считать обступившее нас со всех строн коричневое море шоколадным
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35573525
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_L Николай1В смысле?
Я как раз в смысле, что все очень просто.
Берешь свою систему, строишь по ней систему уравнений, решаешь, и вот тебе направления токов. Все не так просто. Учтите, что сеть распределительная и замкнутого контура не образует, что, насколько я помню, условие применимости ур-я Кирхгофа. Проще говоря, неизвестно нагрузка конечного потребителя.

Как так? Я думал, что максимальная нагрузка не то, что бы, известна, а как бы даже прописана?
И за превышение - по башке? (в квартирах - по предохранителю).


Senya_L BelyЗацикливание рекурсии можно избежать двумя способами:
....
первый вариант - он зависит от реальной топологии.
Если она НЕ ПОДХОДИТ под это условие, то вы ничего с этим не сделаете.
Есть и третий способ. Но сложен в реализации. Повторюсь, сеть распределительная, замкнутый контур не образует и существенной нагрузки в ней и быть не должно (это бы означало либо КЗ, либо этакий большоооой нагревательный элемент :)). Каждая дуга графа по сути обозначает три проводника тока, так как кол-во фаз три. Я считаю, что возможно ориентировать дуги таким образом, чтобы обеспечить обход фидера на уровне SQL. При этом одна и та же вершина может в итоговую выборку попасть и не один раз, но зацикливания не произойдет. Если все же произошло, то такая сеть не функциональна. Конечно, неплохо, когда бизнес правило обеспечивается уже на уровне структуры, но ....
Сложности в реализации и неизвестно, какова будет эффективность SQL-запросов.
goodronТипа не хочется заводить отдельную таблицу пройденных объектов или линков? Не хочется заводить временные таблицы и в цикле "запихивать" в них пройденные вершины и дуги.
авторТогда действительно можно добавить поле "Пройден/не пройден" и в СТЕ в условии на объединение отсеивать "пройденные". Только перед каждым проходом нужно будет всё апдейтить в 0 - "ничего не пройдено". К сожалению, нет средств для одновременной выборки и апдейта записей. Хотя нет, есть - курсоры или хранимки. Это зависит от используемой СУБД.


Подводя итоги, скажу, что Кирилл Разуваев, скорее всего, прав. Такие вещи надо делать на клиенте. Меньше будет необходимости прибегать к проктологии.
Пожалуй, тему можно закрывать.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35573529
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения за оверквотинг.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35573878
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай1Как так? Я думал, что максимальная нагрузка не то, что бы, известна, а как бы даже прописана?
И за превышение - по башке? (в квартирах - по предохранителю).
Если бы всё было так...
Чтобы было понятней, зайдем с другой стороны. Как узнать, какой номинал предохранителя поставить для нового потребителя?
Или... Как изменится пропускная способность (максимальная нагрузка), если мы вот тут ещё одну ЛЭП проведём?
ЗЫ: Это решается с помощью задачи нахождения максимального потока, а вот как решается задача нахождения оптимальной схемы - я пока не знаю :(
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35573883
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shelsoft
1) Интересное условие (с точки зрения графов не решал)
2) Буду думать применительно к своим условиям
3) Спасибо

Вам тоже спасибо. Посмотрю применимость Комивояжера для этой задачи (хотя, если честно сомневаюсь)
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35574130
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodronЕсли бы всё было так...
Чтобы было понятней, зайдем с другой стороны. Как узнать, какой номинал предохранителя поставить для нового потребителя?А не потребитель должен заказывать нагрузку?
А то мы ему воткнем предохранитель на 5, а ему надо 20...
goodronИли... Как изменится пропускная способность (максимальная нагрузка), если мы вот тут ещё одну ЛЭП проведём?Дык - воткнуть эту ЛЭП в граф и посчитать.
В чем проблема?
goodronЗЫ: Это решается с помощью задачи нахождения максимального потока, а вот как решается задача нахождения оптимальной схемы - я пока не знаю :(Подозреваю, что эту задачу придется решать перебором разных вариантов.
Надо только четко поставить критерии оптимальности и указать какие варианты недопустимы.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35574203
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyА не потребитель должен заказывать нагрузку?
А то мы ему воткнем предохранитель на 5, а ему надо 20...

Да, потребитель. Но возможность присоединения такой нагрузки тоже должна просчитываться. Это можно сделать. Просто объяснял откуда ноги растут. И, кстати, если даже сумма мощностей всех потребителей сети > кол-ва электроэнергии, которое может пропустить сеть, то зачастую всё равно дают добро. Т.к. всё сразу не включат.
BelyДык - воткнуть эту ЛЭП в граф и посчитать.
В чем проблема?

Да ни в чём. Объяснял суть задачи.
BelyПодозреваю, что эту задачу придется решать перебором разных вариантов.
Надо только четко поставить критерии оптимальности и указать какие варианты недопустимы.
Это не решение. Вариантов слишком много.
Критерий "простой" - все должны получать запрошенную нагрузку и технические потери (нагрев проводов) должны быть минимальными. При этом каждый потребитель должен должен получать питание в данный момент времени только из одного источника.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35574222
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodronЭто не решение. Вариантов слишком много. Много - это сколько?
И за какое время расчитывается один вариант?

Перебор - это не всегда означает медленно по времени.
К тому же к алгоритму можно поключить эвристику - убирать из расчета заведомо нежизнеспособные варианты.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35574464
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodron Николай1Как так? Я думал, что максимальная нагрузка не то, что бы, известна, а как бы даже прописана?
И за превышение - по башке? (в квартирах - по предохранителю).
Если бы всё было так...
Чтобы было понятней, зайдем с другой стороны. Как узнать, какой номинал предохранителя поставить для нового потребителя?
Или... Как изменится пропускная способность (максимальная нагрузка), если мы вот тут ещё одну ЛЭП проведём?
ЗЫ: Это решается с помощью задачи нахождения максимального потока, а вот как решается задача нахождения оптимальной схемы - я пока не знаю :(

Я думаю, что эти задачи решаются так же, как и все остальные - по ГОСТам, СНиПам и прочим нормативным документам.

Про электричество не скажу, но вот теплотехнические расчеты делаются методом итераций.
Да и многие прочностные - то же.
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35574554
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyМного - это сколько?

Много - это кол-во комбинаций состояний коммутационного оборудования. 2 в степени N, где N - кол-во коммутационных устройств. Т.е. ОЧЕНЬ МНОГО.
Bely
И за какое время расчитывается один вариант?

Ассимптотическая оценка производительности алгоритма O(n*m), где n - кол-во вершин, m - кол-во дуг. Один вариант для n = 5000 и m = 6000 рассчитывается ~ 14 сек.
Bely
Перебор - это не всегда означает медленно по времени.
К тому же к алгоритму можно поключить эвристику - убирать из расчета заведомо нежизнеспособные варианты.
Думаете поможет?
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35574559
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай1
Я думаю, что эти задачи решаются так же, как и все остальные - по ГОСТам, СНиПам и прочим нормативным документам.
Про электричество не скажу, но вот теплотехнические расчеты делаются методом итераций.
Да и многие прочностные - то же.
Что за метод итераций?
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35574889
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodron Николай1
Я думаю, что эти задачи решаются так же, как и все остальные - по ГОСТам, СНиПам и прочим нормативным документам.
Про электричество не скажу, но вот теплотехнические расчеты делаются методом итераций.
Да и многие прочностные - то же.
Что за метод итераций?

Это когда входные параметры для расчета зависят от результатов расчета.
Например, коэффициент теплообмена зависит от температуры на границе сред, а температура, в свою очередь, от коэффициента теплообмена. Поэтому сначала делается предварительный расчет, потом уточняющий. Так до тех пор, пока предварительные значения не совпадут с расчетными.

Я не имел в виду, что эта методика как-то поможет расчету электрических сетей. Я просто хотел сказать, что в итерационном подходе ничего "страшного" нет, это нормальный способ расчетов.

Можно, например, пробовать расчитывать сначала крупные элементы, потом переходить к мелким.
Мне кажется, что-то такое нам рассказывали на лекциях по электротехнике. Потому что, понятно, что разводку в квартире в расчетах городской сети никто в расчет не берет (да и разводку по дому - тоже).
...
Рейтинг: 0 / 0
Сети. Вопрос по нормализации.
    #35575500
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodron Bely
И за какое время расчитывается один вариант?

Ассимптотическая оценка производительности алгоритма O(n*m), где n - кол-во вершин, m - кол-во дуг. Один вариант для n = 5000 и m = 6000 рассчитывается ~ 14 сек.14 секунд - это не много, но количество перебираемых вариантов - много.

На таких объемах может помочь выбор вариантов не на угад, а с помощью какой-нибудь стратегии, которая кажется наиболее привлекательной.
Например: Сперва добавить между двумя точками графа - по одной дуге. Посмотреть что получилось. Взять вариант с лучшим результатом. Начать добавлять дуги к нему и искать наиболее приемлемый.

Вобщем, есть над чем порезвиться с научной точки зрения.

goodron Bely
Перебор - это не всегда означает медленно по времени.
К тому же к алгоритму можно поключить эвристику - убирать из расчета заведомо нежизнеспособные варианты.
Думаете поможет?Это называется "Метод ветвей и границ" - используется для сокращения перебора.

goodronЧто за метод итераций?Он же метод последовательных приближений.
...
Рейтинг: 0 / 0
56 сообщений из 56, показаны все 3 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сети. Вопрос по нормализации.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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