powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нормализуем по науке: счетчики и узлы учета
6 сообщений из 6, страница 1 из 1
Нормализуем по науке: счетчики и узлы учета
    #36067743
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочется порассуждать о правильном взгляде на такую вещь:

Есть две таблицы - Счетчики и Узлы учета.

Узел Учета - это, грубо говоря, логический участок газовой трубы перед группой потребляющего оборудования, куда возможно врезать счетчик. Узел учета может существовать и без счетчика, либо в него может быть установлен один счетчик.

Счетчик - общеизвестная железяка с цифирками. Он может быть вообще никуда не установлен (валяться на балансе просто так), либо быть установлен в Узел Учета.

Другими словами, с обеих сторон просматривается отношение один-к-ноль_или_один. (?) Можно добавить к УзлуУчета поле СчетчикИД FK NULLABLE (NULL=без счетчика). Можно добавить к Счетчику поле УзелУчетаИД FK NULLABLE (NULL=никуда не установлен).

Но как правильно? Какие еще соображения нужно учесть, какие варианты предложить?
...
Рейтинг: 0 / 0
Нормализуем по науке: счетчики и узлы учета
    #36067853
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat Fisher,
можно посмотреть на вашу газовую сеть как на "граф"
в графе есть вершины и рёбра. вершины, в вашем случае, это узлы - то есть счётчки, установочные места под счётчики, клапана, переходники, разветвления...
а рёбра - это участки труб.
Хранится это либо в виде "матрицы смежности", либо в виде "списка связей"(вроде как)
для СУБД наверно больше подходит этот список
получается так:
NODE_LIST (список узлов)
- node_id (код узла)
- node_type (вид узла - счётчик, переходник...)
- node_name (название или другие характеристики узла)

RIB_LIST (список труб)
- rib_id (код участка трубы)
- node_id1 (узел от которого начинается)
- node_id2 (узел на котором заканчивается, либо наоборот)
- rib_len (длинна трубы, и вообще любые нужные характеристики)

То что я описал, позволит создать "модель" вашей газовой сети.

если такие подробности не нужны, то

хватит трёх таблиц
СПИСОК СЧЕТЧИКОВ
-counter_id
-counter_name
-...

СПИСОК УЗЛОВ
-node_id
-node_name
-...

и показываем "факт установки" счётчика на конкретный узел

СВЯЗИ (счетчик установленый в определёный узел учёта)
-node_id
-counter_id
-...
...
Рейтинг: 0 / 0
Нормализуем по науке: счетчики и узлы учета
    #36067910
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно и так и так, важно установить уникальность значения этого поля, иначе будет один-ко-многим
С уважением, Naf
...
Рейтинг: 0 / 0
Нормализуем по науке: счетчики и узлы учета
    #36068492
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherХочется порассуждать о правильном взгляде на такую вещь:

Есть две таблицы - Счетчики и Узлы учета.

Узел Учета - это, грубо говоря, логический участок газовой трубы перед группой потребляющего оборудования, куда возможно врезать счетчик. Узел учета может существовать и без счетчика, либо в него может быть установлен один счетчик.

Счетчик - общеизвестная железяка с цифирками. Он может быть вообще никуда не установлен (валяться на балансе просто так), либо быть установлен в Узел Учета.

Другими словами, с обеих сторон просматривается отношение один-к-ноль_или_один. (?) Можно добавить к УзлуУчета поле СчетчикИД FK NULLABLE (NULL=без счетчика). Можно добавить к Счетчику поле УзелУчетаИД FK NULLABLE (NULL=никуда не установлен).

Но как правильно? Какие еще соображения нужно учесть, какие варианты предложить?Некоторые авторитеты, Дейт, в частности, протестуют против NULL . Что, впрочем, не мешает их использовать в разумных пределах. В данном же случае, мне кажется, было бы разумным использовать следующую схему:
СчетчикID (PK)Name (UQ ?)
Узел учетаID (PK)Name (UQ ?)
Счетчик на узле учетаСчетчик_ID (UQ) (FK на Счетчик(ID))Узел учета_ID (UQ) (FK на Узел учета(ID))
...
Рейтинг: 0 / 0
Нормализуем по науке: счетчики и узлы учета
    #36068660
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAНекоторые авторитеты, Дейт, в частности, протестуют против NULL . Что, впрочем, не мешает их использовать в разумных пределах. В данном же случае, мне кажется, было бы разумным использовать следующую схему:
СчетчикID (PK)Name (UQ ?)
Узел учетаID (PK)Name (UQ ?)
Счетчик на узле учетаСчетчик_ID (UQ) (FK на Счетчик(ID))Узел учета_ID (UQ) (FK на Узел учета(ID))ИМХО, проще так
Узел учетаID (PK)Name (UQ ?)
СчетчикID (PK)Узел учета_ID (NULL) (FK на Узел учета(ID))Name (UQ ?)Чтобы там не говорил Дейт. ;)
...
Рейтинг: 0 / 0
Нормализуем по науке: счетчики и узлы учета
    #36069157
Aqwerty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cane Cat Fisher,

Узел учета - это не место куда можно врезать счетчик, а совокупность таких мест. Правильнее говорить что счетчик устанавливается в точку учета, которая в свою очередь входит в некоторый узел.
Например, к потребителю может идти не одна труба, а скажем 2-3-... Например, в случае резервного ввода. В этом случае точек учета будет по количеству труб, а узел учета один.

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


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