Создание базы данных для автопарка (“Машины”, “Механик”, “Ремонт”), страница 8

Добавление происходит следующим образом. Пользователь выбирает механика и машину из соответствующих списков, вводит дату и стоимость ремонта и нажимает на кнопку добавить. Таким образом, в таблицу может быть добавлен только ремонт уже существующей в базе данных машины существующим в базе данных механиком.

Функция Click кнопки “Добавить” (form_q11.Command1):

dimension arrval[4]      

arrval[1] = val(form_add_repair.ListCars.value)

arrval[2] = val(form_add_repair.ListMechs.value)

arrval[3] = val(form_add_repair.TextCost.text)

arrval[4] = date(val(form_add_repair.TextYear.text), val(form_add_repair.TextMonth.text),val(form_add_repair.TextDay.text))

select * from repairs into cursor cur where ;

                                    car_id = arrval[1] and cost = arrval[3] and ;

                                    repairs.date = arrval[4] and mech_id = arrval[2]

if reccount() > 0

            if MessageBox("Такой ремонт уже существует. Продолжить?",4+32)=7

            else

                        insert into repairs from array arrval

                        MessageBox("Ремонт успешно добавлен")

            endif

else                  

                        insert into repairs from array arrval

                        MessageBox("Ремонт успешно добавлен")

Endif

Добавление ремонта происходит по тому же алгоритму, что и добавление механика и автомобиля.

Просмотр сведений о ремонтах

Просмотр сведений об имеющихся в базе данных ремонтах осуществляется с помощью процедуры, вызываемой непосредственно из меню:

select cars.variety as Марка_машины, car_types.car_type as Тип_машины, mechanics.name as ФИО_механика,;

repair_types.rep_type as Вид_ремонта, repairs.date as Дата_ремонта, repairs.cost as Цена_ремонта from;

repairs inner join (mechanics inner join repair_types on mechanics.rep_id=repair_types.rep_id);

on repairs.mech_id=mechanics.mech_id;

inner join (cars inner join car_types on cars.car_type_id = car_types.car_type_id);

on repairs.car_id=cars.car_id order by repairs.data

Данный запрос объединяет все таблицы базы данных в одну и выводит некоторые поля полученной таблицы. В нем используются вложенные inner join, результаты которых являются аргументами для других inner join.

Результат запроса представлен на рис. 33.

Рис. 33. Результат запроса на просмотр сведений о ремонтах


4.  Выводы

В результате данной работы была создана база данных AutoDB, содержащая сведения о машинах, их ремонте и механиках. Доступ пользователя к базе данных осуществляется с помощью меню, которое содержит все необходимые команды. Были сделаны следующие выводы:

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

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

-  Иногда достаточно сложно организовать вывод данных в таблицу. В этом случае удобно использовать встроенные средства среды программирования, такие как MessageBox.

-  Использование меню позволяет определить диапазон действий, которые доступны пользователю. Формы помогают сделать работу с базой данных интуитивно понятной.

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