Технологии разработки и управления базами данных

Курсовая работа

ПО ДЕЛАМ ГРАЖДАНСКОЙ ОБОРОНЫ, ЧРЕВЫЧАЙНЫМ СИТУАЦИЯМ И ЛИКВИДАЦИИ ПОСЛЕДСТВИЙ СТИХИЙНЫХ БЕДСТВИЙ

АКАЕМИЯ ГОСУДАРСТВЕННОЙ ПРОТИВОПОЖАРНОЙ СЛУЖБЫ

Кафедра информационных технологий УНК АСИТ

Курсовая работа по теме:

«Технологии разработки и управления базами данных»

Выполнил: сержант вн. службы Байтемиров Т.И., гр. № 52155Б-1к2015

Москва 2015 г.

Аннотация

В качестве СУБД используется MS ACCESS. База данных состоит из таблиц Данные о пожарах (регистрирует адрес, дату, время, площадь и причину возникновения пожара (неосторожное обращение с огнем, нарушение правил эксплуатации электрооборудования, установленный поджог, неисправность производственного оборудования, самовозгорание веществ и материалов и т.д.)), Вид объекта (жилое здание, здание производственного назначения, торговое помещение, образовательное учреждение, лечебно-профилактическое учреждение и т.д.), Ликвидация пожаров (время прибытия к месту пожара и время тушения пожара, количество пострадавших, материальный ущерб, количество личного состава и единиц техники, принимавших участия в тушении пожара, руководителя тушения пожара).

Постановка задания

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

пожар управление сервер access

1. Описание структуры базы данных

База данных состоит из трех таблиц Виды объектов, Данные о пожарах, Ликвидация пожаров.

Рис.1. Таблица «Виды объектов»

Рис.2. Таблица «Данные о пожарах»

Рис.3. Таблица «Ликвидация пожаров»

Рис.4. Связь между таблицами.

Рис.5. Запрос записей о пожарах со временем тушения более 20 мин.

Рис.6. Форма выборки записей о пожарах со временем тушения более 20 мин.

Рис. 7. Отчет о выборки записей о пожарах со временем тушения более 20 мин.

Рис.8. Запрос с параметром, с условием выбора площади пожара.

Рис.9. Результат запроса с выбором площади пожара 13 кв.м.

Рис.10. Форма с гистограммой для вывода среднего материального ущерба в зависимости от даты пожара.

2. Теория

Microsoft Access — это функционально полная реляционная СУБД. В ней предусмотрены все необходимые вам средства для определения и обработки данных, а также для управления ими при работе с большими объемами информации. Что касается легкости использования, то Microsoft Access совершил здесь настоящий переворот, и многие для создания своих собственных баз данных и приложений обращаются именно к нему.

4 стр., 1916 слов

Использование баз данных и СУБД для обработки экономической информации

... запись в буфер прикладной программы для обработки, заменить в записи значения указанных элементов данных, запомнить запись из буфера в базе. При разработке сетевых моделей было придумано множество «маленьких хитростей», позволяющих увеличить производительность СУБД, ...

Система управления базами данных предоставляет нам возможность контролировать задание структуры и описание своих данных, работу с ними и организацию коллективного пользования этой информацией. СУБД также существенно увеличивает возможности и облегчает каталогизацию и ведение больших объемов хранящейся в многочисленных таблицах информации. СУБД включает в себя три основных типа функций: определение (задание структуры и описание) данных, обработка данных и управление данными. Все эти функциональные возможности в полной мере реализованы в Microsoft Access. В практике, как правило, необходимо решать и задачи с использованием электронных таблиц и текстовых процессоров. Например, после подсчета или анализа данных необходимо их представить в виде определенной формы или шаблоны. В итоге пользователю приходится комбинировать программные продукты для получения необходимого результата. В этом смысле все существенно упростят возможности, предоставляемые Microsoft Access.

1. Что такое СУБД

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

Внесение объекта в базу — только полдела. Его еще нужно как-то характеризовать, связать с ним определенное значение. И тут нужно ввести понятие «данное». Данное — это определенный показатель, характеризующий объект и наделяющий его определенным значением. Причем не обязательно, чтобы объект был определен одним данным — их может быть много. Представим, что мы имеем дело с хакерской структурой. Хакерство — это объект. А вот данные — это уже хакерские течения, стаж незаконной деятельности, количество написанных эксплойтов и взломанных машин и т.п. Другими словами, данные — это характеристики определенного объекта. Именно это больше всего интересует клиента, обратившегося к пока еще будущей БД.

