Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу определиться со структурой БД, Есть несколкьо вариантов 
V
    Опции темы
Nowichok
Дата 27.8.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



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

Так вот.  на КАЖДЫЙ МЕСЯЦ имеются данные:

Договорные значения - 2 числа
Фактические значения - 2 числа
Приборы учёта - 5 или 6 чисел.

В голове есть 2 варианта, какую структуру сделать у БД.
Вариант № 1 :
 Делать 4 таблицы - Учреждение, Договор, Факт, Приборы_учёта. Тогда получим, что в Договоре и Факте будет по 2*12=24 поля (на все 12 месяцев). А в таблице приборов учёта 5*12=60 !!!!!

Вариант № 2 :
Делать на каждый месяц отдельную таблицу по Договору, Факту и Приборам_учёта. В каждой таблице будет по 2-5 чисел, НО кол-во таблиц в базе будет тоже приличное.

Как быть ? Какой подход будет более разумным ? 
PM MAIL   Вверх
vladimir74
Дата 27.8.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



поля и темболее таблицы для месяцев создавать - не красиво, даже для MS Access :(
предлагаю ввести дату. и читать/писать по дате...
дальше не совсе понятно с Договорные значения и Фактические значения это как я понял 1- контора обязуется, 2- по факту у конторы обнаружили? Как воносятся эти данные вместе или раздельно? возможно их можно соединить в одну таблицу и сортировать по коду значения, или сделать два поля ...
Приборы учёта - это что? какая связь с учетом самим?
влюбом случае меньше редурдантных полей и таблиц решаются с помощью поля даты smile
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
Akina
Дата 27.8.2009, 14:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Nowichok @  27.8.2009,  14:48 Найти цитируемый пост)
 Какой подход будет более разумным ?  

Оба неразумны.

Начните с минимального самообразования по теме "Нормализация баз данных". Затем выделите сущности своего процесса и на основе этих данных составляйте схему.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Nowichok
Дата 27.8.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



2vladimir74 
 А как можно реализовать работу через даты ? Вы имеет ввиду что-то вроде такой структуры (к примеру, Договора)
 Код_учр \\  Гкал  \\ М_куб \\ дата (на какой месяц ?)

имеется 350 учреждений. 350 записей такого рода - на один месяц. 350*12 = ...... Полей то меньше, а записей стала тьма.

На НАЧАЛО ГОДА распеределяются ДОГОВОРные значения на каждое учреждение. Сколько по договору должно потратиться за каждый месяц (Гкал м_куб). 

