powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура БД для счетчиков
7 сообщений из 7, страница 1 из 1
Структура БД для счетчиков
    #37950110
rsa_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите нормализовать базу по счетчикам воды.

Дом. N квартир. В каждой квартире 1 или 2 счетчика воды. Количество счетчиков меняться со временем не может.
Каждый счетчик имеет серийный номер SN (на практике могут быть не уникальны).
Любой счетчик может быть заменен.
В таблицу заносятся даты ввода счетчиков в эксплуатацию - Дата ввода
1 раз в месяц заносятся показания счетчиков.

Нужно:
- Получать показания счетчиков за выбранный месяц
- Получать количество счетчиков и из SN для квартиры
- Получать последние показания счетчиков для квартиры
- Получать все показания счетчиков для квартиры.

Получаем:
Показания( Номер квартиры , Количество счетчиков, SN счетчика 1, SN счетчика 2, Показание счетчика 1, Показание счетчика 2, Дата ввода1, Дата ввода 2)

Нормализуем:
Квартира( Номер квартиры , Количество счетчиков, SN счетчика 1, SN счетчика 2, Дата ввода1, Дата ввода 2)
Показания( Номер квартиры ,Показание счетчика 1, Показание счетчика 2, Дата ввода показаний )

Для реальной БД этого достаточно. Две таблицы связаны по уникальному ключу номер квартиры.
У таблицы Показания ключ из двух полей.

Но как бороться с проблемой замены счетчиков?
Как только счетчик меняется, в таблицу 'Квартира' заносится новая запись с новым SN счетчика. Можно конечно ключом сделать связку: Номер квартиры + SN счетчика 1 + SN счетчика 2. Но очень неудобно затем по датам определять всю цепочку замен счетчиков.

Может быть ввести в таблицу 'Квартира' дополнительное поле в котором в случае замены хранить номер следующей записи для этой квартиры?
...
Рейтинг: 0 / 0
Структура БД для счетчиков
    #37950136
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsa_mНормализуем:
Недостаточно нормализовал. Выноси счётчики в отдельную таблицу. Показания - возможно в
таблицу со счётчиками, возможно - в отдельную.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Структура БД для счетчиков
    #37950180
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rsa_mДля реальной БД этого достаточно. Две таблицы связаны по уникальному ключу номер квартиры.Для реальной БД понадобятся десятки таблиц для такой задачи :-)

Для учебной задачи достаточно:

Квартира(Номер квартиры)
Счётчики(SN счетчика)
Счётчики_В_Квартире(Номер счётчика в квартире, Номер квартиры, SN счетчика, Дата ввода, Дата вывода)
Показания(Номер счётчика в квартире, Показание счетчика, Дата ввода показаний)

Ещё вариант:
Квартира(Номер квартиры)
Счётчики(SN счетчика)
Счётчики_В_Квартире(Номер квартиры, SN счетчика, Дата ввода, Дата вывода)
Показания(Номер квартиры, SN счетчика, Показание счетчика, Дата ввода показаний)
...
Рейтинг: 0 / 0
Структура БД для счетчиков
    #37950217
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgСчётчики_В_Квартире(Номер квартиры, SN счетчика, Дата ввода, Дата вывода)

Не, даже в учебной задаче всё-таки нужна таблица "Проведённая_Работа", куда заносятся
установки, снятия, ревизии и ХЗ что ещё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Структура БД для счетчиков
    #37950278
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovalexeyvgСчётчики_В_Квартире(Номер квартиры, SN счетчика, Дата ввода, Дата вывода)

Не, даже в учебной задаче всё-таки нужна таблица "Проведённая_Работа", куда заносятся
установки, снятия, ревизии и ХЗ что ещё.Не, для учебной слишком круто... Учебные счётчики в ваакуме не устанавливают и не проверяют :-)
...
Рейтинг: 0 / 0
Структура БД для счетчиков
    #37950315
rsa_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgКвартира(Номер квартиры)
Счётчики(SN счетчика)
Счётчики_В_Квартире(Номер счётчика в квартире, Номер квартиры, SN счетчика, Дата ввода, Дата вывода)
Показания(Номер счётчика в квартире, Показание счетчика, Дата ввода показаний)


Спасибо за совет.
Добавление поля Дата вывода, действительно помогает решить проблемы при заменах счетчика.
...
Рейтинг: 0 / 0
Структура БД для счетчиков
    #38079919
matva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть схожа проблемма, только показания счетчиков в 1 квартире.
1. Есть данные:
а) Дата снятия показаний.
б) Показания счетчиков воды (Ванная, Туалет - Холодная и Горячая вода).
ВаннаяГорячая, ВаннаяХолодная.
ТуалетГорячая, ТуалетХолодная.
Эти показания уже есть и их менять нельзя. Они уже есть в таблице, в которой: ДатаСнятия показаний, ВаннаяГорячая, ВаннаяХолодная, ТуалетГорячая, ТуалетХолодная.

2. Надо:
а) Создать форму в которой будут отображаться данные:
- Дата прошлого показания счетчиков
- Дата теперешнего показания счетчиков
- Данные счетчиков за прошлый раз:
ВаннаяГорячая, ВаннаяХолодная, ТуалетГорячая, ТуалетХолодная
- Тарифы: на горячую и холодную воду, используемый до 20-го числа месяца
- Тарифы: на горячую и холодную воду, используемый после 20-го числа месяца
(в зависимости от даты).
б) Ввод в форму данных:
- Данные счетчиков на настоящий момент:
ВаннаяГорячая, ВаннаяХолодная, ТуалетГорячая, ТуалетХолодная
- Расчет разницы (или сколько было потреблено воды отдельно по ванной и отдельно по туалету)
- Сколько было потреблено воды в месяце (по квартирно мне не надо! это для 1-й квартиры, а не для целого дома!)
- Сумма, котрую надо заплатить за воду.

Сохранить все вновь полученные данные в ту же самую таблицу.

Вот вроде бы и все. Что не так в моей логике? Все логично? Как по мне вполне. Если что-то не логично - подскажите.

Теперь я хочу это все сделать в Аксцессе:
1. Создал и занес данные в таблицу "Показания Счетчиков":
- Дата снятия показаний, ВаннаяГорячая, ВаннаяХолодная, ТуалетГорячая, ТуалетХолодная.
2. Создал и занес данные в таблицу "Тарифы":
- Горячая вода до 20, Холодная вода до 20, Горячая вода после 20, Холодная вода после 20.
3. Создал промежуточную таблицу "Итоги":
- Дата снятия показаний, ВаннаяГорячаяТекущ, ВаннаяХолоднаяТекущ, ТуалетГорячаяТекущ, ТуалетХолоднаяТекущ, ВаннаяГорячаяПрошлМесяц, ВаннаяХолоднаяПрошлМесяц, ТуалетГорячаяПрошлМесяц, ТуалетХолоднаяПрошлМесяц, ИтогоПотребленоГорячей, ИтогоПотребленоХолодной, РазницаГорячейВоды, РазницаХолоднойВоды, СуммаЗаГорячую, СуммаЗаХолодную, ОбщаяСумма.
4. Создаю запрос на эти самые таблицы: Показания Счетчиков, Тарифы, Итоги.
5. Пытаюсь наладить форму, чтоб отображалось в ней это все - не выходит.
Пытаюсь наладить связи между таблицами - не выходит (ну это вы видите в прошлых постах). Ну а про водворение данных назад в таблицу Показания Счетчиков - нечего и говорить - мрак.

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


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