Создать многомегабайтный файл с тоннами информации (которая, кстати, вполне может быть избыточной) — это не решение проблемы. Человек любит комфорт, поэтому, чтобы, например, пробить информацию на крупного хакера, от клиента потребуется предоставить только ник взломщика, и тогда исчерпывающая информация о киберпреступнике станет оружием справедливости. Организовать такую систему очень непросто, прошел не один десяток лет, прежде чем отдельные файлы стали достойными базами данных. Теперь все стало намного проще благодаря существованию структурированных файлов — баз данных и различных моделей организации данных.

Собственно, модель — это основа, на которую опирается та или иная база данных. В той или иной модели определяются связи между данными, типы вводимых данных, методы хранения, управления и т.п. Связь данных с прикладными программами обеспечивается посредством СУБД или с помощью систем управления базами данных.

СУБД — это совокупность языковых и программных средств, предназначенных для создания, ведения и совместного использования БД многими пользователями. Иными словами, с помощью СУБД любой желающий (при наличии определенных прав, конечно) сможет обратиться к базе и достать оттуда интересующую его информацию.

9 стр., 4386 слов

Модель технического объекта

... – надежность систем. II. Диагностические модели технических объектов Технической диагностикой называется наука о распознавании состояния технической системы. Она изучает методы получения и оценки диагностической информации, диагностические модели и алгоритм принятия решения. Целью ...

За таблицами — наше будущее!

Та или иная СУБД зависит от модели, которая положена в основу базы. В наше время стали наиболее распространенными две модели: реляционная (модель отношений) и объектно-ориентированная (модель объектов).

О них и пойдет речь.

Начнем с реляционной модели. В далеком 1969 году американский математик доктор Э.Ф. Кодд (Е.F. Codd) проанализировал сложившуюся к тому времени ситуацию по базам данных и пришел к выводу, что дело плохо. Во всех имевшихся в то время моделях были существенные недостатки: избыточность данных, сложность обработки и отсутствие безопасности хранения информации и т.п. После тягостных раздумий Кодд решил создать свою модель — реляционную. Для тех, кто злостно прогуливал английский, напоминаем, что relation переводится как «отношение» или просто «таблица». Гениальный доктор просто реализовал хранение данных в табличной форме, то есть организовал такие «хранилища» в виде логических структур (физические методы хранения могут быть любыми).

Тем самым Кодд сумел добиться наглядности представления информации и удобства ее обработки. Благодаря достижению этого гения для формирования таблицы данных стало достаточно выполнить определенный логический запрос, подчиняющийся законам булевой алгебры. Среди операторов манипуляции данными существуют минимум три операции: извлечение строк (SELECT), извлечение столбцов (PROJECT) и объединение таблиц (JOIN).

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

Кроме базовых знаний, нам понадобятся основные определения, применимые к этой модели: тип данных, атрибут, кортеж, отношение и первичный ключ.

Тип данных — определение, которое соответствует понятию типа в языках программирования. Другими словами, для реляционной модели можно отметить такие основные типы, как «целые числа», «строки», «символы», «числа с плавающей запятой», «дата» и «деньги».

Атрибут — это столбец в таблице с данными. Например, если на экране имеется информация о хакерских течениях, эксплойтах и стаже деятельности, то все эти столбцы являются атрибутами.

Кортеж — строка в таблице с данными. Таким образом, исчерпывающая информация на определенного хакера является кортежем.

Отношение — таблица в целом. Описание типов данных, применяемых в табличке, называется заголовком отношения, а все остальное (собственно данные) — телом отношения.

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

При создании базы следует очень внимательно отнестись к заданию первичного ключа — в нашем примере ника хакера будет недостаточно (вдруг кто-нибудь захочет взять себе кличку своего кумира?).

Бывает, что для аутентификации вводится дополнительное поле с порядковым номером, который будет однозначно разным для каждой строки. Но никто не запрещает выбирать для первичного ключа два или три атрибута: все как ты пожелаешь, лишь бы это действие было логически обоснованным (подобный ряд атрибутов будет называться составным первичным ключом).

37 стр., 18434 слов

Проектирование Базы Данных для коммерческого предприятия

... решением здесь была и остается реляционная модель СУБД. Однако в последние годы область применения баз данных неизменно расширялась. С одной ... которые определяют потребности в новых средствах разработки баз данных и возможностях применения их. Мы рассмотрим кратко ... к работе с данными. Дальнейшее развитие компьютерных технологий и компьютеризация общества привела к тому что, базы данных стали ...

Связываем данные

Чтобы добиться эффективного управления базой, необходимо обеспечить связанность данных. Проще говоря, нужно уметь связывать две или более таблицы в БД (если они, конечно, там есть).

