![]() |
|
![]() ![]() ![]() |
|
Мелкий |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
Меня попросили создать БД по кварплате. Создать базы вообщето не проблема. Единственная проблема как их организовать. Можно конечно записать все в одну таблицу. Но это несерьезно. Вообщем объясню проблему. Есть база с данными улиц, домов, квартир (постоянная). Должны быть и другие с именами жильцов, тарифов на данный вид услуг, задолжности, показатели (переменные). Т.е в течении месяца может менятся тариф, менятся жильцы. Каким образом организовать базу данных? Создавать на каждый день новую БД, а потом расчет вести по всем созданным базам? Если есть какая нибудь идея?
|
|||
|
||||
lexsedrex |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 25.5.2006 Репутация: нет Всего: нет |
советовал бы зделать первую таблицу с адресами домов, где адрес домов - ключь, туда же лепиш номер квартиры.
вторая таблица с расчеткой и прочей инфой, где через код адрес дома и номер квартиры связаный с первой таблицей. получаеш каскад, и все хорошо. если чтото не удастся, мыль на маил.ру по адресу to_moe_mulo(on)mail.ru в суботу буду свободен и сделаю |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
Мелкий, есть такие понятия, как нормализация и нормальная форма. Ссылку не кину. Поискай в Википедии. Так вот, в одну таблицу или таблицу по дням пихать всё записи не надо однозначно. А о структуре можно говорить, только если ты дашь данные и связи между ними... Типа этого:
Информация о платильщике влючает в себя данные о адресе(город, улица, дом, квартира, комната, номер койки от двери). Информация о оплате услуги(услуга, уровень оплаты, задолженность). Услуг одному жильцу может предоставляться несколько и количество неограничено. Соответственно, и данных об оплате может быть неограниченное количество. Данные об услуге: название, тариф, льгота. Если льгот по тарифам может быть несколько(не вижу причины, почему бы не было так), то информация о льготе заключается в указании услуги, к которой относится льгота, и процентном выражении льготы. Так? Или не так? Если так - тогда будем думать дальше. Информация о платильщике имеет целостный характер? Один человек(не в отношении ФИО, а в отношении идентификатора платильщика) может проживать в нескольких квартирах(числиться платильщиком)? Нет? Тогда база, хранящая информация о платильщике должна быть целостной(улицы и города надо бы вынести в отдельную базу, чтоб избежать дублирования хранимой информации): <идентификатор платильщика> <фамиилия> <имя> <отчество> <идентификатор города> <идентификатор улицы> <номер дома> <номер квартиры> Таблица городов: <идентификатор города> <название города> Таблица улиц: <идентификатор улиц> <название улицы> Таблица информации об услуге: <идентификатор услуги> <наимеование> <тариф> Таблица льгот(включает в себя строку "без льготы"): <идентификатор льготы> <идентификатор услуги> <наименование> <скидка> <флаг, отображающий, процентная относительная скидка или абсолютная> Таблица текущий тарифов: <идентификатор платильщика> <идентификатор льготы> <идентификатор услуги> Тут спорный момент. С одной стороны, без третьего столбца в этой таблице вполне можно обойтись. С другой стороны, для этой таблицы именно сочетание 1 и 3 столбца является уникальным и адекватным - если делать ключ по связке перого и второго столбца, то: - возможна ситуация, когда один платильщик будет "подписан" на разные льготы одной и той же услуги одновременно и это не проконтролируешь - чтоб определить величину требуемой оплаты, придетёся проходить через таблицу льгот, в которой ключом является идентификатор льготы, а поле идентификатора услуги неключевое - это даст некоторое замедление при обработке больших массивов информаии. Таблица оплат: <идентификатор записи(автоинкремент)> <идентификатор платильщика> <идентификатор услуги> <дата оплаты> <величина оплаты> добавлено @9.41(Лондон + 2.00 ![]() В таблице текущих тарифов надо(можно) вставить поле текущего состояния дел - баланса: Таблица текущий тарифов: <идентификатор платильщика> <идентификатор льготы> <идентификатор услуги> <текущий баланс> Тогда в начале месяца будем уменьшать баланс на величину требуемой оплаты, а при оплате - увеличивать на величину уплоченных бумажек. Это сообщение отредактировал(а) skyboy - 25.5.2006, 09:44 |
|||
|
||||
SergeBS |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
lexsedrex,
Громко сказано. Рекомендую почитать "Введение в базы данных" Алексей Федоров, Наталия Елманова. Прочтешь - дозреешь до более серьезных книжек типа Дейта, Ульмана. Мелкий,
Если это единственная проблема, то не берись за эту задачу. Это у тебя ГЛАВНАЯ ПРОБЛЕМА. И задачу ты не решишь - по подсказкам такие проекты не делаются, тут самому разбираться надо. |
||||
|
|||||
SergeBS |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
skyboy,
Ну однако сколько написал. Мне бы лень было. НО толку - 0, поскольку: 1. Если некая контора желает сэкономить и получить решение от вчерашнего студента - флаг в руки. им же хуже будет. В России такие проекты стоят минимум 300000 р. (я знаю, о чем говорю - сам в подобном проекте завязан). Вообще-то есть куча мест, где такую задачу уже решили. Для себя. 2. Бесполезно дистанционно давать шпаргалки. Тут не экзамен. Сам не знаешь - провалишь. 3. Специфики задачи ты не знаешь. Примеры: 1. на самом деле льготы бывают разные: а) на определенный метраж - скидка 50%, дальше - 100%. Пример - ветеран. б) распространяющаяся на всю семью на всю услугу. Пример - многодетные. .. и т.д. Т.е. в семье может быть несколько льготников и потому привязывать льготу к тарифу - невозможно. Льгота привязывается к категории льготника, а уже в категории - на какую услугу - какая льгота. И суммируем по всей семье. 3 месяца убил, пока заработало. ![]() У меня в справочнике льготных категорий - 20. Потому что льготы еще существенно зависят от наличия/отсутствия лифта, газа, горячей воды. А еще есть частные дома - совсем отдельная песня, например льгота на дрова (раз в год - заготовка к отопительному сезону). Тут вообще башню снесет ![]() 2. количество услуг принципиально ограничено. В месяц их можно иметь ну максимум 7. Остальные - на квартплату не влияют (например телефон, кабельное ТВ ...) - отдельные конторы никак как правило с ЖЭУ не связанные. Ну еще по мелочам: улица должна иметь привязку к городу, поскольку например улица Строителей и проспект Строителей есть в любом городе с населением от 100 тыс. И т.п. Короче, структура твоя - ни к черту. Не так это делается. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
||||
|
||||
Мелкий |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 10.4.2006 Репутация: нет Всего: нет |
SergeBS Можно узнать Ваш вариант. Я не прошу полностью расказать. Просто направьте. Мне нужно всего лишь знать как можно построить структуру программы. Каким образом БД и какие Бд должны взаимодействовать друг с другом
|
|||
|
||||
SergeBS |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
skyboy,
Без обид, лады? Просто я этим 3-й год занимаюсь, потому и знаю. Мелкий, Ну вот на затравку кусочек:
Вот направление. А дальше - карандашик, листочек, разобраться с тем, что такое "сущность" и что такое "связи". Один раз потратить на это кучку времени - это окупится. Сэкономит дальше оччень много. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |