Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание БД, помогите 
:(
    Опции темы
Мелкий
Дата 25.5.2006, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Меня попросили создать БД по кварплате. Создать базы вообщето не проблема. Единственная проблема как их организовать. Можно конечно записать все в одну таблицу. Но это несерьезно. Вообщем объясню проблему. Есть база с данными улиц, домов, квартир (постоянная). Должны быть и другие с именами жильцов, тарифов на данный вид услуг, задолжности, показатели (переменные). Т.е в течении месяца может менятся тариф, менятся жильцы. Каким образом организовать базу данных? Создавать на каждый день новую БД, а потом расчет вести по всем созданным базам? Если есть какая нибудь идея? 
PM MAIL   Вверх
lexsedrex
Дата 25.5.2006, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

если чтото не удастся, мыль на маил.ру по адресу to_moe_mulo(on)mail.ru
в суботу буду свободен и сделаю 
PM MAIL   Вверх
skyboy
Дата 25.5.2006, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Мелкий, есть такие понятия, как нормализация и нормальная форма. Ссылку не кину. Поискай в Википедии. Так вот, в одну таблицу или таблицу по дням пихать всё записи не надо однозначно. А о структуре можно говорить, только если ты дашь данные и связи между ними... Типа этого:
Информация о платильщике влючает в себя данные о адресе(город, улица, дом, квартира, комната, номер койки от двери).
Информация о оплате услуги(услуга, уровень оплаты, задолженность).
Услуг одному жильцу может предоставляться несколько и количество неограничено. Соответственно, и данных об оплате может быть неограниченное количество.
Данные об услуге: название, тариф, льгота.
Если льгот по тарифам может быть несколько(не вижу причины, почему бы не было так), то информация о льготе заключается в указании услуги, к которой относится льгота, и процентном выражении льготы.
Так? Или не так? Если так - тогда будем думать дальше.
Информация о платильщике имеет целостный характер? Один человек(не в отношении ФИО, а в  отношении идентификатора платильщика) может проживать в нескольких квартирах(числиться платильщиком)? Нет? Тогда база, хранящая информация о платильщике должна быть целостной(улицы и города надо бы вынести в отдельную базу, чтоб избежать дублирования хранимой информации):
<идентификатор платильщика> <фамиилия> <имя> <отчество> <идентификатор города> <идентификатор улицы> <номер дома> <номер квартиры>
Таблица городов:
<идентификатор города> <название города>
Таблица улиц: 
<идентификатор улиц> <название улицы>
Таблица информации об услуге:
<идентификатор услуги> <наимеование> <тариф>
Таблица льгот(включает в себя строку "без льготы"):
<идентификатор льготы> <идентификатор услуги> <наименование> <скидка> <флаг, отображающий, процентная относительная скидка или абсолютная>
Таблица текущий тарифов:
<идентификатор платильщика> <идентификатор льготы> <идентификатор услуги>
Тут спорный момент. С одной стороны, без третьего столбца в этой таблице вполне можно обойтись. С другой стороны, для этой таблицы именно сочетание 1 и 3 столбца является уникальным и адекватным - если делать ключ по связке перого и второго столбца, то:
- возможна ситуация, когда один платильщик будет "подписан" на разные льготы одной и той же услуги одновременно и это не проконтролируешь
- чтоб определить величину требуемой оплаты, придетёся проходить через таблицу льгот, в которой ключом является идентификатор льготы, а поле идентификатора услуги неключевое - это даст некоторое замедление при обработке больших массивов информаии.
Таблица оплат:
<идентификатор записи(автоинкремент)> <идентификатор платильщика> <идентификатор услуги> <дата оплаты> <величина оплаты> 
добавлено @9.41(Лондон + 2.00 smile)
В таблице текущих тарифов надо(можно) вставить поле текущего состояния дел - баланса:
Таблица текущий тарифов:
<идентификатор платильщика> <идентификатор льготы> <идентификатор услуги> <текущий баланс>
Тогда в начале месяца будем уменьшать баланс на величину требуемой оплаты, а при оплате - увеличивать на величину уплоченных бумажек.
 

Это сообщение отредактировал(а) skyboy - 25.5.2006, 09:44
PM MAIL   Вверх
SergeBS
Дата 25.5.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

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



lexsedrex
Цитата
в суботу буду свободен и сделаю  

Громко сказано. Рекомендую почитать 
"Введение в базы данных" Алексей Федоров, Наталия Елманова. Прочтешь - дозреешь до более серьезных книжек типа Дейта, Ульмана. 

Мелкий
Цитата
 Меня попросили создать БД по кварплате. Создать базы вообщето не проблема. Единственная проблема как их организовать.

Если это единственная проблема, то не берись за эту задачу. Это у тебя ГЛАВНАЯ ПРОБЛЕМА. И задачу ты не решишь - по подсказкам такие проекты не делаются, тут самому разбираться надо. 
PM MAIL   Вверх
SergeBS
Дата 25.5.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

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



skyboy
Ну однако сколько написал. Мне бы лень было. НО толку - 0, поскольку: 
1. Если некая контора желает сэкономить и получить решение от вчерашнего студента - флаг в руки. им же хуже будет. В России такие проекты стоят минимум 300000 р. (я знаю, о чем говорю - сам в подобном проекте завязан). Вообще-то есть куча мест, где такую задачу уже решили. Для себя.
2. Бесполезно дистанционно давать шпаргалки. Тут не экзамен. Сам не знаешь - провалишь.
3. Специфики задачи ты не знаешь. Примеры: 
1. на самом деле льготы бывают разные:
а) на определенный метраж - скидка 50%, дальше - 100%. Пример - ветеран.
б) распространяющаяся на всю семью на всю услугу. Пример - многодетные.
.. и т.д. Т.е. в семье может быть несколько льготников и потому привязывать льготу к тарифу - невозможно. Льгота привязывается к категории льготника, а уже в категории - на какую услугу - какая льгота. И суммируем по всей семье. 3 месяца убил, пока заработало. smile
У меня в справочнике льготных категорий - 20. Потому что льготы еще существенно зависят от наличия/отсутствия лифта, газа, горячей воды. А еще есть частные дома - совсем отдельная песня, например льгота на дрова (раз в год - заготовка к отопительному сезону). Тут вообще башню снесет smile
2. количество услуг принципиально ограничено. В месяц их можно иметь ну максимум 7. Остальные - на квартплату не влияют (например телефон, кабельное ТВ ...) - отдельные конторы никак как правило с ЖЭУ не связанные.
Ну еще по мелочам: улица должна иметь привязку к городу, поскольку например улица Строителей и проспект Строителей есть в любом городе с населением от 100 тыс. И т.п.
Короче, структура твоя - ни к черту. Не так это делается. 
PM MAIL   Вверх
skyboy
Дата 25.5.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(SergeBS @  25.5.2006,  17:21 Найти цитируемый пост)
 структура твоя - ни к черту