Для этого был придуман так называемый «внешний ключ», который представляет собой атрибут (или набор атрибутов) в одной таблице, совпадающий по типу с первичным ключом другой. Но также следует соблюдать условие, согласно которому каждое значение в столбце одной таблицы должно совпадать с каким-либо значением в другой.

В теории СУБД выделяется три вида связей: один-к-одному, один-ко-многим и многие-ко-многим. Расскажем подробно о каждом виде.

1. Один-к-одному. Этот вид связи применяется в том случае, когда первичный ключ одной таблицы ссылается на ключ другой. Чтобы было понятнее, приведём пример: допустим, у нас имеется три таблицы хакерской БД. Первая — информация о хакере: дата рождения, пол (девушки тоже бывают взломщиками) и ICQ. Вторая — хакерские течения (тип течения, его сложность и начальные капиталовложения).

Ну и третья — тип выхода в интернет (технология, скорость доступа, оценка безопасности).

Все эти таблицы нельзя свести в одну, так как в результате отсутствия связи между данными о доступе в интернет и о хакерских течениях (и не только о них) мы получим путаницу. А при реализации связи в виде трех разных таблиц (с помощью первичного ключа — порядкового номера) обеспечивается и высокая скорость обработки, и упорядоченность данных.

2. Один — ко — многим. Наиболее типичная связь. Реализуется при копировании первичного ключа одной таблицы в другую. В этом случае во второй таблице этот ключик называется уже внешним. Обратимся к примеру. Возьмем две таблицы — с информацией о хакере (таблица «Хакеры») и об отношениях с характеристиками эксплойтов, которые он написал (таблица «Эксплойты»).

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

Здесь в качестве внешнего ключа в таблице «Эксплойты» используется ник хакера, а в качестве первичного — название эксплойта. При этом внешний ключ «ник хакера» является первичным ключиком в таблице «Хакеры», а сюда введен намеренно для связи двух таблиц и организации поиска нужной информации. Кстати, отношение «Эксплойты» совсем не обязательно будет состоять лишь из одного атрибута — можно добавить характеристики операционок, к которым применим эксплойт, количество целей, тип (локальный или удаленный) и т.п.

3. Многие-ко-многим. Суть этого типа связи в том, что ключ в одной таблице связывается с ключом другой и наоборот. С этим типом в реляционной модели дела обстоят очень плохо. Точнее, эту связь напрямую вообще никак не реализовать. Чтобы обойти этот недостаток, используется классическое решение: добавляется промежуточное отношение, которое будет связано типом «один-ко-многим» как с первой, так и со второй таблицей. Опять наглядный пример. Имеем два отношения: информация о хакерах и данные о серверах, которые когда-то были взломаны. Если подумать, то мы владеем следующей структурой: одним злоумышленником могут быть хакнуты несколько серверов (так часто и бывает в жизни), а на один сер-вак могут поселиться несколько хакеров (одновременно или последовательно), если админ вовремя не пропатчил баг. Чтобы реализовать подобную схему в реляционной БД, мы добавим промежуточное отношение из двух полей: ник хакера и адрес сервера. Таким образом, эта вспомогательная таблица будет иметь связь «один-ко-многим» как с первым, так и со вторым отношением. Конечно, в этом случае повысится избыточность данных, поэтому эксперты рекомендуют избегать таких связей.

2 стр., 948 слов

Автоматизированные банки данных

... наименование, адрес, расчетный счет, название банка и прочие. Автоматизацию работы базы данных обеспечивает СУБД, кото­рая манипулирует с конкретной моделью организации данных на носителе. При построении логической ... Это файлы (массивы), б Технологическое обеспечение реализует информационные процессы в автоматизированных системах организационного управле­ния с помощью ЭВМ и других технических ...

Объектный рай

А как же обстоят дела с остальными СУБД? К какой модели принадлежат они? На самом деле, кроме реляционной модели существуют и другие. Ни одна из них на получила особого распространения, за исключением, пожалуй, объектно-ориентированной, которая появилась позже реляционной (поэтому ее иногда называют постреляционной) и применяется по сей день.

Основное условие в реляционной модели — это правило нормализации. Все значения таблицы должны быть логически неделимыми, столбцы и строки — неупорядоченными, и в отношении не должно быть двух одинаковых кортежей. Подобная нормализация часто нарушает естественные иерархические связи между объектами, что крайне неудобно, поэтому разработчики предложили новую СУБД, а именно — объектно-ориентированную. Суть такой парадигмы в том, что предметная область согласно ей представляется в виде объектов, которые соединены в так называемые классы. Каждый объект в классе наделяется пассивными характеристиками или методами. Управление объектом возможно только через имеющие отношение к нему методы. Атрибуты того или иного объекта могут принимать одно из множества допустимых значений, а набор конкретных значений определяет поведение объекта. Множество объектов с одним и тем же значением атрибутов и методов определяют класс объекта.