В КОНЦЕ каждого МЕСЯЦА забиваются ФАКТические значения со счёт-фактур. Те же самые Гкал и М_куб. Приборы учёта говорят каждый месяц, сколько дней приборы отработали, сколько намотали, сколкьо стоимость обслуживания этих приборов за каждый месяц.  От приборов учёта зависит, по какому методу счёт-фактура будет. ЭТо уже нюансы.


 2Akina
 Опыт работы есть, с сущносятми и нормализацией знаком. В данной ситуации я не вижу других  явных сущностей (кроме тех, что я выделил) (((( Может уже пора отдохнуть

Либо ещё один вариант. Делать 12 таблиц. В каждой таблице будем инфа о коде учреждения, договорных значениях (2 числа) на этот месяц, фактических значениях (2 числа ), о приборах учёта (5 чисел). Таблиц - 12. Полей - от 10 и выше.
В данном случае мне непривычно, что разнородная информация содержится в одном месте. Я уж привык - если договорные значения, то в ДОГОВОР. Если фактические - то в ФАКТ (я о таблицах)

Это сообщение отредактировал(а) Nowichok - 27.8.2009, 14:30
PM MAIL   Вверх
vladimir74
Дата 27.8.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



Цитата(Akina @  27.8.2009,  12:08 Найти цитируемый пост)
Начните с минимального самообразования по теме "Нормализация баз данных".

 smile 
я пока сильно плаваю в твоей задаче, но
1. есть таблица предприятий
2. таблица приходящих значений 
код предприятия, данные, дата снятия значений
с договорными данными - тут в зависимости как оно приходит и считается если за год, то возможно стоит ввести третью таблицу, опять же с датой договора и сроком договора. потом можно просчитать как обстоит дело у предприятия за данный период из таблицы 3 по данным таблицы 2. (Это пример, т.к. я не совсем знаю задачу)
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
Nowichok
Дата 27.8.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



Отброшу лишнее и попытаемся разобраться:
Есть таблица предприятий - верно. 

Код учр \\ наим-е учр-я \\ адресс \\ и т.п.

Из этого нам нужен только Код_учр, по нему будем определять учреждение однозначно.
----------------------------

Есть таблица Договор - договорные значения к КАЖДОМУ учреждению на каждый месяц. Таблица создаётся в январе и, чаще всего, неизменна в течение года.
 Код учр. \\ ГКал \\ М_куб   - образно такой формы значения. Т.е. если представить это в Excel'е, то после кода учр-я идёт 2*12=24 поля. За все 12 месяцев. Чем не таблица ?smile

----------------------------

Есть таблица ФАКТ - фактические значения к КАЖДОМУ учреждению на каждый месяц. Таблица изначально, ест-но, пуста. Каждый месяц приходят счёт-фактуры, и из них берётся та же информация (цифры ток другие могут быть) и заносится. 
 Код учр. \\ ГКал \\ М_куб   - образно такой формы значения. 
На этом этапе оператор сравнивает фактические значения с договорными. Если не совпадают - разбирается. Это я к тому, зачем нужны вообще эти таблицы.

--------------------------

Есть таблица Приборы учёта. ТОчнее таблицы пока даже нет. Есть информция - каждый месяц на КАЖДОЕ учреждение пишется, чколько дней отработал счётчик, какие показания (Гкал и м_куб) он дал, какова стоимость его обслуживанияв этом месяце.

 Код учр. \\ кол_во отр-х дней в этом месяце \\ кол-во доработанных дней в предыдущем месяце (т.к. значения счётчик показывает с 20е число по 20е число, т.е. 2 месяца захватывает)  \\ ГКал \\ М_куб \\ сумма_за обслуживание счётчика  - образно такой формы значения. 

5-6 полей. За 12 месяцев получаем в Excel'ском файле 12*5=60 полей.


Теперь КАК это по порядку происходит.
Каждый месяц в 15-17х числах оператор получает данные  сначала О СЧЁТЧИКАХ. Забивает (куда-то smile ). Через пару дней приходят счёт-фактуры на учреждения. Сначала сверяется число (к примеру ГКал) из счёт-фактры с показаними счётчика на данное учреждение. Если числа совпадают, то сверяется это же число с договорной цифрой ( всё в рамках одного и того же месяца 
). Если не сильно превышает - заносим в ФАКТ значения Гкал и М_куб. Если сильно превышает - оператор разбирается, почему такое число

Всё описал. Краткая схема. После этого там ещё заморочек хватает. Но пока с этим разобраться. Вот КАК это реализовать ??

Все идеи с введением ПОЛЯ ДАТЫ вконечном итоге приведут к тому, что на каждое учреждение должно быть несколько записей. В худшем случае 350*12= 4200 записей.

Это сообщение отредактировал(а) Nowichok - 27.8.2009, 19:17
PM MAIL   Вверх
vladimir74
Дата 27.8.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



Цитата(Nowichok @  27.8.2009,  17:03 Найти цитируемый пост)
Все идеи с введением ПОЛЯ ДАТЫ вконечном итоге приведут к тому, что на каждое учреждение должно быть несколько записей. В худшем случае 350*12= 4200 записей.

ну и да smile а что в этом плохово? это ж база данных (хотя говоря об MS Access это извращение, да простят меня любители...)
ничего страшного нет в колличестве записей, намного страшнее колличество ненужных полей и таблиц...
ты же потом будешь вытаскивать только нужную тебе информацию (притом из расчета код предпиятия+дата) вот и строй структуру изначально пож это...
а то ты сейчас нарисуешь 12 полей, а завтра придет умный дядя и скажет хочу информацию не раз в месяц а два раза!! и что мы будем делать  smile 
Можно конечно теоретически подогнать вторую и третью таблицу под одну, но мне кажется это лишнее (хотя как я понял сущности там практически единтичны) но в последствии теоретически могут возникнуть проблемы :(
так что лучше таблица для договорных данных и таблица для фактических. С записью даты (или двух дат начала и конца периода...)
и поиск потом по этому промежутку времени и коду предприятия по двум таблицам....

Во всяком случае это мое предложение....
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
Akina
Дата 27.8.2009, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



В вашей задаче есть 4 сущности:
Учреждение
Договор
Прибор
Показание
Вот от этого и пляшите. А если есть жёсткая связь одно учреждение == один договор, то сущностей вообще остаётся три.

Цитата(Nowichok @  27.8.2009,  15:26 Найти цитируемый пост)
Опыт работы есть, с сущносятми и нормализацией знаком. В данной ситуации я не вижу других  явных сущностей 

Гм... выделять дату в сущность... это же только атрибут сущности Показание.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Nowichok
Дата 30.8.2009, 05:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



2vladimir74
 Ваш ответ меня окончательно убедил. Вделаю поле даты. И пуст будет 4200 строк smile

Считаю вопрос решённым. Спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0856 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.