powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сети. Вопрос по нормализации.
25 сообщений из 56, страница 2 из 3
Сети. Вопрос по нормализации.
    #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
25 сообщений из 56, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сети. Вопрос по нормализации.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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