Получается, что теория объектно-ориентированной базы данных похожа на организацию любого объектно-ориентированного языка программирования. Так оно и есть. Любой класс объектов может быть унаследован от другого класса и может содержать в себе все его методы наряду с собственными. Также соблюдается правило инкапсуляции: менять значения атрибутов объекта разрешается только с помощью методов. И наконец, полиморфизм — это механизм переопределения методов у наследуемого объекта.

Основное достоинство ООБД в том, что такая база учитывает поведенческий аспект объекта, в отличие от реляционной СУБД, в которой между структурой и поведением есть разрыв. Правда, чтобы реализовать ООБД, потребуются специальные языки программирования, что сильно усложняет жизнь проектировщика.

Чтобы не допустить таких накладок, реляционную и объектно-ориентированную СУБД попытались объединить. Ясное дело, что для этого потребовалось бы расширять стандарты и модернизировать уже существующие языки программирования. Таким образом, крупные фирмы IBM и Oracle доработали свои СУБД добавив объектную надстройку над реляционным ядром системы.

Языки управления БД

Для каждой модели БД существует свой язык управления. Для реляционной модели таким языком является SQL (Structured Query Language, или структурированный язык запросов).

15 стр., 7227 слов

Понятие, разработка и проектирование баз данных

... разработки компьютерных информационных систем, основу которых составляют особым образом структурированные файлы, предоставляющие пользователю эффективные методы получения и анализа данных, необходимых для принятия оптимального решения. Системы управления базами данных (СУБД) ...

Создатели этого языка стремились максимально приблизить свое детище к человеческому (английскому) языку и при этом наполнить его логическим смыслом.

Язык SQL существенно облегчает работу тем, кто постоянно имеет дело с реляционными СУБД. Строго говоря, без этого структурированного языка многим несчастным пришлось бы писать программу, например, на С. Представьте: чтобы полноценно работать с таблицей, сначала необходимо создать этот объект, потом запрограммировать процедуры обращения к ней (извлечение и добавление строк).

Для избавления от подобного геморроя разработчики СУБД позаботились о создании языка SQL.

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

В большинстве объектно-ориентированных баз данных существует простой графический интерфейс, позволяющий пользователю получить доступ к объектам в навигационном стиле. При этом игнорируется принцип инкапсуляции: никто не запретит тебе увидеть внутренности объектов напрямую. Но, как говорят эксперты, навигационный стиль в ООБД — это в некотором смысле «шаг назад» по сравнению с языками запросов в реляционных СУБД. И мучительные поиски лучшего языка запросов к ООБД идут до сих пор.

Основные языки обращений к БД все же основываются на простом SQL-синтаксисе и имеют своего рода расширение, применимое к объектам. Примерами таких языков служат ORION, Iris и O2 Reloop.

Как мы видим, не одной реляционной моделью славится рынок баз данных. В наше время разработчики стараются расширять свои программные продукты различными нововведениями, добавляя объектно-ориентированные надстройки в уже существующее реляционное ядро СУБД. В дополнение к этому модифицируется и язык запросов SQL. В SQL3 уже существуют специфические методы для работы с ООБД, но их реализация пока оставляет желать лучшего.

Для нужд обычного человека вполне хватит реляционных СУБД, которые применяются повсеместно. Это и всенародно любимый MySQL, и менее любимый Access, и MSSQL. Подобных систем управления масса.

2. Типы баз данных

Локальная база

Самая простая база данных — локальная. В этом случае база и программа расположены на одном компьютере. Соединение с файлом базы данных происходит через специальный драйвер или напрямую. Драйвер умеет обрабатывать только простые запросы SQL-стандарта 1992 года и предоставлять данные программе или сохранять изменения в таблице. Все остальные манипуляции могут выполняться только программой. Таким образом, логика, данные и приложение работают как единое целое и не могут быть разделены.

Яркими и наиболее распространенными представителями такого рода баз являются Dbase (файлы с расширением.dbf), Paradox (расширение.db) и Access (расширение.mdb).

Форматы Dbase и Paradox — это даже не базы данных, а таблицы, потому что в одном файле может храниться только одна таблица данных. Индексы, ускоряющие поиск и осуществляющие сортировку, находятся в отдельных файлах. Таким образом, одна база данных может состоять из множества файлов, и это иногда приводит к определенным проблемам при поставке приложения конечному пользователю.

4 стр., 1747 слов

Технология создания баз данных в программе Microsoft Access

