![]() |
|
Модераторы: Akina |
![]()
|
|
| Nowichok |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 23.11.2006 Репутация: нет Всего: нет |
Нужна помощь знающих людей. Весь день голову ломаю.
Пишу программу для работы с отчётностью по коммунальным услугам. Есть учреждения, есть договорные значения на каждон учреждение, есть фактические значения на каждое учреждение, есть информация о приборах учёта на каждое учр. Так вот. на КАЖДЫЙ МЕСЯЦ имеются данные: Договорные значения - 2 числа Фактические значения - 2 числа Приборы учёта - 5 или 6 чисел. В голове есть 2 варианта, какую структуру сделать у БД. Вариант № 1 : Делать 4 таблицы - Учреждение, Договор, Факт, Приборы_учёта. Тогда получим, что в Договоре и Факте будет по 2*12=24 поля (на все 12 месяцев). А в таблице приборов учёта 5*12=60 !!!!! Вариант № 2 : Делать на каждый месяц отдельную таблицу по Договору, Факту и Приборам_учёта. В каждой таблице будет по 2-5 чисел, НО кол-во таблиц в базе будет тоже приличное. Как быть ? Какой подход будет более разумным ? |
|||
|
||||
| vladimir74 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 28.11.2006 Репутация: нет Всего: 3 |
поля и темболее таблицы для месяцев создавать - не красиво, даже для MS Access :(
предлагаю ввести дату. и читать/писать по дате... дальше не совсе понятно с Договорные значения и Фактические значения это как я понял 1- контора обязуется, 2- по факту у конторы обнаружили? Как воносятся эти данные вместе или раздельно? возможно их можно соединить в одну таблицу и сортировать по коду значения, или сделать два поля ... Приборы учёта - это что? какая связь с учетом самим? влюбом случае меньше редурдантных полей и таблиц решаются с помощью поля даты --------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Оба неразумны. Начните с минимального самообразования по теме "Нормализация баз данных". Затем выделите сущности своего процесса и на основе этих данных составляйте схему. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Nowichok |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 23.11.2006 Репутация: нет Всего: нет |
2vladimir74
А как можно реализовать работу через даты ? Вы имеет ввиду что-то вроде такой структуры (к примеру, Договора) Код_учр \\ Гкал \\ М_куб \\ дата (на какой месяц ?) имеется 350 учреждений. 350 записей такого рода - на один месяц. 350*12 = ...... Полей то меньше, а записей стала тьма. На НАЧАЛО ГОДА распеределяются ДОГОВОРные значения на каждое учреждение. Сколько по договору должно потратиться за каждый месяц (Гкал м_куб). В КОНЦЕ каждого МЕСЯЦА забиваются ФАКТические значения со счёт-фактур. Те же самые Гкал и М_куб. Приборы учёта говорят каждый месяц, сколько дней приборы отработали, сколько намотали, сколкьо стоимость обслуживания этих приборов за каждый месяц. От приборов учёта зависит, по какому методу счёт-фактура будет. ЭТо уже нюансы. 2Akina Опыт работы есть, с сущносятми и нормализацией знаком. В данной ситуации я не вижу других явных сущностей (кроме тех, что я выделил) (((( Может уже пора отдохнуть Либо ещё один вариант. Делать 12 таблиц. В каждой таблице будем инфа о коде учреждения, договорных значениях (2 числа) на этот месяц, фактических значениях (2 числа ), о приборах учёта (5 чисел). Таблиц - 12. Полей - от 10 и выше. В данном случае мне непривычно, что разнородная информация содержится в одном месте. Я уж привык - если договорные значения, то в ДОГОВОР. Если фактические - то в ФАКТ (я о таблицах) Это сообщение отредактировал(а) Nowichok - 27.8.2009, 14:30 |
|||
|
||||
| vladimir74 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 28.11.2006 Репутация: нет Всего: 3 |
я пока сильно плаваю в твоей задаче, но 1. есть таблица предприятий 2. таблица приходящих значений код предприятия, данные, дата снятия значений с договорными данными - тут в зависимости как оно приходит и считается если за год, то возможно стоит ввести третью таблицу, опять же с датой договора и сроком договора. потом можно просчитать как обстоит дело у предприятия за данный период из таблицы 3 по данным таблицы 2. (Это пример, т.к. я не совсем знаю задачу) --------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ. |
|||
|
||||
| Nowichok |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 23.11.2006 Репутация: нет Всего: нет |
Отброшу лишнее и попытаемся разобраться:
Есть таблица предприятий - верно. Код учр \\ наим-е учр-я \\ адресс \\ и т.п. Из этого нам нужен только Код_учр, по нему будем определять учреждение однозначно. ---------------------------- Есть таблица Договор - договорные значения к КАЖДОМУ учреждению на каждый месяц. Таблица создаётся в январе и, чаще всего, неизменна в течение года. Код учр. \\ ГКал \\ М_куб - образно такой формы значения. Т.е. если представить это в Excel'е, то после кода учр-я идёт 2*12=24 поля. За все 12 месяцев. Чем не таблица ? ---------------------------- Есть таблица ФАКТ - фактические значения к КАЖДОМУ учреждению на каждый месяц. Таблица изначально, ест-но, пуста. Каждый месяц приходят счёт-фактуры, и из них берётся та же информация (цифры ток другие могут быть) и заносится. Код учр. \\ ГКал \\ М_куб - образно такой формы значения. На этом этапе оператор сравнивает фактические значения с договорными. Если не совпадают - разбирается. Это я к тому, зачем нужны вообще эти таблицы. -------------------------- Есть таблица Приборы учёта. ТОчнее таблицы пока даже нет. Есть информция - каждый месяц на КАЖДОЕ учреждение пишется, чколько дней отработал счётчик, какие показания (Гкал и м_куб) он дал, какова стоимость его обслуживанияв этом месяце. Код учр. \\ кол_во отр-х дней в этом месяце \\ кол-во доработанных дней в предыдущем месяце (т.к. значения счётчик показывает с 20е число по 20е число, т.е. 2 месяца захватывает) \\ ГКал \\ М_куб \\ сумма_за обслуживание счётчика - образно такой формы значения. 5-6 полей. За 12 месяцев получаем в Excel'ском файле 12*5=60 полей. Теперь КАК это по порядку происходит. Каждый месяц в 15-17х числах оператор получает данные сначала О СЧЁТЧИКАХ. Забивает (куда-то ). Если не сильно превышает - заносим в ФАКТ значения Гкал и М_куб. Если сильно превышает - оператор разбирается, почему такое число Всё описал. Краткая схема. После этого там ещё заморочек хватает. Но пока с этим разобраться. Вот КАК это реализовать ?? Все идеи с введением ПОЛЯ ДАТЫ вконечном итоге приведут к тому, что на каждое учреждение должно быть несколько записей. В худшем случае 350*12= 4200 записей. Это сообщение отредактировал(а) Nowichok - 27.8.2009, 19:17 |
|||
|
||||
| vladimir74 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 28.11.2006 Репутация: нет Всего: 3 |
ну и да ничего страшного нет в колличестве записей, намного страшнее колличество ненужных полей и таблиц... ты же потом будешь вытаскивать только нужную тебе информацию (притом из расчета код предпиятия+дата) вот и строй структуру изначально пож это... а то ты сейчас нарисуешь 12 полей, а завтра придет умный дядя и скажет хочу информацию не раз в месяц а два раза!! и что мы будем делать Можно конечно теоретически подогнать вторую и третью таблицу под одну, но мне кажется это лишнее (хотя как я понял сущности там практически единтичны) но в последствии теоретически могут возникнуть проблемы :( так что лучше таблица для договорных данных и таблица для фактических. С записью даты (или двух дат начала и конца периода...) и поиск потом по этому промежутку времени и коду предприятия по двум таблицам.... Во всяком случае это мое предложение.... --------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
В вашей задаче есть 4 сущности:
Учреждение Договор Прибор Показание Вот от этого и пляшите. А если есть жёсткая связь одно учреждение == один договор, то сущностей вообще остаётся три.
Гм... выделять дату в сущность... это же только атрибут сущности Показание. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Nowichok |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 23.11.2006 Репутация: нет Всего: нет |
2vladimir74
Ваш ответ меня окончательно убедил. Вделаю поле даты. И пуст будет 4200 строк Считаю вопрос решённым. Спасибо |
|||
|
||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |