| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Access > Не могу определиться со структурой БД |
| Автор: Nowichok 27.8.2009, 13:48 |
| Нужна помощь знающих людей. Весь день голову ломаю. Пишу программу для работы с отчётностью по коммунальным услугам. Есть учреждения, есть договорные значения на каждон учреждение, есть фактические значения на каждое учреждение, есть информация о приборах учёта на каждое учр. Так вот. на КАЖДЫЙ МЕСЯЦ имеются данные: Договорные значения - 2 числа Фактические значения - 2 числа Приборы учёта - 5 или 6 чисел. В голове есть 2 варианта, какую структуру сделать у БД. Вариант № 1 : Делать 4 таблицы - Учреждение, Договор, Факт, Приборы_учёта. Тогда получим, что в Договоре и Факте будет по 2*12=24 поля (на все 12 месяцев). А в таблице приборов учёта 5*12=60 !!!!! Вариант № 2 : Делать на каждый месяц отдельную таблицу по Договору, Факту и Приборам_учёта. В каждой таблице будет по 2-5 чисел, НО кол-во таблиц в базе будет тоже приличное. Как быть ? Какой подход будет более разумным ? |
| Автор: vladimir74 27.8.2009, 13:58 |
| поля и темболее таблицы для месяцев создавать - не красиво, даже для MS Access :( предлагаю ввести дату. и читать/писать по дате... дальше не совсе понятно с Договорные значения и Фактические значения это как я понял 1- контора обязуется, 2- по факту у конторы обнаружили? Как воносятся эти данные вместе или раздельно? возможно их можно соединить в одну таблицу и сортировать по коду значения, или сделать два поля ... Приборы учёта - это что? какая связь с учетом самим? влюбом случае меньше редурдантных полей и таблиц решаются с помощью поля даты |
| Автор: Akina 27.8.2009, 14:08 |
Оба неразумны. Начните с минимального самообразования по теме "Нормализация баз данных". Затем выделите сущности своего процесса и на основе этих данных составляйте схему. |
| Автор: Nowichok 27.8.2009, 14:26 |
| 2vladimir74 А как можно реализовать работу через даты ? Вы имеет ввиду что-то вроде такой структуры (к примеру, Договора) Код_учр \\ Гкал \\ М_куб \\ дата (на какой месяц ?) имеется 350 учреждений. 350 записей такого рода - на один месяц. 350*12 = ...... Полей то меньше, а записей стала тьма. На НАЧАЛО ГОДА распеределяются ДОГОВОРные значения на каждое учреждение. Сколько по договору должно потратиться за каждый месяц (Гкал м_куб). В КОНЦЕ каждого МЕСЯЦА забиваются ФАКТические значения со счёт-фактур. Те же самые Гкал и М_куб. Приборы учёта говорят каждый месяц, сколько дней приборы отработали, сколько намотали, сколкьо стоимость обслуживания этих приборов за каждый месяц. От приборов учёта зависит, по какому методу счёт-фактура будет. ЭТо уже нюансы. 2Akina Опыт работы есть, с сущносятми и нормализацией знаком. В данной ситуации я не вижу других явных сущностей (кроме тех, что я выделил) (((( Может уже пора отдохнуть Либо ещё один вариант. Делать 12 таблиц. В каждой таблице будем инфа о коде учреждения, договорных значениях (2 числа) на этот месяц, фактических значениях (2 числа ), о приборах учёта (5 чисел). Таблиц - 12. Полей - от 10 и выше. В данном случае мне непривычно, что разнородная информация содержится в одном месте. Я уж привык - если договорные значения, то в ДОГОВОР. Если фактические - то в ФАКТ (я о таблицах) |
| Автор: Nowichok 27.8.2009, 19:03 |
| Отброшу лишнее и попытаемся разобраться: Есть таблица предприятий - верно. Код учр \\ наим-е учр-я \\ адресс \\ и т.п. Из этого нам нужен только Код_учр, по нему будем определять учреждение однозначно. ---------------------------- Есть таблица Договор - договорные значения к КАЖДОМУ учреждению на каждый месяц. Таблица создаётся в январе и, чаще всего, неизменна в течение года. Код учр. \\ ГКал \\ М_куб - образно такой формы значения. Т.е. если представить это в Excel'е, то после кода учр-я идёт 2*12=24 поля. За все 12 месяцев. Чем не таблица ? ---------------------------- Есть таблица ФАКТ - фактические значения к КАЖДОМУ учреждению на каждый месяц. Таблица изначально, ест-но, пуста. Каждый месяц приходят счёт-фактуры, и из них берётся та же информация (цифры ток другие могут быть) и заносится. Код учр. \\ ГКал \\ М_куб - образно такой формы значения. На этом этапе оператор сравнивает фактические значения с договорными. Если не совпадают - разбирается. Это я к тому, зачем нужны вообще эти таблицы. -------------------------- Есть таблица Приборы учёта. ТОчнее таблицы пока даже нет. Есть информция - каждый месяц на КАЖДОЕ учреждение пишется, чколько дней отработал счётчик, какие показания (Гкал и м_куб) он дал, какова стоимость его обслуживанияв этом месяце. Код учр. \\ кол_во отр-х дней в этом месяце \\ кол-во доработанных дней в предыдущем месяце (т.к. значения счётчик показывает с 20е число по 20е число, т.е. 2 месяца захватывает) \\ ГКал \\ М_куб \\ сумма_за обслуживание счётчика - образно такой формы значения. 5-6 полей. За 12 месяцев получаем в Excel'ском файле 12*5=60 полей. Теперь КАК это по порядку происходит. Каждый месяц в 15-17х числах оператор получает данные сначала О СЧЁТЧИКАХ. Забивает (куда-то ). Если не сильно превышает - заносим в ФАКТ значения Гкал и М_куб. Если сильно превышает - оператор разбирается, почему такое число Всё описал. Краткая схема. После этого там ещё заморочек хватает. Но пока с этим разобраться. Вот КАК это реализовать ?? Все идеи с введением ПОЛЯ ДАТЫ вконечном итоге приведут к тому, что на каждое учреждение должно быть несколько записей. В худшем случае 350*12= 4200 записей. |
| Автор: vladimir74 27.8.2009, 19:20 | ||
ну и да ничего страшного нет в колличестве записей, намного страшнее колличество ненужных полей и таблиц... ты же потом будешь вытаскивать только нужную тебе информацию (притом из расчета код предпиятия+дата) вот и строй структуру изначально пож это... а то ты сейчас нарисуешь 12 полей, а завтра придет умный дядя и скажет хочу информацию не раз в месяц а два раза!! и что мы будем делать Можно конечно теоретически подогнать вторую и третью таблицу под одну, но мне кажется это лишнее (хотя как я понял сущности там практически единтичны) но в последствии теоретически могут возникнуть проблемы :( так что лучше таблица для договорных данных и таблица для фактических. С записью даты (или двух дат начала и конца периода...) и поиск потом по этому промежутку времени и коду предприятия по двум таблицам.... Во всяком случае это мое предложение.... |
| Автор: Akina 27.8.2009, 21:13 | ||
| В вашей задаче есть 4 сущности: Учреждение Договор Прибор Показание Вот от этого и пляшите. А если есть жёсткая связь одно учреждение == один договор, то сущностей вообще остаётся три.
Гм... выделять дату в сущность... это же только атрибут сущности Показание. |
| Автор: Nowichok 30.8.2009, 05:50 |
| 2vladimir74 Ваш ответ меня окончательно убедил. Вделаю поле даты. И пуст будет 4200 строк Считаю вопрос решённым. Спасибо |