... информационной системы Сравнительная характеристика Microsoft Office Access и Open Office Base база данные office access Существует множество программ для создания баз данных. Я выбрала две программы, которые знакомы ... имя создаваемого файла базы данных. Например, для нашей базы данных мы выбрали папку Мои документы,а имя файла - гpyппa.MDB. Создав файл, Access раскрывает пустое окно базы данных и в ...

Файлы Access являются гибридом таблиц и баз данных. Здесь уже все таблицы и индексы хранятся в одном файле, что намного удобнее в управлении. К тому же среда управления базами Access наиболее удобна и доступна в любом офисном пакете от MS. В остальном MS Access обладает теми же недостатками, что и остальные представители этого сословия.

Самый главный недостаток локальных баз данных, как говорит юморист М. Задорнов, — «они тупые». Да-да. Качество и скорость доступа напрямую зависит от драйвера. В большинстве из них не было оптимизаторов SQL-запросов и какого-либо кеширования. Возможности железа использовались минимально, поэтому на больших базах запросы выполняются крайне медленно.

Таблицы Dbase и Paradox были разработаны слишком давно, и их самое слабое звено — это индексы. В этих таблицах нет транзакций и соответствующего журнала. После добавления новой записи, если драйвер не успел обработать изменения в индексах и произошла ошибка (пропал свет или произошел зависон), то индекс рушится и для восстановления приходится использовать специальные утилиты или переформировывать индексы. В базах Access таких проблем не было, потому что в них индексы защищены лучше.

Что такое разрушенный индекс? Индекс — это колонка, в которой все значения строк обязательно уникальны. Чаще всего для этих целей используется простой счетчик. Допустим, пользователь добавил запись и счетчик присвоил ей значение 195, но само значение счетчика не изменилось. При добавлении следующей записи счетчик снова пытается втулить нам число 195, но так как такая запись уже есть, происходит ошибка. Это и есть нарушение индекса, и лечить его достаточно просто (но нудно) — переформировать индекс.

Сетевая база данных

Почему локальные базы называют локальными? Да потому что с данными работает только один пользователь и потому что база данных и программа находятся на одном компьютере. В случае с небольшими проектами это нормально, но для больших объемов данных один оператор не справится с задачей и потребуется, чтобы несколько человек могли работать с общими данными.

Сетевые базы данных были призваны решить такие проблемы. В принципе, это те же локальные базы, только выложены они на сетевой диск сервера (это может быть простой файловый сервер или компьютер с шарами), и несколько клиентов обращаются к одной базе по сети.

Посмотрим, как происходит обращение к базе данных. Программа и драйвер находятся на клиенте, а данные находятся на сервере или просто на удаленном компьютере. Как программа получает данные? Клиент передает драйверу SQL-запрос, который должен быть выполнен, но данные-то находятся удаленно! Чтобы отработать запрос, вся нужная таблица (в случае с Access — вся база данных, потому что все в одном файле) выкачивается на компьютер клиента, где драйвер обрабатывает данные.

Надо побить того, кто придумал такую технологию, потому что это самое настоящее издевательство над системой. Представляете, что будет, если надо выполнить запрос на базе данных в 1 Гб с телефонным соединением в 34 Кб/с? Это то же самое, что заставить ЮКОС добывать нефть через трубочку для молочных коктейлей.

Но страшнее всего начали вести себя индексы. У таблиц Paradox, если они находились на расшаренном диске Win95, и приходилось ремонтировать индексы как минимум раз в неделю. Когда убрали файлы базы данных на сетевой диск сервера NetWare 3.11 (это был где-то 1998 год), проблемы с нарушением индексации сразу исчезли (наверное, потому что это действительно сервер, а не корявый Windows 9x).

9 стр., 4310 слов

