Автор работы: Пользователь скрыл имя, 28 Апреля 2015 в 19:05, курсовая работа
Базы данных нужны человеку для систематизации своих знаний. На основе этой систематизации он может создать новые знания. Так или иначе, любая база данных служит человеку именно для описания происшедших в прошлом событий и на основе знания этих событий помогает принять то или иное решение на будущее. Поясним эту мысль примерами. Начнем с простых случаев. К примеру, описание склада необходимо для знания наличия на складе товаров на основе ввода движения товара на склад и со склада. Иначе, человеку пришлось бы постоянно сверяться с реальным наличием, т.е. пересчитывать товар по-нескольку раз на день перед выписыванием исходящей накладной. Как дополнительная и нужная функция может рассматриваться возможность статистического анализа расхода товара со склада по месяцам. К примеру, есть сезонные колебания расхода медикаментов. На основе таких наблюдений можно прогнозировать план закупок.
Введение
1. Обзор возможностей Visual Foxpro
2. Обзор базовых классов и элементов управления Microsoft Visual Foxpro
3. Описание функций и возможностей языка SQL
4. Постановка задачи
5. Руководство пользователя
Заключение
Список использованных источников
Приложение 1. Листинг программы
Запросы и операторы манипулирования данными
Как известно, двумя фундаментальными языками запросов к реляционным БД являются языки реляционной алгебры и реляционного исчисления. При всей своей строгости и теоретической обоснованности эти языки редко используются в современных реляционных СУБД в качестве средств пользовательского интерфейса. Запросы на этих языках трудно формулировать и понимать. SQL представляет собой некоторую комбинацию реляционного исчисления кортежей и реляционной алгебры, причем до сих пор нет общего согласия, к какому из классических языков он ближе. При этом возможности SQL шире, чем у этих базовых реляционных языков, в частности, в общем случае невозможна трансляция запроса, сформулированного на SQL, в выражение реляционной алгебры, требуется некоторое ее расширение.
Существенными свойствами подъязыка запросов SQL являются возможность простого формулирования запросов с соединениями нескольких отношений и использование вложенных подзапросов в предикатах выборки. Вообще говоря, одновременное наличие обоих средств избыточно, но это дает пользователю при формулиро-вании запроса возможность выбора более понятного ему варианта.
В предикатах со вложенными подзапросами в SQL System R можно употреблять теретико-множественные операторы сравнения, что позволяет формулировать квантифицированные запросы (эти возможности обычно труднее всего понимаются пользователями и поэтому в дальнейшем в SQL появились явно квантифицируемые предикаты).
Существенной особенностью SQL является возможность указания в запросе потребности группирования отношения-результата по указанным полям с поддержкой условий выборки на всю группу целиком. Такие условия выборки могут содержать агрегатные функции, вычисляемые на группе. Эта возможность SQL главным образом отличает этот язык от языков реляционной алгебры и реляционного исчисления, не содержащих аналогичных средств.
Еще одним отличием SQL является необязательное удаление кортежей-дубликатов в окончательном или промежуточных отношениях-результатах. Строго говоря, результатом оператора выборки в языке SQL является не отношение, а мультимножество кортежей. В тех случаях, когда семантика запроса требует наличия отношения, уничтожение дубликатов производится неявно.
Самый общий вид запроса на языке SQL представляет теоретико-множественное алгебраическое выражение, составленное из элементарных запросов. В SQL System R допускались все базовые теретико-множественные операции (UNION, INTERSECT и MINUS).
Работа с неопределенными значениями в SQL System R до конца продумана не была, хотя неявно предполагалось использование трехзначной логики при вычислении логических выражений.
Операторы манипулирования данными UPDATE и DELETE построены на тех же принципах, что и оператор выборки данных SELECT. Набор кортежей указанного отношения, подлежащих модификации или удалению, определяется входящим в соответствующий оператор логическим выражением, которое может включать сложные предикаты, в том числе и с вложенными подзапросами.
В операторе вставки кортежа(ей) в указанное отношение заносимый кортеж может задаваться как в литеральной форме, так и с помощью внутреннего подоператора выборки.
Представления базы данных
В языке допускалось использование хранимых отношений БД и представляемых отношений. Наиболее удачным решением было использование для определения представлений общего аппарата операторов выборки. Любой оператор выборки может быть использован для определения представления.
В языке отсутствуют какие-либо ограничения по поводу использования представлений: в любом операторе SQL, в котором допускается использование имени хранимого отношения, допускается и использование имени представления. В SQL System R ничего не говорится о рекомендуемом способе реализации доступа к представлениям, но при любом способе эффект должен быть таким, как если бы выполнить полную материализацию представления до выполнения оператора.
Массу проблем, исследований и предложений породила потенциальная возможность выполнения операторов манипулирования данными над представлениями. Понятно, что эта возможность легко реализуема для простых представлений, но в более сложных случаях не только реализация, но и семантика операций становится нетривиальной. Кстати, в System R операторы манипулирования данными допускались только над простыми представлениями.
Определение управляющих структур
Внесение в реляционный язык, каким является SQL, явных операторов порождения и уничтожения структур физического уровня, поддерживающих эффективное выполнение запросов к БД, явилось в SQL System R чисто прагматическим решением, обеспечивающим возможность всех видов работ с БД с помощью одного языка.
В SQL System R упоминаются два вида таких структур: индексы и связи (links). Индекс в его абстрактном языковом представлении - это инвертированный файл, обеспечивающий доступ к кортежам соответствующего отношения на основе заданных значений одного или нескольких столбцов, составляющих ключ индекса. Операторы языка позволяли создавать и уничтожать индексы, но никаким образом не давали возможности явно указать на необходимость использования существующего индекса при выполнении оператора выборки, решение об этом возлагалось на реализацию.
С помощью оператора определения индекса можно было выразить два дополнительных утверждения, касающихся логической схемы отношения и физической структуры его хранения. Использование при определении индекса ключевого слова UNIQUE означало, что ключ этого индекса является возможным ключом соответствующего отношения. Фактически это означает наличие дополнительного механизма определения ограничения целостности отношения. Один из индексов для данного отношения мог быть определен с ключевым словом CLUSTERING. Это означает требование физической кластеризации во внешней памяти кортежей отношения с равными или близкими значениями ключа индекса.
Операторы определения связи позволяли в стиле сетевой модели данных организовать во внешней памяти списки кортежей указанного отношения. Как и в случае индексов, операторы позволяли создавать и уничтожать такие списки, но не давали возможности явно указать на необходимость использования существующих списков при выполнении операторов выборки. Большая трудоемкость поддержания списков при выполнении операторов манипулирования данными и трудность выполнения оценок стоимости их использования при выполнении операторов выборки привели к тому, что механизм связей исчез из языка уже на поздней стадии проекта System R. С тех пор этот механизм, насколько нам известно, не появлялся ни в одном варианте SQL.
Встроенный SQL
В SQL System R присутствуют специальные операторы, поддерживающие встраивание операторов SQL в традиционные языки программирования (в System R основным таким языком был PL/1).
Основная проблема встраивания SQL в язык программирования состояла в том, что SQL - реляционный язык, т.е. его операторы большей частью работают со множествами, в то время как в языках программирования основными являются скалярные операции. Решение SQL состоит в том, что в язык дополнительно включаются операторы, обеспечивающие покортежный доступ к результату запроса к БД.
Для этого в язык вводится понятие курсора, с которым связывается оператор выборки. Над определенным курсором можно выполнять оператор OPEN, означающий материализацию отношения-результата запроса, оператор FETCH, позволяющий выбрать очередной кортеж результирующего отношения в память программы, и оператор CLOSE, означающий конец работы с данным курсором.
Дополнительную гибкость при создании прикладных программ со встроенным SQL обеспечивает возможность параметризации операторов SQL значениями переменных включающей программы.
Динамический SQL
Для упрощения создания интерактивных SQL-ориентированных систем в SQL System R были включены операторы, позволяющие во время выполнения транзакции откомпилировать и выполнить любой оператор SQL.
Оператор PREPARE вызывает динамическую компиляцию оператора SQL, текст которого содержится в указанной переменной-символьной строке включающей программы. Текст может быть помещен в переменную при выполнении программы любым допустимым способом, например, введен с терминала.
Оператор DESCRIBE служит для получения информации об указанном операторе SQL, ранее подготовленном с помощью оператора PREPARE. C помощью этого оператора можно узнать, во-первых, является ли подготовленный оператор оператором выборки, и во-вторых, если это оператор выборки, получить полную информацию о числе и типах столбцов результирующего отношения.
Для выполнения ранее подготовленного оператора SQL, не являющегося оператором выборки, служит оператор EXECUTE. Для выполнения динамически подготовленного оператора выборки используется аппарат курсоров с некоторыми отличиями по части задания адресов переменных включающей программы, в которые должны быть помещены значения столбцов текущего кортежа результата.
Подводя итог приведенному краткому описанию основных черт SQL System R, отметим, что несмотря на недостаточную техническую проработку, в идейном отношении язык содержал все необходимые средства, позволяющие использовать его как базовый язык СУБД
4. Постановка задачи
СУБД менеджера по продажам комплектующих должна выполнять функции облегчающие работу с перечнем комплектующих, имеющихся на складе фирмы. Программа должна выполнять поиск необходимых комплектующих с заданными параметрами. Необходимо предусмотреть вывод всех наименований изделий, добавление записей в базу данных, удаление записей, а также редактирование записей. При выводе всех наименований требуется осуществить сортировку по всем отображаемым полям. Структура базы данных должна быть идентична структуре прайс-листов компьютерных фирм г. Минска. В качестве примера выступает прайс-лист фирмы «Конструктив».
Комплектующие характеризуются следующими параметрами:
Раздел – наименование изделия.
Позиция – информация о производителе и модели изделия.
Характеристики - дополнительные параметры.
Гарантия – гарантийный срок эксплуатации изделия.
Розничная цена.
Мелкооптовая цена.
Оптовая цена.
Три последних поля введены из-за необходимости работы фирмы с различными клиентами.
Программа должна осуществлять управление БД с помощью интуитивно понятного современному пользователю интерфейса, предлагаемого операционной системой Windows 95/98, используя стандартные элементы управления.
5. Руководство пользователя
Разработка программы велась на языке управления базами данных Visual FoxPro 6.0 использующем технологию объектно-ориентированного визуального программирования.
Элементы использованные при разработке программы являются стандартными для ОС Windows и описаны выше в п.2 данной записки.
После запуска программы появляется главное окно (рис.2), которое содержит меню для работы с формой, таблицу, содержащую все записи базы данных, а также закладки для перехода на страницу работы с отдельной записью и страницу формирования SQL-запроса.
Рис.2
В этом окне можно осуществить сортировку записей по всем признакам с возможностью сортировки по возрастанию и убыванию. Это действие выполняется нажатием левой кнопки мыши при подведении курсора к заголовку поля. Причём сортировка по убыванию осуществляется с нажатием кнопки Ctrl на клавиатуре и щелчком мыши по заголовку поля, в котором требуется произвести сортировку. Перемещение по таблице выполняется с помощью курсоров клавиатуры, а также с помощью мыши и правого скроллера. Редактировать или каким-нибудь образом изменять содержимое БД из этого окна нельзя.
Для этого необходимо переместится на страницу Тек. Запись. (рис. 3)
Рис. 3
При этом запись, на которой находился курсор на предыдущей странице будет отображаться на этой.
Эта страница содержит кнопки навигации по базе данных, кнопки удаления, редактирования.
«Начало»- перемещение указателя БД на первую запись.
«Вверх»- перемещение указателя на одну запись вверх.
«Редактировать»- разрешает изменение значений полей текущей записи.
«Новая запись» - добавление новой пустой записи и возможность ввода значений.
«Удалить» - удаление после утвердительного ответа на подтверждающий запрос.
«Вниз» – перемещение указателя текущей записи на одну запись вниз.
«Конец» - перемещение указателя БД на последнюю запись.
При нажатии кнопки «Редактировать» поля записи становятся доступными для изменения.
Главное окно содержит кнопку «Выход», которая доступна со всех страниц.
Пункты меню, также доступные с любой страницы. Рассмотрим их.
File – пункт меню для работы с файлами, содержит одну опцию – Quit.
Edit – пункт меню для редактирования базы данных, содержит 3 опции:
Add record – добавить пустую запись.
(аналогично
кнопке «Новая запись»
Delete record – удалить текущую запись.
(аналогично
кнопке «Удалить» страницы «
Edit record – редактировать текущую запись.
(аналогично
кнопке «Редактировать»
Query - делает
активной страницу
(аналогично нажатию закладки «Запрос»)
Help – пункт меню помощи, содержит одну опцию About – вызов окна «О программе»
Выбор закладки «Запрос» главного окна делает активным страницу формирования SQL -запроса.(рис. 4)
Рис. 4
Элементы данной страницы позволяют создать SQL- запрос по трём полям базы данных с различными знаками связок в условиях и соединений (и/или) критериев отбора между собой. Выбор поля, по которому осуществляется запрос происходит из элемента управления ComboBox, который содержит все наименования полей базы. Если не указаны имена полей для выборки, кнопка «Выполнить», которая запускает сформированный запрос, неактивна.
Кнопка «Очистить» приводит форму создания запроса в исходное состояние и очищает её от ранее введённых значений.
Приведём пример создания запроса по разделу «Мониторы» с обязательным размером по диагонали 17 дюймов или гарантией больше 12 месяцев. Заполнив соответствующие поля и нажав кнопку выполнить, наблюдаем следующие результаты (рис. 5)
Рис. 5
Результаты работы запроса выводятся в стандартном окне «Browse». Если в базе данных нет записи полностью удовлетворяющей созданному запросу, на экран будет выдано соответствующее сообщение.