|
|
|
Нормализуем по науке: счетчики и узлы учета
|
|||
|---|---|---|---|
|
#18+
Хочется порассуждать о правильном взгляде на такую вещь: Есть две таблицы - Счетчики и Узлы учета. Узел Учета - это, грубо говоря, логический участок газовой трубы перед группой потребляющего оборудования, куда возможно врезать счетчик. Узел учета может существовать и без счетчика, либо в него может быть установлен один счетчик. Счетчик - общеизвестная железяка с цифирками. Он может быть вообще никуда не установлен (валяться на балансе просто так), либо быть установлен в Узел Учета. Другими словами, с обеих сторон просматривается отношение один-к-ноль_или_один. (?) Можно добавить к УзлуУчета поле СчетчикИД FK NULLABLE (NULL=без счетчика). Можно добавить к Счетчику поле УзелУчетаИД FK NULLABLE (NULL=никуда не установлен). Но как правильно? Какие еще соображения нужно учесть, какие варианты предложить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2009, 12:49 |
|
||
|
Нормализуем по науке: счетчики и узлы учета
|
|||
|---|---|---|---|
|
#18+
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 -... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2009, 13:21 |
|
||
|
Нормализуем по науке: счетчики и узлы учета
|
|||
|---|---|---|---|
|
#18+
можно и так и так, важно установить уникальность значения этого поля, иначе будет один-ко-многим С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2009, 13:49 |
|
||
|
Нормализуем по науке: счетчики и узлы учета
|
|||
|---|---|---|---|
|
#18+
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)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2009, 16:36 |
|
||
|
Нормализуем по науке: счетчики и узлы учета
|
|||
|---|---|---|---|
|
#18+
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 ?)Чтобы там не говорил Дейт. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2009, 17:47 |
|
||
|
Нормализуем по науке: счетчики и узлы учета
|
|||
|---|---|---|---|
|
#18+
Cane Cat Fisher, Узел учета - это не место куда можно врезать счетчик, а совокупность таких мест. Правильнее говорить что счетчик устанавливается в точку учета, которая в свою очередь входит в некоторый узел. Например, к потребителю может идти не одна труба, а скажем 2-3-... Например, в случае резервного ввода. В этом случае точек учета будет по количеству труб, а узел учета один. в остальном правильная схема у ChA в таблицу с информацией о движении счетчиков еще конечно период надо добавить и еще кучу всего для отражения более-менее всех жизненных ситуаций количество таблиц будет исчисляться парой-тройкой десятков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2009, 05:25 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=86&tid=1543172]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 368ms |

| 0 / 0 |