Создание базы данных «Ресторан» (на примере ресторана ...

... Структура работы: курсовая работа состоит из введения, двух глав: практическая и теоретическая часть, заключения, списка литературы и приложений. Практическая значимость работы определяется возможностью использования её результатов для разработки маркетингового меню ресторана «Волна». ...

При сетевом соединении многопользование получалось неполное.

Клиент-сервер

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

В технологии клиент-сервер драйвер уже изменил свое назначение, и теперь он уже должен только знать, как подключится к серверу и передать ему запрос. Остальное перекладывается на плечи сервера. Такая технология намного сокращает трафик, особенно при хорошем программировании. Допустим, пользователю нужно увидеть все данные, в которых имя определенной колонки содержит слова на букву «А». Клиенту достаточно направить серверу всего лишь такой текст:

SELECT *

FROM Имя таблицы

WHERE Колонка LIKE `А % ‘

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

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

Получив нужные данные, сервер возвращает только их и ничего больше. Таким образом, клиент в любой момент может запросить у сервера нужные данные и не будет необходимости гонять по сети всю базу данных. При хорошо построенном приложении и оптимальных запросах клиент сможет работать с базой данных любого размера даже через модем в 56 Кбит/с. Неплохо? Главное — запрашивать только то, что нужно, и маленькими кусками.

Особенности клиент-сервера

Возможности клиент-серверных баз данных зависят от производителя. Самые простые возможности предоставляют такие базы, как MySQL. В них сервер имеет встроенный движок обработки запросов и основные возможности по обеспечению безопасности и распределению прав.

В более солидных клиент-серверных базах (MS SQL Server, Oracle и т.д.) есть следующие дополнительные возможности:

1. ВЬЮШКИ — функции, которые задействованы для обеспечения безопасности;

2. ТРИГГЕРЫ — функции, которые могут вызываться на определенные события (вставка, изменение и удаление данных), в этих функциях может производиться какая-то логика по обеспечению целостности данных;

3. РЕПЛИКАЦИЯ — объединение баз данных (допустим, у фирмы есть два офиса и в каждом из них своя база; настроив репликацию, обе базы могут автоматически сливаться в одну в главном офисе или обмениваться изменениями по расписанию);

4. ХРАНИМЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ, которые выполняются на сервере по мизерному запросу клиента и могут содержать целые подпрограммы с логикой, которые будут выполнять какие-либо действия; для написания таких программ используется уже не просто язык SQL, а его расширение — Transact-SQL (для MS баз) и PL/SQL (для Oracle и др.).

Список возможностей зависит от конкретной базы данных, ее навороченности и может быть больше или меньше.

Индексы на сервере

14 стр., 6581 слов

Разработка веб-приложения (2)

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

Из-за наличия в серверных базах данных управления транзакциями, про проблемы с индексами можно забыть. Допустим, пользователь добавил запись. В этот момент начинается транзакция (неявная), в течение которой производятся все необходимые действия по сохранению данных. Если что-то пошло неправильно и сохранение не прошло до конца, все изменения откатываются и ничего в работе сервера не нарушается.

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

В локальных базах данных индексы хранятся линейно. Это как колонка из упорядоченных данных, и для строк это то же самое, что выстроить все слова по алфавиту. Конечно же, такой индекс упрощает поиск. Когда происходит сканирование по индексу и когда программа видит, что уже пошло слово больше, чем задано в условии поиска, сканирование может прекращаться и не придется просматривать всю базу данных. Например, поищем слово «Абажур». Оно будет где-то в начале, и чтобы его найти, нужно просканировать всего лишь начало таблицы, не дальше, чем все слова на букву А. За счет того, что данные упорядочены, мы можем быть уверенными, что все остальные слова будут на буквы Б, В и т.д.

В случае с серверной базой индексы чаще всего (в зависимости от базы и типа индекса) хранятся немного по-другому — в виде дерева. Сколько слов надо проверить для поиска слова «якорь» в базе данных при линейном индексе? По сути, практически все. При древовидном хранении индекса — не более чем для слова «Абажур». Для пояснения древообразного индекса рассмотрим классическую задачу (в реальности все немного сложнее, но идея такая же).

В самом верху дерева хранится алфавит. Программа находит букву А и спускается на уровень ниже. Здесь она находит все слова на буквы А, Б и двигается еще ниже. И так — пока не найдется нужное слово

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

Третий уровень

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

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

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

Представим себе классическую задачу — появление новой версии базы данных или переход на базу качественно более нового уровня. Ну не хватает нам уже возможностей MySQL, захотелось заполучить всю мощь Oracle. Для этого переустанавливается сервер баз данных, изменяется сервер приложений на подключение к новой базе — и клиенты готовы к работе. Их обновлять не надо!

Но самое интересное то, что клиентская программа может быть какой угодно. Можно написать сценарии, которые позволят работать с сервером приложении прямо из браузера. В этом случае с базой смогут работать пользователи на любой платформе (Windows, Linux и т.д.).

Логика

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

Если в сети не так уж и много компьютеров (не больше 20-ти) и сервер достаточно мощный, то можно сервер приложений и базу данных расположить на одном физическом сервере. В этом случае обмен данными между сервером приложений и базой будет происходить внутри одного компьютера, а не по сети, что может существенно снизить нагрузку на сетевое оборудование.

Допустим, сервер приложений и база данных находятся на разных серверах. Результаты запросов будут сначала идти через коммутатор от базы данных к серверу приложений, а затем через тот же коммутатор к компьютерам клиентов. Таким образом, по сети дважды пролетают одни и те же данные. Чтобы от этого избавиться, я чаще всего объединяю в одном физическом сервере логику и данные.

Что же выбрать для своего проекта? Все очень просто. Если к примеру пишется база, с которой будет работать одновременно только один человек, то однозначный выбор — локальная база. Больше всего для этого подходит MS Access за его надежность и за то, что драйверы доступа к этой базе есть на всех компьютерах (особенно если там установлен MS Office) и их не надо тянуть с инсталлятором.

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

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

Основы Access — реляционной базы данных

Определение (задание структуры) данных

Во время работы с документом или электронной таблицей мы обычно полностью свободны в определении содержимого документа или каждой ячейки таблицы. В текстовом редакторе такая гибкость необходима для того, чтобы поместить ту или иную информацию в нужное место на странице, а в электронной таблице мы должны иметь возможность хранить исходные данные, производить необходимые вычисления и представлять результаты в нужном виде. Эта гибкость обеспечивает успешное решение относительно небольших, хорошо сформулированных задач. Но когда электронная таблица содержит несколько сотен строк, а документы состоят из многих страниц, то работать с ними становится довольно трудно. С ростом объема данных вы можете обнаружить, что превышены установленные электронной таблицей или текстовым редактором ограничения на память или же вообще исчерпаны возможности компьютерной системы. Если мы разрабатываете документ или электронную таблицу, которые предназначены для других пользователей, то становится трудно (или даже невозможно) проконтролировать ввод новых и использование уже имеющихся данных. Например, когда в электронной таблице в одной ячейке должна храниться дата, а в другой — денежное поступление, пользователь чисто случайно может их перепутать. Кроме того, если нам понадобится работать не только с цифровой или текстовой информацией, мы можем обнаружить, что наша электронная таблица не может работать с информацией, представленной в виде рисунка или звука.

СУБД позволяет задать типы данных и способы их хранения. Мы также можете задать критерии (условия), которые СУБД будет в дальнейшем использовать для обеспечения правильности ввода данных. В самом простом случае условие на значение должно гарантировать, что мы не введем случайно в числовое поле буквенный символ. Другие условия могут определять область или диапазоны допустимых значений ваших данных. В наиболее совершенных системах мы можем задать отношения между совокупностями данных (обычно называемыми таблицами или файлами) и возложить на СУБД обеспечение совместимости или целостности данных. Например, можно заставить систему автоматически проверять отношение введенных заказов к конкретным клиентам.

Microsoft Access предоставляет нам максимальную свободу в задании типа ваших данных (текст, числовые данные, даты, время, денежные значения, рисунки, звук, документы, электронные таблицы).

Мы можем задать также форматы хранения (длина строки, точность представления чисел и даты времени) и предоставления этих данных при выводе на экран или печать. Для уверенности, что в базе данных хранятся только корректные значения, можно задать условия на значения различной степени сложности.

Обработка данных

Работа с данными в текстовом редакторе или электронной таблице значительно отличается от работы с данными в СУБД. В документ, подготовленный с помощью текстового процессора, мы можем включить табличные данные и использовать для их обработки ограниченный набор функций. Можно выполнить поиск строки символов в исходном документе, с помощью ОLЕ (Object Linking and Embedding) включить в него таблицы, диаграммы или картинки из других приложений. В электронной таблице некоторые ячейки содержат обеспечивающие нужные вычисления или преобразования формулы, а данные, которые являются для них исходной информацией, мы можем ввести в другие ячейки. Данные из электронной таблицы, созданной для какой-то конкретной цели, очень трудно потом использовать в решении других задач. Чтобы выполнить новую задачу, мы можем организовать связь с данными другой электронной таблицы или использовать ограниченные возможности поиска для копирования выбранного подмножества данных одной из электронных таблиц в другую, которая потребуется нам для решения новой задачи.

СУБД позволяет работать с данными, применяя различные способы. Например, мы можем выполнить поиск информации в отдельной таблице или создать запрос со сложным поиском по нескольким связанным между собой таблицам или файлам. С помощью одной единственной команды можно обновить содержание отдельного поля или нескольких записей. Для чтения и корректировки данных мы можем создать процедуры, использующие функции СУБД. У многих систем имеются развитые возможности для ввода данных и генерации отчетов.

В Microsoft Access для обработки данных некоторых таблиц используется мощный язык SQL (Structured Query Language — Структурированный язык запросов).

Используя, мы можем выделить из одной или нескольких таблиц необходимую для решения конкретной задачи информацию. Access значительно упрощает задачу обработки данных. Чтобы заставить Microsoft Access решать наши задачи, нам совершенно не требуется знать язык SQL. При любой обработке данных из нескольких таблиц использует однажды заданные вами связи между таблицами. Мы можем сконцентрировать свои усилия на решении информационных проблем, не затрачивая сил на построение сложной системы, которая отслеживает в нашей базе все связи между структурами данных. В Microsoft Access имеется также простое и в то же время богатое возможностями средство графического задания запроса — так называемый «запрос по образцу» (QBE, query by example), которое используется для задания данных, необходимых для решения некоторой задачи. Используя для выделения и перемещения элементов на экране стандартные приемы работы с мышью в Windows и несколько клавиш на клавиатуре, мы можем буквально за секунды построить довольно сложный запрос.

Управление данными

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

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

Предназначенная для коллективного пользования СУБД имеет средства, не позволяющие нескольким пользователям одновременно корректировать одни и те же данные. Поскольку в Access к данным могут иметь доступ одновременно несколько пользователей, в нем предусмотрены надежные средства зашиты и обеспечения целостности данных. Мы можем заранее указать, какие пользователи или группы пользователей могут иметь доступ к объектам (таблицам, формам, запросам) нашей базы данных. Microsoft Access автоматически обеспечивает защиту данных от одновременной их корректировки разными пользователями. Microsoft Access также опознает и учитывает защитные средства других подсоединенных к нашей базе структур (таких, как базы данных РагаDох, dBASE, и SQL).

Microsoft Access — Нечто большее, чем СУБД

Точно определив, какие именно данные нам нужны, каким образом они будут храниться в памяти и какая должна быть система доступа к данным, мы тем самым решили только вопрос управления данными. Кроме этого нужен еще простой способ автоматизации решения предстоящих типовых задач. Даже если мы можем разработать достаточно сложные «прикладные» электронные таблицы, у нас все равно не будет средств отладки и управления работой таких приложений, позволяющих легко создать, скажем, полные формы для заказов или систему учета материально-производственных запасов. Напротив, СУБД специально проектируются для создания приложений. Они представляют нам необходимый инструментарий для управления данными и их обработки, а также дают возможность каталогизировать объекты приложения и управлять взаимосвязями между ними. При этом вместе с СУБД в вашем распоряжении оказывается язык программирования и средство отладки.

В свете вышесказанного для автоматизации решения ваших задач нам необходимы мощная реляционная СУБД и система разработки приложений. Практически все существующие СУБД имеют средства разработки приложений, которые могут быть использованы программистами или квалифицированными пользователями при создании процедур для автоматизации управления и обработки данных. К сожалению, многие системы разработки приложений для создания процедур требуют знания некоторого языка программирования, например Си или Xbase. Несмотря на всю их силу и богатство средств, для успешного их использования от нас требуется наличие определенной профессиональной подготовки и опыта работы с ними. К счастью, в имеются средства, позволяющие легко проектировать и создавать приложения для работы с базами данных без знания языка программирования. Работа в Microsoft Access начинается с определения реляционных таблиц и их полей, которые будут содержать данные. Сразу после этого мы с помощью форм, отчетов и макросов сможете определять действия над этими данными.

Формы и отчеты можно использовать для задания форматов вывода данных на экран и дополнительных вычислений, что очень похоже на работу с электронными таблицами. Но в этом случае содержащиеся в формах и отчетах форматы и инструкции по проведению вычислений отделены от данных (находящихся в таблицах), так что мы имеем полную свободу действий в использовании данных, не меняя при этом сами данные — достаточно создать дополнительную форму или отчет, использующие те же самые данные. Если нам нужно автоматизировать некоторые действия, то для установления связей между определенными формами и отчетами или для выполнения определенных действий в качестве отклика на некоторое событие (например, изменение данных в некотором поле формы) можно без особого труда создать макросы. Если вам нужны более изощренные средства, например библиотечные утилиты Windows, мы можете написать процедуру на Access Basic.

Использованные материалы

1.Глушаков С.В., Ломотько Д.В. Базы данных. — Харьков: Фолио; М.: ООО «Издательство ACT», 2002. — 504 с.

2.Кошелев В.Е. Access 2007. — М.: ООО «Бином-Пресс», 2008 г. — 592 с.

3.Фуллер, Дж. Microsoft Office Access 2007 для «чайников».: Пер. с англ. — М.: ООО «И.Д. Вильямс», 2007. — 384 с.

4.Мак-Дональд, М. Access 2007 — Недостающее руководство. — СПб.: «БХВ-Петербург», 2007. — 784 с.

5.Бакаревич Ю.Б., Пушкина Н.В. Самоучитель Microsoft Access 2010. — СПб.: БХВ-Петербург, 2010. — 432 с.

6.Microsoft Access

7.Базы данных и системы баз данных

8.Теория СУБД

9.Microsoft Access как настольная СУБД реляционного типа

10.VBA [http://ru.wikipedia.org/wiki/VBA, режим доступа: свободный, дата считывания 25 мая 2011 г.]