спасибо smile
 
PM MAIL   Вверх
Мелкий
Дата 29.5.2006, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



SergeBS Можно узнать Ваш вариант. Я не прошу полностью расказать. Просто направьте. Мне нужно всего лишь знать как можно построить структуру программы. Каким образом БД и какие Бд должны взаимодействовать друг с другом 
PM MAIL   Вверх
SergeBS
Дата 29.5.2006, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

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



skyboy
Без обид, лады? Просто я этим 3-й год занимаюсь, потому и знаю.

Мелкий
Ну вот на затравку кусочек:
Цитата

Базы всякие нужны, базы всякие важны…

Давно назад, когда компьютеры, даже самые маленькие, по размерам превосходили документацию на их софт, после решения задачи как что-то на них посчитать начали решать задачу как что-то в них хранить и искать. И решали с разной степени успешностью. С той поры были наработаны как практические, так и теоретические методики. Если коротко: от просто таблиц перешли к инвертированным спискам, древовидным и сетевым базам, от них – к реляционным и постреляционным. А сейчас уже вовсю идет соревнование в объектно-ориентированных технологиях, т.е. когда предмет разработки  - не только данные, но и процессы их обработки несколькими взаимосвязанными объектами (например пассажир-кассир-пилот-авиадиспетчер…). И все это держится в первую очередь на такой простой, если разобраться, вещи как нормальные формы(НФ). Которые есть всего-навсего набор правил, что нужно сделать, чтобы необходимые данные хранились наиболее эффективно и изменение их качественного состава было как можно проще. Не зная, что такое НФ, можно, конечно, что-то сделать. И это что-то даже будет работать, совсем даже не исключено. Только вот чем дальше, тем больше времени и сил будет уходить на внесение любых, даже чисто косметических изменений этого «что-то». И в конце концов это «что-то», испортив кучу нервов окружающим, будет выкинуто. Вывод: если человек не знает, что такое эти НФ, то проектировать базы данных(БД) он просто не имеет права. И никакие крики о том, что «иначе уволят», «нужно срочно» и т.п. оправданием не будут. Поскольку все равно уволят, а быстрее все равно не получится. В особо печальных случаях уволят не автора, а его преемника - если автор успеет сменить место работы на более оплачиваемое. Ну ладно, не будем о грустном. Лучше почитаем Дейта «Введение в системы баз данных», или Райордан «Основы реляционных баз данных», или еще кого-нибудь. Главное чтобы на обложке или внутри было что-то похожее. Дейт вообще-то полезнее, поскольку уже давно записан в классики. Но кто-то любит коньяк, а кто-то «горилку з перцем». 

Вот направление. А дальше - карандашик, листочек, разобраться с тем, что такое "сущность" и что такое "связи". Один раз потратить на это кучку времени - это окупится. Сэкономит дальше оччень много. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


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

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


 




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


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

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