Методические рекомендации и задания для лабораторных работ
по дисциплине «Вычислительные системы».
Кафедра Информационных технологий в экономике.
Автор доцент Л.Л.Ткачев.
1. Введение.
В настоящее время широкое распространение получила технология параллельных баз данных. Эта технология обеспечивает множеству процессоров доступ к единственной базе данных, что позволяет также достичь более высокого уровня пропускной способности транзакций,
поддерживать большее число одновременно работающих пользователей и ускорить выполнение сложных запросов.
Существуют три различных типа архитектуры, которые поддерживают параллельные базы данных:
Симметричная многопроцессорная архитектура с общей памятью (SharedMemorySMPArchitecture). Эта архитектура поддерживает единую базу данных, работающую на многопроцессорном сервере под управлением одной операционной системы. Увеличение производительности таких систем обеспечивается наращиванием числа процессоров, устройств оперативной и внешней памяти.
Архитектура с общими (разделяемыми) дисками (Shared Disk Architecture). Эта архитектура поддерживает единую базу данных при работе с несколькими компьютерами, объединенными в кластер (обычно такие компьютеры называются узлами кластера), каждый из которых работает под управлением своей копии операционной системы. В таких системах все узлы разделяют доступ к общим дискам, на которых собственно и располагается единая база данных. Производительность таких систем может увеличиваться как путем наращивания числа процессоров и объемов оперативной памяти в каждом узле кластера, так и посредством увеличения количества самих узлов.
Архитектура без разделения ресурсов (Shared Nothing Architecture). Как и в архитектуре с общими дисками, в этой архитектуре поддерживается единый образ базы данных при работе с несколькими компьютерами, работающими под управлением своих копий операционной системы. Однако в этой архитектуре каждый узел системы имеет собственную оперативную память и собственные диски, которые не разделяются между отдельными узлами системы.
Практически в таких системах разделяется только общий коммуникационный канал между узлами системы. В случае кластерной организации несколько компьютеров или узлов кластера работают с единой базой данных.
Параллельные базы данных находят широкое применение в системах обработки транзакций в режиме on-line, системах поддержки принятия решений и часто используются при работе с критически важными для работы предприятий и организаций приложениями, которые эксплуатируются по 24 часа в сутки.
Базы данных занимают лидирующее положение в области информационных технологий, они становятся неотъемлемой частью жизни современного человека. Развитие систем управления этими процессами идет по пути интеграции в единое целое, и огромным шагом к этому является использование стандарта обработки информации с помощью структурированного языка запросов SQL. В настоящее время акцент делается на использование сетевых информационных технологий, базирующихся на архитектуре клиент/сервер.
Понятие БД можно применить к любой связанной между собой информации, хранимой и организованной особым способом - как правило, в виде таблиц. При этом возникает необходимость выполнения следующих операций с БД:
1. добавление новой информации в существующие файлы БД
2. добавление новых пустых файлов в БД
3. изменение (модификация) информации в существующих файлах БД.
4. поиск информации по БД
5. удаление информации из существующих файлов БД
6. удаление файлов из БД
Компьютерная информационная система представляет собой программный комплекс, задачи которого состоят в поддержке надежного хранения БД в компьютере, выполнении преобразования информации и соответствующих вычислений, предоставлении пользователям удобного и легко осваиваемого интерфейса. Объемы вводимой и хранимой информации довольно велики, а сами БД имеют достаточно сложную структуру.
Основным назначением БД в первую очередь является быстрый поиск содержащейся в ней информации.
Существует большое количество программ, которые предназначены для организации информации, помещения ее в таблицы и манипуляции с нею, такие программы получили название СУБД. Основная особенность СУБД - это наличие средств для ввода и хранения не только самих данных, но и описаний их структуры.
К функциям СУБД относят следующие:
управление данными непосредственно в БД
- функция, обеспечивающая хранение данных, непосредственно входящих в БД, и служебной информации, обеспечивающей работу СУБД;
управление данными в памяти компьютера
- функция, связанная в первую очередь с тем, что СУБД работают с БД большого размера. В целях ускорения работы СУБД используется буферизация данных в оперативной памяти компьютера. При этом пользователь СУБД использует только необходимую для его конкретной задачи часть БД, а при необходимости получает новую «порцию» данных;
управление транзакциями
- функция СУБД, которая производит ряд операций над БД, как единым целым. Как правило, такие операции производятся в памяти компьютера. В первую очередь транзакции необходимы для поддержания логической целостности БД в многопользовательских системах. Если транзакция (манипуляция над данными) успешно выполняется, то СУБД вносит соответствующие изменения в БД. В обратном случае ни одно из сделанных изменений не влияет на состояние БД;
управление изменениями БД протоколирование
- функция, связанная с надежностью хранения данных, то есть возможностью СУБД восстанавливать состояние БД в аварийных ситуациях, например, при случайном выключении питания или сбое носителя информации. Очевидно, что для восстановления БД нужно располагать дополнительной информацией, по которой и осуществляется восстановление. С этой целью ведется протокол изменений БД, в который перед манипуляциями с данными делается соответствующая запись. Для восстановления БД после сбоя СУБД используется протокол и архивная копия БД - полная копия БД к моменту начала заполнения протокола.
Современные СУБД основываются на использовании моделей данных (МД), позволяющих описывать объекты предметных областей и взаимосвязи между ними. Существуют три основные МД и их комбинации, на которых основываются СУБД: реляционная модель данных (РМД), сетевая модель данных (СМД), иерархическая модель данных (ИМД).
Основное различие между этими моделями данных состоит в способах описания взаимодействий между объектами и атрибутами. Взаимосвязь выражает отношение между множествами данных. Используются взаимосвязи «один к одному», «один ко многим» и «многие ко многим». «Один к одному» - это взаимно однозначное соответствие, которое устанавливается между одним объектом и одним атрибутом. Например, в определенный момент времени в одной ЭВМ используется один определенный процессор. Номеру выбранной ЭВМ соответствует номер выбранного процессора. «Один ко многим» - одно-многозначное соответствие, которое устанавливается между одним объектом и многими атрибутами. Например, один пользователь для решения различных задач использует различные языки программирования. «Многие ко многим» - это соответствие между многими объектами и многими атрибутами. Например, на множество ЭВМ может одновременно работать множество пользователей. Взаимосвязи между объектами и атрибутами удобно представлять в виде графов и гиперграфов.
Сетевые модели данных (СМД) базируются на табличных и графовых представлениях: вершинам графа обычно сопоставляются некоторые данные, которые представляются таблицами, а дугам - типы связей.
В СМД элементарные данные и отношения между ними представляются в виде ориентированной сети (вершины - данные, дуги - отношения).
В БД с сетевой структурой данных поддеревья могут иметь любое число корневых. Фактически сетевая БД состоит из набора записей и множества связей между этими записями. Примерный перечень операций для сетевых БД может быть следующим:
1. найти запись по заданному признаку;
2. перейти от предка к потомку по указанной связи;
3. перейти от потомка к предку по некоторой связи;
4. создать новую запись или удалить существующую;
5. модифицировать заданную запись;
6. включить в связь или исключить из связи;
7. переставить в другую связь.
Иерархическая модель данных (ИМД) основана на понятии деревьев. Каждое дерево состоит из одного «корневого» и упорядоченного набора из нуля или более связанных с ним поддеревьев. Вершина дерева ставится в соответствие совокупности атрибутов данных, характеризующих некоторый объект. Целостность связи между ними поддерживается автоматически.
В таких БД поддерживаются следующие операторы манипулирования данными:
1. найти дерево БД по заданному признаку;
2. перейти от одного дерева к другому;
3. перейти от записи внутри дерева или в порядке обхода иерархии (сверху вниз, слева направо);
4. вставить новую запись в указанную позицию;
5. удалить текущую запись.
Реляционные базы данных.
Реляционную модель можно представить как особый метод рассмотрения данных, содержащий и собственно данные (в виде таблиц), и способы работы и манипуляции с ними (в виде связей). Реляционная модель предполагает три концептуальных элемента: структура, целостность и обработка данных. В этих элементах есть свои специальные понятия, на которые следует обратить внимание.
Таблица рассматривается как непосредственное «хранилище» данных. Традиционно в реляционных системах таблицу называют отношением
. Строку таблицы называют кортежем или записью
, а столбец – атрибутом или полем
. При этом атрибуты имеют уникальные (в пределах отношения) имена.
Основными операциями, с помощью которых модифицируется база данных, являются: включение, удаление и модификация. Эти операции применяются к кортежам.
Основное достоинство реляционного подхода - его простота и доступность. Пользователи абстрагированы от физической структуры памяти. Это позволяет эксплуатировать БД без знания методов и способов ее построения.
Как уже говорилось выше, в реляционной модели данных есть возможность определения одного атрибута или их множества в качестве ключа отношения. Это свойство позволяет формировать запросы к базе данных очень компактно, что делает реляционную модель очень простой для разработчика прикладного программного обеспечения.
С другой стороны, вся информация, которая должна храниться и использоваться представляется в табличной форме, что является характерной чертой представления информации в реляционных базах данных, а в частности, в их разновидности - табличных базах данных.
2. Общие положения.
Ниже изложены основные теоретические положения и приемы их практической реализации при организации информационной базы данных в СУБД FOXPRO и Excel на ПЭВМ типа IBM PC.
Сформулированы контрольные задания для реализации студентом конкретной базы данных на основе информации, близкой ему по роду деятельности или интересов.
В процессе выполнения лабораторной работы студент должен по каждому контрольному заданию:
· написать точную формулировку заданной команды (или нескольких команд) управления, обеспечивающую получение от системы требуемой информации;
· в произвольной форме описать ожидаемую реакцию системы для своего варианта исходных данных. Описание реакции системы должно быть точным, не дающим возможности неоднозначного его толкования. Например, в задании 2 требуется описать структуру созданной базы данных. В качестве ответа следует привести имена полей, их тип и длину. Объяснить смысл каждой из этих характеристик, обосновать задание типа и длины поля. (Пример базы данных приведен на Рис.1).
В задании 3 требуется просмотреть все записи базы данных. При описании реакции системы следует полностью привести информацию из исходных данных с указанием имен полей, в которых эта информация записывается, затем требуется просмотреть записи, удовлетворяющие заданному условию. Это означает, что в команде управления нужно задать условие, имеющее смысл для введенных исходных данных, например, «выдать наименование продукции с ценой менее 200 условных единиц за штуку», сформировать команду для этого условия, а при описании результата указать либо номера записей, удовлетворяющих этому условию, либо дать конкретный перечень наименований продукции, удовлетворяющий заданному условию. Иными словами, описание реакции системы должно быть однозначным и исчерпывающим по смыслу.
Следует обратить внимание на то обстоятельство, что приводимые в каждом пункте задания подсказки типов используемых команд дают лишь условное, а не точное их написание. Точное написание команды - задача студента. Каждая команда пишется в отдельной строке, исполнение каждой команды на ЭВМ происходит после нажатия клавиши «ENTER».
Для облегчения понимания студентом принципов организации информации в типовой системе управления базой данных (СУБД) при объяснении в качестве информационной базы рассматривается библиотечный каталог, смысл организации и назначение которого предельно ясно любому студенту.
Контрольные задания ориентированы на биржевую информацию, пример базы данных для которой приведен на рис.1.
Поняв из пояснительного раздела настоящих указаний принципы работы с библиотечным каталогом и биржевой информацией, студент самостоятельно должен применить знания к созданию базы данных из другой информационной области знаний.
Для эффективной работы с информацией в ПК разработаны специальные программные средства, называемые системами управления базами данных - (СУБД), которые позволяют вводить, проверять, систематизировать и обрабатывать информационные данные, быстро находить нужную информацию и распечатывать в виде отчетов.
Система FoxPro - одна из широко распространенных СУБД, предназначенная для эффективной обработки больших баз данных, обладающая развитыми средствами программирования.
В последних версиях системы Windows в рамках программного комплекса MicrosoftOffice широкое распространение получили программные средства обработки данных Access и Excel.
Основные принципы работы с СУБД рассматриваются на примере FoxPro в командном режиме, дающем наиболее ясное понимание смысла выполняемых функций, и на примере Excel в режиме меню.
Подавляющее большинство современных СУБД основано на реляционной модели представления данных, сущность которой заключается в представлении данных в виде таблиц таким образом, что ко всем данным при их обработке пользователь имеет прямой доступ, т.е. данные при построении базы иерархически не структурированы.
В отличие от иерархических баз реляционная база дает большую свободу пользователю как при создании, так и при работе с базой, но требует больших ресурсов ЭВМ.
Поля и записи.
Для ввода и вывода информации из СУБД при ее создании необходимо определить поисковые ключевые признаки, позволяющие определять принадлежность информации к конкретному понятию. Такие ключевые поисковые признаки называются полями. Количество и виды полей определяются пользователем в зависимости от его представлений об информационном назначении создаваемой СУБД. Это важный момент, поскольку всякая дальнейшая работа с информацией возможна только в пределах понятий, заданных совокупностью полей.
Для пояснений сказанного рассмотрим библиотечный каталог - это информационная база, позволяющая найти нужную книгу среди множества других. Как создать такую базу? Каковы ее ключевые признаки - поля? А это зависит от нашего воображения. Можно искать книгу по названию, можно по автору, можно по месту расположения на стеллажах и т.д.
Введем следующие поисковые признаки: фамилия автора, название, год издания, номер стеллажа, номер ячейки на стеллаже, имеется ли книга на месте или выдана, фамилия пользователя, дата возврата. Эти понятия и будут полями в нашей базе. В каждом поле содержатся конкретные данные - в поле авторов перечислены фамилии и т.д. Совокупность данных одного информационного сообщения по всем полям наз. записью. (в нашем случае запись - это все данные об одной книге.) При задании каждого поля нужно указать его название латинскими буквами, максимальную длину данных в символах (длина поля) и тип данных(тип поля). Данные могут быть следующих типов - символьный (character), числовой(numeric), дата(date), логический(logical), примечание(memo).
Данные символьного типа это любая последовательность символов.
Числовые данные могут быть двух видов: целые и вещественные.
Вещественные числа содержат дробную часть, отделяемую от целой десятичной точкой, для них задается точность представления.
Поле даты имеет всегда длину 8 символов. Дата задается в Европейском (Set Date German) - ЧЧ.ММ.ГГ, или американском (Set Date American) - ММ/ЧЧ/ГГ формате.
Данные логического типа имеют значения да(yes) и нет(no). В математической логике они называются соответственно истина (True) и ложь (False). Эти понятия использует система, индицируя состояние логического поля буквами T и F. Длина логического поля равна 1. Для хранения больших фрагментов текста в базах данных предусмотрены поля типа примечаний.
Создание базы данных.
1.Запускается исполняемый файл foxprol.exe. После этого запускается система FoxPro и появляется командное окно для ввода команд.
2. Создание структуры базы данных - Create BD1 (BD1 – имя базы данных, в общем случае произвольное). Появляется экран шаблон для ввода полей.
После задания последнего поля создание структуры базы завершается выходом на OK. Появляется запрос - Будете вводить данные - нажимая клавишу Y, переходим в режим ввода данных, в котором, собственно и осуществляется ввод информации.
Ввод информации в базу данных.
На экране появляется структура базы с именами полей заданной длины. Теперь после перехода на русский регистр вводятся данные. Переход с поля на поле клавишей Enter или стрелками, возврат к предыдущей записи - PgUp, к последующей -PgDn.
Для выхода из режима после ввода всех данных - Ctrl-End.
Выход из базы Quit. Вход в существующую базу - Use BD1 (активизация БД).
Вывод информации.
Clear очистка экрана. Для вывода информации используются команды List и Display. Первая команда выводит на экран все записи, вторая только одну, на которой стоит указатель записей, эта запись называется текущей. Понятие указателя записей очень важно не только при использовании команды Display, но и для ряда других команд. Для установки указателя записи существуют специальные команды
GO TOP -перемещение указателя на первую запись
GO BOTTOM - на последнюю
5 Enter - на пятую запись
Если после этой команды дать команду Display - будет показана пятая запись
SKIP +2 - перемещение указателя на две записи вперед
SKIP -2 - на две записи назад
DISPLAY ALL -выдача всех записей поэкранно
GO 4 Enter DISPLAY REST -выдача записей, начиная с четвертой (текущей)
Выполнение команды LIST может быть инициировано клавишей F3,а команды DISPLAY клавишей F8.
LIST AVT просмотр всех фамилий в поле авторов
LIST AVT,NAZV просмотр фамилий авторов и названий книг
LIST RECORD 2 просмотр второй записи
Чтобы командное окно не мешало просмотру его можно передвинуть нажав клавиши CTRL+F7 и изменить его размеры клавишами CTRL+F8 (можно использовать мышь)
LIST FOR GOD<1992 выводятся все поля для записей, удовлетворяющих условию
LIST NAZV FOR GOD<1992 выводится только поле названий для книг, изданных до 1992 года
Условия могут быть сложными, использующими логические отношения NOT,AND,OR в этой же приоритетности они и исполняются, если используются одновременно в одной команде.
LIST FOR (STEL=112).AND.(VOZVR<D)
выдаются книги, расположенные на стеллаже 112 с просроченным возвратом. Здесь использованы числовое поле стеллажа и поле даты.
При использовании логических операций с полями даты необходимо предварительно определить переменную типа даты следующим образом
D=CTOD('03.11.96') и затем уже работать с этой переменной.
LIST AVT FOR (GOD>1990).OR.(NAL=’ЕСТЬ’)
Здесь использовано символьное поле, оно заключается в кавычки.
Логические условия заключаются в точки.
Символьная запись в кавычках должна быть задана точно теми же символами, которыми эта запись задана в базе. (ПК сравнивает коды символов, поэтому русские и латинские буквы одного написания для ПК разные символы, аналогично различаются строчные и прописные буквы.
LIST FOR POLZOV='Орлов' выдаются книги, выданные Орлову.
LIST AVT,NAZV FOR NAL='ЕСТЬ' выводятся поля авторов и названий для книг, имеющихся в наличии.
Последовательный поиск записи по условию осуществляется командой LOCATE.
LOCATE FOR STEL=114 выдается номер одной первой найденной записи. Просмотр найденной записи осуществляется командой DISPLAY. Следует обратить внимание, что действие команды начинается с перемещения указателя записи на первую запись и в процессе поиска указатель записи перемещается по базе данных. После нахождения заданной записи указатель оказывается на этой записи. Таким образом, команда работает с указателем записи самостоятельно и, задавая после нее другую какую-нибудь команду, нужно это учитывать. В частности, задавая для продолжения поиска команду CONTINUE, нужно понимать, что поиск продолжается с сохранением заданных условий от той записи, на которой остановился поиск. Если заданные условия не найдены, то указатель записи оказывается в конце базы и команда DISPLAY информации не дает.
Если в процессе поиска необходимо сменить условия, то, чтобы не начинать поиск с начала базы, если это не нужно, а база большая, следует использовать команду LOCATE REST FOR STEL=115 - поиск будет продолжен от текущей записи с новыми условиями. Поиск может осуществляться и по сочетанию нескольких условий:
LOCATEFORSTEL=114 .AND. NAL=’ЕСТЬ’, опять выдается только номер первой записи, удоалетворяющей этому условию.
Если мы не располагаем точной информацией о поисковом признаке, т.е. не уверены абсолютно точно как записаны данные, то можно организовать приближенный поиск:
LIST AVT FOR LIKE ('Ka*',AVT) - будут выданы все фамилии авторов, начинающиеся на Ка. При этом, конечно, будет выдана и лишняя информация, но зато и нужная, которую при точном поиске обнаружить бы не удалось. В опции LIKE символы * и ? могут употребляться в любых сочетаниях. Может использоваться также команда типа BROWSEFIELDAVTFORLIKE (‘Ka*’,AVT)
Корректировка данных.
Для изменения, дополнения или удаления записей используется режим APPEND. После этой команды система переходит в режим редактирования записей, при этом автоматически в конец базы добавляется пустая запись, на которую и устанавливается указатель записей. В эту пустую запись можно вводить новую дополнительную информацию. Для перехода к предыдущим записям - PgUp. Перейдя к нужной записи можно ее отредактировать обычным образом. Для удаления записи ее нужно предварительно пометить. Пометка к удалению - команда CTRL+T. У помеченной записи слева появляются метки в виде точек, однако запись при этом не удаляется. Восстановление помеченной к удалению записи (отмена удаления) осуществляется повторной командой CTRL+T.
Удаление отмеченных записей производится командой PACK после выхода из режима редактирования. Выход из режима APPEND командой CTRL+END. Пометить запись для удаления можно и не входя в режим APPEND командой DELETE RECORD 3 - третья запись оказывается помеченной или просто DELETE, помечена текущая запись.
Завершение удаления командой PACK.
Снятие пометок к удалению - команда RECALL, без параметров действует только на текущую запись.
Пример. RECALL ALL -снятие всех пометок.
USE BD1
GO 5 переход к пятой записи
SKIP-3 возврат ко второй записи
DELETE NEXT 3 пометка к удалению 2,3,4 записей
RECALL RECORD 4 снятие пометки с записи 4
PACK удаление записей с возвратом указателя записей на первую запись.
В больших базах команда PACK работает медленно, поэтому используется редко. Чтобы помеченные записи не мешались, их делают невидимыми командой SET DELETED ON, в этом случае запись будет появляться только при прямом обращении к ней (GO 20) -тогда эта помеченная запись проявится.
Задав последовательность команд
USE BD1
APPEND FROM BDD1
мы к открытой базе BD1 добавим содержимое другой базы BDD1, конечно при этом все базы должны существовать и поля у них должны быть одинаковыми.
Не в режиме редактирования, а в командном, можно вставить новую запись между уже имеющимися. Для этого указатель записи устанавливается на нужную запись и она становится текущей. Для вставки после текущей записи используется команда INSERT BLANK,
для вставки перед текущей записью - команда INSERT BEFORE BLANK.
Изменение записей командой REPLACE
Командой REPLACE осуществляется модификация записей в базе, т.е. замена одного понятия другим, а не дописывание или изменение отдельных символов, как это делается в режиме APPEND.
Команда без параметров действует только на текущую запись.
Пример. 3 ENTER REPLACE NAL WITH 'ЕСТЬ' - установлена третья запись, и в поле наличие сделана запись о том, что книга возвращена.
REPLACE ALL GOD WITH 1880 - все записи в поле GOD заменяются на 1880.
REPLACESTELWITH 222 FORSTEL=112 - все книги со стеллажа 112 переставлены на стеллаж 222. Изменяются все записи, для которых номер стеллажа 112.
Практически только командой REPLACE в FoxPro можно изменять значения полей файла БД. В этом смысле она эквивалентна знаку равенства в операции присваивания для переменных в алгоритмических языках.
Буквально фраза <поле> with <выражение> соответствует оператору присвоения <поле>=<выражение>.
Пример использования команды.
Бригаде дана премия 20% от выработки каждого, у кого выработка более 100р, а бригадиру еще 500р. Нужно изменить поле выработки (VIR), т.е. начислить премию к зарплате.
У бригадира табельный номер 98.
USE BRIGADA
REPLACE VIR WITH VIR*1.2 FOR VIR>100
REPLACE VIR WITH VIR+500 FOR TAB=98
Можно ввести специальное понятие вычисляемого поля по аналогии с тем, как это делается в электронных таблицах.
Пусть есть в базе поля COST(цена) и QUANT(количество), в этих полях есть записи. Есть пустое поле COST_PART(цена партии).
Заполнить это пустое вычисляемое поле можно так
REPLACE ALL COST_PART WITH COST*QUANT
BROWSE ОКНО
Является мощным средством редактирования, просмотра и управления данными. В режиме Browse записи можно редактировать, дополнять и помечать к удалению. Допускается создавать т.н. вычисляемые поля. Эти поля фактически не являются полями базы данных, но могут быть их функциями и отображаются на экране наравне с настоящими полями.
Такой режим соответствует работе с электронными таблицами.
Вычисляемые поля не могут редактироваться и запоминаться в БД.
Для введения вычисляемого поля при вызове режима BROWSE, указывается какую информацию заносить в это поле. Эта информация будет индицироваться в режиме BROWSE, но после выхода из режима она исчезает и если затем просмотреть записи БД, то вычисляемое поле окажется пустым.
Пример: Пусть в базе есть поля COST - стоимость единицы товара и MINIM - минимальная партия поставки. Сформируем вычисляемое поле Стоимость минимальной партии - MIN_COST.
Входим в режим BROWSE:
BROWSE MIN_COST=COST*MINIM – формируется и индицируется вычисляемое поле. По умолчанию в режиме BROWSE отображаются все поля БД. Однако, можно уменьшить количество выводимых полей, задавая их поименно:
BROWSE FIELDS COST,MINIM,MIN_COST=COST*MINIM
В качестве заголовков по умолчанию отображаются имена полей. Однако, есть возможность задавать произвольные заголовки:
BROWSE FIELDS COST:H=’цена’,MINIM:H=’мин. партия’,
MIN_COST=COST*MINIM:H=’мин.цена’
Если заголовок не нужен вообще, следует в качестве заголовка использовать пробел («).Можно использовать также условие-фильтр при вхождении в режим. Например выдать товары с ценой менее 2 тыс.$: BROWSEFORCOST<2000
Для сохранения заданного режима работы BROWSE после выхода из него предварительно задается команда SET RESOURCE ON тогда команда BROWSE LAST вызывает последнюю версию режима BROWSE. Если SET RESOURCE OFF, то последняя конфигурация не сохраняется и опция LAST никак не действует, а команда BROWSE LAST срабатывает просто как команда BROWSE.
Работая в режиме BROWSE, можно клавишей F10 перейти в верхнее меню, войти в меню BROWSE и там:
опция GRID OFF/ON -установить или убрать вертикальные разделители между полями, MOVE FIELD - позволяет менять местами поля в BROWSE окне, SIZE FIELD - позволяет менять видимые размеры (ширину) выделенного поля.
Клавишами CTRL+F2 можно осуществить перевод маркера из BROWSE окна в окно команд.
Изменение структуры базы данных.
Изменение структуры базы данных, т.е. введение новых полей, изменение или изъятие имеющихся осуществляется в режиме MODIFY STRUCTURE. На экране при этом появляются существующие поля, их названия и параметры. Изменения в существующих полях осуществляется обычным посимвольным редактированием. Для вставки нового поля перед текущим полем маркер передвигается в крайнюю левую позицию (нажим ENTER вызывает появление стрелок ) и в этой позиции нажимается клавиша INSERT. Появляется поле с именем NEWFIELD, которому затем обычным редактированием можно задать любое другое имя. Для уничтожения существующего поля маркер в той же крайней левой позиции и клавиша DELETE.
Выход из режима через OK.
Просмотр структуры осуществляется командой LIST STRUCTURE
Структура новой базы может быть создана из структуры уже имеющейся командами
COPY STRUCTURE TO DB2
COPY STRUCTURE TO DB2 FIELDS AVT,NAZV
т.е. формирование новой базы с полным или частичным набором полей.
Копирование баз данных
Можно создавать новые базы данных, копируя не только структуру, но и сами данные.
USE BD1
COPY TO BDD - скопируется вся база
COPY TO BDD1 FIELD AVT - скопируются все записи в поле AVT
COPY TO BDD2 FOR GOD=1992 - все записи по всем полям где год издания 1992
COPY TO BDD3 FIELD AVT FOR GOD=1992
COPY TO BDD4 FIELD AVT FOR GOD=1992.AND.NAL=’есть’
Таким образом можно создавать частичные базы данных для желаемых полей с заданными условиями.
Фильтр
Частичные базы данных можно создавать также с помощью фильтра. Фильтр - это способ ограничения для просмотра больших баз данных. После введения фильтра из большой базы выводится только информация , удовлетворяющая заданным в фильтре условиям, а остальной как бы не существует, хотя на самом деле сама база никаким изменениям не подвергается.
SET FILTER TO GOD>1990
LIST
Будет выдана информация только по книгам, выпущенным после 1990г.
Если после включения фильтра дать команду COPY TO BDD то будет создана новая база, в которую войдут только книги, выпущенные после 1990г.
Действие фильтра отменяется при выходе из БД, например, при переходе к другой БД - USE BDD1.
Отменяется также заданием команды SET FILTER TO без указания условий. Установленный фильтр начинает действовать только в случае, если после команды SET FILTER TO <условия> произведено хоть какое-то перемещение указателя записей в файле БД (например, дана команда LIST, перемещающая этот указатель) При задании фильтра возможны логические условия
SET FILTER TO STEL>112.AND.GOD>1990
Заданный фильтр отменяется также заданием другого фильтра
SET FILTER TO STEL>112
Сортировка базы данных
База данных для облегчения пользования ею может быть упорядочена по заданному закону, например, по алфавиту в поле авторов или по возрастанию или убыванию года издания или другим информационным признакам данных.Но упорядоченная база при этом создается как новая, т.е. каждая сортировка требует создания новой базы, следовательно каждая сортировка влечет за собой требования к месту размещения этой новой базы. Когда база маленькая об этом можно не думать, а если база большая, то количество признаков упорядочивания ограничивается объемами дисковой памяти компьютера.
Примеры:
USE BD1
SORT TO BD2 ON AVT база BD2 отсортирована по алфавиту авторов
SORT TO BD3 ON AVT/D обратная сортировка по алфавиту
SORT TO BD4 ON STEL по номеру стеллажа в возрастающем порядке
SORPT TO BD5 ON STEL/D в убывающем порядке
SORT TO BD6 ON VOZVR по дате возврата в порядке возрастания
Сортировка по нескольким полям:
SORT TO BD7 ON STEL,NOM/D по возрастанию номера стеллажа, а внутри каждого стеллажа в порядке убывания номера ячейки.
Сортировка базы позволяет ускорить в большой базе поиск нужной информации.
Индексирование баз данных
Важнейшим элементом любой системы управления базами данных является наличие средств ускоренного поиска данных, поскольку поиск - самая распространенная операция в системах обработки данных. Этот механизм реализуется введением т.н. индексных файлов. Они имеют расширение IDX.
Индексирование БД вводится для ускорения операции поиска данных. Для этой же цели можно применять сортировку БД по нужному поисковому ключу, но каждая сортировка создает новую БД размером с исходную. Реальные БД имеют большой размер и многократная их сортировка оказывается технически нереализуемой.
Индексные файлы занимают принципиально меньший объем, поэтому для больших БД необходима именно индексация, поскольку в неупорядоченной базе поиск длится долго, а сортировка невозможна из-за ограничений в дисковой памяти. Если файл проиндексирован, команды DISPLAY,BROWSE,SKIP,REPLACE и все другие, связанные с движением в файле базы данных, перемещают указатель записей в соответствии с индексом, а не с физическим порядком расположения записей. В частности, команды GO TOP и GO BOTTOM устанавливают указатель записей не на первую и последнюю физические записи, а на начальную и конечную записи индексного файла соответственно. Один файл БД может быть проиндексирован по нескольким полям и иметь любое число индексов. Такие файлы не содержат сами записи, а содержат только указание на порядок их расположения в файле БД для того поля, по которому осуществлена индексация. Например, при индексации поля авторов в алфавитном порядке в индексном файле будут содержаться записи такого типа 1 - 3 справа номера записей в файле БД в поле AVT,
2 - 1 слева номера записей в индексном файле
3 - 5 для поля AVT и аналогично для других полей.
Размер индексного файла сравним с объемом дискового пространства, занимаемого полем базы данных, по которому было произведено индексирование. Т.о. если база проиндексирована по всем полям, суммарный размер всех индексных файлов будет близок к размеру всей БД. При наличии многих индексов замедляются операции ввода и редактирования БД, т.к. при дополнении БД новой записью автоматически должны быть отредактированы все индексные файлы.
Индексирование выполняется следующей командой
INDEX ON <выражение> TO <IDX-файл> [COMPACT] [ADDITIVE]
Предпоследняя опция создает компактный индексный файл, поэтому ею всегда надо пользоваться, это ускоряет поиск. Последняя опция обеспечивает сохранность уже созданных индексных файлов при открытии новых. По умолчанию вновь создаваемые индексы закрывают ранее открытые индексы для текущей БД.
Индексированная база из текущей создается :
USE BD1
INDEX ON AVT TO BD2 - из базы BD1 создана индексированная по фамилиям база BD2 с расширением .IDX
Можно сделать ограниченную индексацию
INDEX ON AVT TO BD3 FOR STEL=112
После создания индексированной базой можно пользоваться след. образом: при открытии базы:
USE BD1 INDEX BD2 или
USE BD1
SET INDEX TO BD2
При корректировке записей БД индексированные файлы автоматически изменяются, поэтому при активизации БД нужно указывать все имеющиеся уже созданные индексированные файлы:
SET INDEX TO BD2,BD3 и т.д. сколько есть файлов .IDX
Отменаиндексации: SET INDEX TO или SET ORDER TO 0
Активным является только первый из указанных индексов. По нему индексируется база. Переключиться на другой индекс можно командой SET ORDER TO N - где N порядковый номер индексированного файла в последнем списке (SET INDEX TO ...). Можно сделать иначе - заново задать команду SET INDEX TO ... где нужный индекс должен быть у первого в списке индексного файла.
В индексированном файле быстрый поиск нужной записи может осуществляться командой
SEEK 'Попов' для строкового поля
SEEK 25 для числового
SEEK D где D=ctod('22.03.94') для даты
После каждой команды SEEK нужно дать команду DISPLAY для индикации результатов поиска. Пример.
USE BD
INDEX ON AVT TO BD1
INDEX ON VOZVR TO BD2
INDEX ON GOD TO BD3
USE BD INDEX BD1
SEEK ‘Попов’, DISPLAY
USE BD INDEX BD2, D=CTOD(‘22.03.94’), SEEK D, DISPLAY
USE BD INDEX BD3, SEEK 1992, DISPLAY
Если все индексные файлы не были перечислены при открытии базы, а она была изменена, нужно произвести переиндексацию командой
REINDEX предварительно задав командой SET INDEX TO ...
все индексные файлы, подлежащие переиндексации.
Команда SEEK <выражение> применяет специальный алгоритм ускоренного поиска, в котором база просматривается не сплошь, а в соответствии с информацией, содержащейся в индексном файле.
При наличии индекса сначала именно в нем, а не в самой базе ведется поиск номера записи с указанным в команде SEEK значением выражения в индексном поле. При этом поиск в индексе выполняется не последовательно, а скачками (т.н. двоичный поиск), что позволяет быстро локализовать номер нужной записи. Команда SEEK находит только одну первую запись и устанавливает на нее указатель записи.
Сочетанием команды SEEK с командой SET NEAR ON может быть осуществлен приближенный поиск, если точное значение искомого признака неизвестно. Пример.
USE BD, INDEX ON GOD TO BD1 COMPACT, SET NEAR ON, SEEK 1980,
BROWSE
В результате поиска указатель записи установится на числе, ближайшем к заданному. Войдя в режим BROWSE и оглядев ближайшие записи, легко обнаружить интересующую, поскольку в индексированной базе все записи упорядочены по годам и искомый год находится рядом.
Команда SEEK является аналогом команды LOCATE для последовательного поиска. Однако команде продолжения поиска CONTINUE нет индексного аналога. Причина здесь очевидна. После того как командой SEEK найдена первая нужная запись, розыск остальных записей, удовлетворяющих ключу поиска, является тривиальным. Следующая такая запись (если есть) находится в индексированном файле непосредственно ниже найденной, и переход на нее может быть выполнен просто командой SKIP.
3. Задание на лабораторную работу.
3.1 В программной системе FoxPro.
1.Создать файл базы данных (БД)
(Create ...)
2.Посмотреть описание структуры БД
(Use, Liststructure) Пояснить содержание выдаваемой информации
3.Посмотреть на экране все записи БД
(List)
Посмотреть записи, удовлетворяющие заданному условию
(List... for ...)
Посмотреть содержимое выбранных полей для всех записей БД
(List fields...)
Посмотреть содержимое выбранных полей, удовлетворяющих заданному условию (List fields...for...)
Условия задать для символьного, числового и поля типа «дата»
Для полей типа «дата» предварительно задать
Set date german; D=CTOD(‘дата’);
List fields ...for D...)
Осуществить просмотр выбранных полей с приближенным условием (Listfieldsforlike ...)
4.Командой Display посмотреть содержимое с выбранным номером
5.Осуществить последовательный поиск и просмотр первой и последующих записей
(Locate for ...);
Display;
(Locate rest for...);
Display
6.Сделать архивную копию БД
(Copy to ...)
7.Добавить запись в конец активизированной рабочей БД
(Append)
8.Посмотреть добавленную запись
(Go bottom; Display)
9.Пометить для удаления последнюю запись и третью
(Delete; go 3; Delete)
10.Посмотреть все записи БД (Display all)
Обратить внимание на третью и последнюю записи.
Сравнитьварианты: Set deleted on; Display all
Set deleted off;Display all
11.Запросить количество записей файла БД
Сравнитьдваварианта: Set deleted on; ?reccount()
Set deleted off;?reccount()
12.Отменить пометку к удалению для третьей записи
(Recall record 3)
Посмотреть все записи. Объяснить результат
13.Выполнить физическое удаление помеченной записи (Pack)
Посмотреть все запси в двух вариантах:
Set deleted on и Set deleted off
14.Выполнить задание п.11 и сравнить полученные результаты
15.Вставить дополнительные записи в БД перед и после третьей
записи, используякоманды Insert blank, Insert before blank
Посмотреть все записи БД и сравнить с п.13
16.Удалить запись, вставленную после третьей записи.
Посмотреть все записи.
17.Добавить поля «цена партии» и «цена минимального комплекта
поставки». Заполнить новые поля как вычисляемые
(Modify structure ...
Go top
Replace all ...)
18.Осуществить просмотр содержимого вычисляемых полей.
19.Создать новую частичную БД из имеющейся с помощью операции копирования с полями «наименование товара» и «цена».
(Copy to ... fields ...).
Посмотреть и описать содержимое новой базы.
20.Для исходной БД ввести фильтр по полю “цена”.
(Set filter to cost ...)
Просмотреть содержимое БД с заданным фильтром.
21.Скопировать исходную БД с включенным фильтром в новую БД.
(Copy to ...). Просмотреть содержимое полученной БД.
(Use....; List)
22.Осуществить сортировку БД по полям «цена», «дата» и «наименование товара». (Sort to ...on...)
23.Посмотреть порядок расположения записей в полученных БД.
24. В режиме Browse осуществить создание и просмотр вычисляемого поля, задать заголовки полей, изучить работу в режиме BrowseLast.
Индексирование баз данных
25.Выполнить индексирование БД по полю “количество” - QUANT
USE …
INDEX ON … TO …
LIST
26.Создать два дополнительных индексных файла по полям «наименование товара»-Prod_name и «дата»-Date.
INDEX ON … TO … ADDITIVE
27.Просмотреть полученные индексированные базы
USE …
SET INDEX TO …
28.Закрыть исходную БД
29.Открыть исходную БД вместе со всеми индексными файлами
USE BD INDEX …
30.Ввести в исходную БД дополнительную запись с новыми данными в полях, по которым проводилась индексация.
Посмотреть изменения в индексных файлах.
SET INDEX TO …
SET ORDER TO ...
LIST
31.Осуществить быстрый поиск записи в каждом индексном файле (по числовому, символьному и полю даты).
SET INDEX TO …
SEEK …
DISPLAY
32.Осуществить приближенный поиск в поле даты
SET NEAR ON
...
….
BROWSE
3.2 В программной системе Excel.
1. Создание структуры БД.
В первой строке рабочего листа ввести названия полей.
2. Ввод данных через меню
Данные - Форма.
Каждый новый список нужно создавать на отдельном рабочем листе, т.к. программа Excel обрабатывает только одну БД на одном листе.
Осуществить автоматическую установку ширины столбца в соответствии с длиной записи в поле.
Осуществить изменение формата даты – выделением заголовка столбца даты щелчком левой кнопки мыши в самом верху столбца.
3. Осуществить поиск элементов в списке.
Активная рамка при этом должна находиться в пространстве с записями, (т.е. внутри базы).
В качестве критерия поиска в числовых полях и полях даты употребляются критерии > и <. В символьных полях можно использовать * и ?.
Когда используются несколько критериев поиска, программа находит запись, удовлетворяющую всем критериям.
4. Осуществить редактирование данных.
Данные - Форма.
5. Задать автоматический фильтр.
Данные – Фильтр - Автофильтр.
6. Осуществить комбинированную фильтрацию по двум критериям с помощью автоматического фильтра.
7. Осуществить сортировку БД по одному и двум критериям в возрастающей и убывающей последовательностях.
Данные - Сортировка.
8. Копирование БД.
1. Копирование выделением отдельных полей с помещением их в буфер и перемещением в другой файл.
2. Копирование с помощью фильтра – фильтром формируется желаемый вид записей, затем все получившееся копируется в буфер.
9.Осуществить заполнение вычисляемого поля с использованием формул вида =d2*g2, =d2*$g$2, (соответственно, $g2 и g$2).
10. Осуществить добавление и удаление столбцов, строк, а также переименование страниц.
Рис.1 Пример исходной информации для базы данных.
Номер |
Код |
Наименование |
Цена |
Колич. |
Город |
Дата |
Мин.партия |
27 |
К254 |
Дозиметр ДБГВ |
542 |
100 |
Витебск |
22.01.01 |
3 |
28 |
К348 |
Определит.номера |
1720 |
800 |
Витебск |
19.02.01 |
4 |
29 |
Б023 |
Судно типа «Луч» |
7240 |
45 |
Саратов |
15.10.01 |
2 |
30 |
К322 |
Теплоход |
50000 |
30 |
Саратов |
11.11.01 |
3 |
31 |
Л269 |
Фильтр-3М |
50 |
300 |
Воронеж |
13.08.01 |
30 |
32 |
Л314 |
Фильтр-5М |
45 |
500 |
Воронеж |
22.08.01 |
25 |
33 |
Л324 |
Фильтр-7М |
24 |
90 |
Воронеж |
12.08.01 |
50 |
34 |
Б017 |
Экскаватор |
135000 |
8 |
Казань |
12.07.01 |
2 |
Имена полей могут быть заданы, например, такими: NOM, KOD, CENA, KOL, MESTO, DATE,
MINPART.
Литература.
1. Глушаков С.В., Ломотько Д.В. «Базы данных», изд. «Фолио», Харьков, 2000г.
2. А. Дубина «FoxPro. Технология программирования» , изд. «Филинъ», Москва, 1998
3. А.А.Попов. Создание приложений для FoxPro 2.5/2.6 в DOS и Windows. М. Изд. ДЕСС КОМ, 2000.
4. Тихонов А. Тихонова Л. VisualFoxPro 5 без проблем. Издательство Бином, 1997.
5. А.А.Попов. Программирование в среде СУБД FoxPro . М., 1995 и более поздние издания.
6. ФейзВемпен. Microsoft Office 97 Professional, М., 1997.
7. Марк Додж, Крейг Стинсон. Эффективная работа с Excel 2000. Изд-во Питер,
М. 2001.
|