
ЛЕКЦИЯ 1
1. Цель и задачи дисциплины, организация занятий
2. Эволюция систем обработки данных. Назначение баз данных. Основные проблемы
обработки данных на простом примере реляционной базы данных
1. Цели и задачи дисциплины
Целью преподавания дисциплины "Базы данных" является ознакомление студентов с
современными технологиями автоматизированной обработки структурированных данных с
закреплением теоретических сведений в процессе выполнения практических заданий по
проектированию и реализации приложений баз данных (БД).
В результате изучения дисциплины студент должен знать:
- назначение и основные принципы организации БД;
- основные модели БД и способы их реализации;
- способы физической организации файлов БД;
- основные положения реляционной модели и метода сущность-связь;
- назначение нормализации и процедуру нормализации БД
- теоретические языки запросов (реляционная алгебра, реляционное исчисление);
- структурированный язык запросов SQL и язык QBE, принципы обработки запросов;
- жизненный цикл информационных систем и методологию проектирования БД;
- принципы функционирования СУБД;
- основы построения WEB – приложений БД.
В результате изучения дисциплины студент должен уметь:
- выполнять концептуальное проектирование БД с применением метода сущность –
связь и пакета визуального моделирования ERWIN;
- выполнять логическое проектирование БД с применением метода нормализации
отношений;
- выполнять физическое проектирование БД с применением методов денормализации и
использованием программных средств СУБД MS Access, MS SQL Server, CACHE;
- разрабатывать приложения БД в среде MS Access;
- устанавливать и настраивать сервера БД MS SQL Server и CACHE;
- создавать простейшие WEB – приложения БД;
- формулировать запросы на языке SQL;
- решать практические задачи по оптимизации запросов и построению графиков
выполнения транзакций.
2. Организация занятий
Материал лекций будет предоставлен в электронном виде. Основная задача
лекционных занятий – усвоить материал рассматриваемой темы в процессе обсуждения
особенностей затрагиваемых вопросов, совместного решения практических задач и
выполнения самостоятельных работ.
Запланировано проведение 8 самостоятельных работ, на выполнение каждой из
которых будет отведено 15-20 минут лекционных занятий. Самостоятельная работа будет
оцениваться в 0.5-2 балла. При выполнении самостоятельной работы позже запланированной
даты без уважительной причины, оценка за ее выполнение снижается на 0.5 – 1 балл (в
зависимости от срока задержки).
Курс включает 8 лабораторных работ.
Выполнение лабораторной работы оценивается в 1-4 балла. Тема лабораторной работы
и задание на ее выполнение составлены из расчета возможности выполнения работы в
течение отведенных четырех часов и оформления протокола по лабораторной работе в
рамках времени, отведенного на самостоятельную работу по материалу курса. Каждая
лабораторная работа выполняется в соответствии с методическими указаниями по данной
лабораторной работе и заданием, выданным индивидуально или на группу не более чем из
двух студентов.
Отчет по лабораторной работе включает практическую часть – выполнение задания
должно быть продемонстрировано на компьютере в соответствии с требованиями,
изложенными в методических указаниях. Максимальная оценка за практическую часть
составляет 2 балла.
Отчет по лабораторной работе включает теоретическую часть – с помощью вопросов,
приведенных в методических указаниях, а также по содержанию практической части
преподаватель контролирует самостоятельность выполнения задания, а также уровень
понимания рассмотренной темы. Протокол выполнения лабораторной работы выполняется в
соответствии с шаблоном протокола и включает описание выполнения лабораторной работы
и дополнительные сведения, состав которых указывается в методических указаниях по
данной лабораторной работе. Максимальная оценка за теоретическую часть составляет 2
балла.
Таким образом, максимальная оценка за выполнение лабораторной работы составляет 4
балла, и может быть поставлена при полном выполнении всех требований к работе и отчете
на следующем после данной темы занятии. При более позднем отчете без уважительной
причины оценка должна быть снижена на 1 балл за каждое просроченное занятие (но не
более чем на 2 балла). Преподаватель может поднять оценку на 0.5 или на 1 балл при
максимальном выполнении всех требований задания или при выполнении некоторых
дополнительных требований.
Повысить общую оценку за выполнение лабораторных работ студент может при
выполнении дополнительных заданий по согласованию с преподавателем.
Курс предусматривает выполнение курсовой работы.
Курсовая работа заключается в составлении технического задания на разработку БД по
одной из указанных тем.
Выполнение курсовой работы оценивается в 12 баллов: В 0-4 балла оценивается ход
работы над техническим заданием ко второй контрольной неделе. Итоговая оценка
составляет 0-8 баллов и проставляется на последнем зачетном занятии. В случае, если
курсовая работа сдается позже указанного срока без уважительной причины, итоговая
оценка должна быть снижена в соответствии со сроком задержки (но не более чем на 4
балла). Выполнение курсовой работы предусматривает два контрольных этапа (перед второй
контрольной неделей и на 7-8 лабораторной работе), на которых преподаватель
контролирует выполнение работы и указывает на недостатки и недочеты, подлежащие
исправлению.
Итоговой контроль успеваемости по дисциплине осуществляется посредством
экзамена. К экзамену допускаются студенты, допущенные преподавателем
(преподавателями) по результатам выполнения лабораторных работ (должны быть отчитаны
все лабораторные работы), самостоятельных работ (должны быть выполнены все
самостоятельные работы), курсовой работы (курсовая работа должна быть зачтена).
Суммарное количество баллов должно быть не ниже 41. Максимальное количество баллов
составляет 60, однако студент по рекомендации преподавателя может получить до 10
дополнительных баллов по результатам отличного выполнения лабораторных,
самостоятельных и курсовой работ, которые включаются в итоговую оценку, полученную на
экзамене.
На экзамене студент должен ответить на 2 теоретических вопроса по материалам
лекционного курса. При ответе оценивается уровень понимания материала: умение
самостоятельно формулировать и объяснять используемые понятия, знание связанного
материала (по формулировкам других экзаменационных вопросов), практические навыки по
теме вопроса (составление и объяснение примеров). Каждый вопрос оценивается в 0-12
баллов.
На экзамене студент должен решить практическую задачу по материалам лекционного
курса и самостоятельных работ. Оценивается полнота и корректность решения задачи.
Максимальная оценка за решенную задачу составляет 16 баллов.
Таким образом, максимальная оценка за экзамен составляет 40 баллов. В случае, если
оценка, полученная на экзамене ниже 21 балла, экзамен считается не сданным.
Общая оценка по дисциплине складывается из баллов полученных за работу в семестре
(41 - 60) и баллов экзамена (21 -40) и составляет 61 – 100 баллов.
3. Назначение баз данных.
Основной проблемой, обусловившей развитие теории и практики баз данных, является
обеспечение надежного контролируемого хранения необходимых данных между сеансами
работы, их передачи между рабочими местами и эффективного их извлечения по мере
необходимости. Человечество с самого своего возникновения стремилось решать данную
задачу, пользуясь мозговыми образами, словесными и письменными средствами. По мере
развития человека совершенствовались мыслительный процесс человека, выразительные
средства языка и письма. Однако, по мере роста требований к объему хранимой, искомой и
передаваемой информации, к скорости и точности выполнения соответствующих операций,
работа с данными стала узким звеном в деятельности практически всех организаций,
независимо от рода деятельности. В соответствии с этим, начали создаваться и
использоваться аппаратные и программные средства автоматизированной обработки
информации.
С тех пор действует замкнутый круг развития: новые возможности обработки
информации позволяют организациям значительно повысить эффективность своей работы, и
расширить спектр своей деятельности. Это, в свою очередь, влечет появление новых, пока
нереализованных требований к программно-аппаратным средствам обработки информации.
Их удовлетворение вновь позволяет организациям повысить эффективность своей работы и
поставить новые требования к обработке данных. И так далее.
В процессе развития средств обработки данных были выявлены следующие
характерные черты «идеальных» информационных систем обработки информации.
1. Обработка постоянных (перманентных) данных: данные хранятся в соответствии
с командами записи, до команд изменения/удаления данных, независимо от каких-либо
побочных эффектов, в отличие, например, от данных в оперативной памяти.
2. Централизованная обработка данных на основе стандартов: к одним и тем же данным должны иметь доступ различные программы обработки данных, разрабатываемые в общем случае независимо друг от друга, в соответствии с этим необходимы некоторые соглашения о структуре данных и способах доступа к ним.
3. Интеграция данных: данные различного характера и предназначения могут использоваться совместно, в соответствии с чем удобно их обрабатывать единым образом –
так, как если бы они были из одного источника.
4. Независимость (самодостаточность) данных от программ обработки: для
максимального упрощения сопровождения и развития как программного компонента
информационной системы, так и информационного, необходимо максимально обеспечить их
независимость друг от друга. В этом случае их модификацию (модификацию программы
обработки данных или изменение структуры хранимых данных) можно будет выполнять
также независимо. Данная возможность достигается совместным хранением в БД данных и
метаданных (информации о структуре хранимых данных), в соответствии с которой
приложение осуществляет доступ к данным.
5. Целостность хранимых данных. При хранении данных необходимо обеспечить
контроль их непротиворечивости (особенно в случае дублирования части данных) и
корректности связей между элементами данных.
6. Эффективность обработки данных: В общем случае операции записи данных из
памяти в устройство долговременного хранения (жесткий диск), чтения в оперативную
память, удаления данных, а также многоаспектного поиска можно реализовать с разной
эффективностью. Вопрос эффективности (в частности скорости обработки данных и
максимально возможное число одновременно подключенных пользователей) является
важнейшими показателем информационных систем, и реализация соответствующих
эффективных алгоритмов является дорогим и длительным этапом их разработки. В
соответствии с этим, удобно использовать некоторые стандартные, специально созданные
программные средства, реализующие эффективные алгоритмы доступа к данным
произвольной структуры.
7. Язык управления данными: в процессе решения задачи данных необходимо
формировать сложные запросы к данным, которые часто не могут быть выполнены
стандартными командами программных средств, а программирование соответствующих
процедур с использованием стандартных команд достаточно трудоемко. В соответствии с
этим удобно использовать некоторый язык запросов, позволяющий без программирования
описать требуемые действия над данными или искомый результат обработки данных.
Попытки комплексного удовлетворения указанных требований привели к созданию и
развитию теории баз данных, занимающейся вопросами разработки и анализа оптимальных
схем (моделей) представления данных, эффективных алгоритмов их обработки,
проектированию аппаратных средств, оптимизированных для работы с данными.
В качестве практической реализации теоретических разработок теории выступают
различные системы управления базами данных, ориентированные на эффективную
обработку данных произвольной структуры.
4. Эволюция систем обработки данных
Рассмотрим основные принципиальные схемы обработки данных.
1. Информационные системы с низкоуровневым доступом:
носитель??двоичные данные ??приложение ?? пользователь
Приложение должно самостоятельно формировать последовательности команд
носителя для реализации каждой из процедур обработки данных.
Удовлетворяют признаку 1.
2. Файловые информационные системы
носитель??двоичные данные??файловая система??приложение??пользователь
Удовлетворяют признаку 1, частично 2.
Данные представляются на носителе в составе файлов – логических единиц, не
требующих при их обработке знания команд носителя и явного указания адресов фрагментов
данных на носителе. Файл представляет собой последовательность байтов – минимальных
единиц представления информации в оперативной памяти компьютера. Для представления
больших структурных единиц данных (имя, дата рождения и др.) так же как и в случае
низкоуровневого доступа используются наборы байтов, которые в свою очередь
группируются в наборы верхнего уровня (паспортные данные включают имя и дату
рождения и, в свою очередь входят в данные о сотруднике некоторого учреждения).
Соответствующим образом файл делится на фрагменты байтов, и информация о таком
разделении «зашита» внутри приложения. Изменение структуры влечет изменение
(переписывание) процедур обработки данных в приложении.
3. Информационные системы с базами данных
а) носитель??двоичные данные??файловая система?? СУБД?? приложение??пользователь
б) носитель??двоичные данные?? СУБД?? приложение??пользователь
Удовлетворяют признаку 1-7.
Данные представляются в качестве экземпляров (реализаций) некоторых шаблонов
(заготовок под хранение данных, описанных в рамках некоторой модели представления
данных). Для данных шаблонов указаны правила размещения в них данных (перечень и типы
элементов, допустимые значения и т.д.), а также правила связи между элементами шаблонов
разного типа. Описания шаблонов хранятся вместе с самими данными (экземплярами
шаблонов) в базе данных, в соответствии с чем любое приложение может определить состав
хранимой информации. Для управления данными (создания и модификации информации о
шаблонах, создания и модификации данных) используются стандартные процедуры и языки
манипулирования и описания данных, реализованные в рамках специальных программных
систем – систем управления базами данных.
Система управления базой данных (СУБД) – комплекс программных и языковых
средств, необходимых для создания баз данных, поддержания их в актуальном состоянии и
организации поиска в них необходимой информации.
Таким образом, наиболее полно удовлетворяют представлению о «идеальной»
информационной системе обработки данных именно системы с базами данных. Далее мы
внимательно рассмотрим определение базы данных и познакомимся с наиболее развитым
направлением в теории и практике баз данных – реляционными базами данных.
5. Определение базы данных
База данных (БД) - поименованная совокупность структурированных данных,
хранимых в памяти вычислительной системы стандартным способом и отображающих
состояние объектов и их взаимосвязей в рассматриваемой предметной области.
Рассмотрим подробно данное определение и его элементы:
а) предметная область – фрагмент реального мира, подлежащий автоматизации.
Предметная область содержит только те сущности, их взаимосвязи и процессы изменения
сущностей и взаимосвязей, которые необходимы для корректной работы рассматриваемой
(разрабатываемой) автоматизированной системы. Сущностью или информационным
объектом предметной области называется некоторое понятие, общее для ряда объектов
реального мира. Сущность характеризуется набором признаков, важных для
рассматриваемой предметной области, состав которых позволяет отделить объекты
(экземпляры) одной сущности от объектов (экземпляров) другой сущности предметной
области, а значения которых позволяют отличить различные экземпляры одной сущности.
Так, автоматизированная система контроля успеваемости студентов университета
содержит списки студентов и академических групп университета (студент и группа –
сущности предметной области), информацию о разбиении студентов по группам (связи
сущностей группа и студент), правила определения текущего и итогового рейтинга
студентов (процессы).
Сущность «студент» характеризуется следующим набором признаков (атрибутов),
важных для предметной области «Контроль успеваемости студентов университета»:
Фамилия, имя, отчество, номер зачетной книжки, номер академической группы, текущий
рейтинг по каждому из предметов. Номер зачетной книжки (а также имя, фамилия, отчество)
позволяют различать студентов как экземпляров сущности «студент». Академическая группа
включает набор признаков: наименование группы, наименование факультета. Состав
наборов признаков отличают сущности «группа» и «студент».
б) состояние объектов и их взаимосвязей – под состоянием объекта (как экземпляра
сущности) подразумевается набор значений признаков, определяющих объект. Значения
признаков могут меняться со временем (т. е. меняется состояние объектов). Так у студента
может измениться академическая группа (при переходе на следующий курс) и текущий
рейтинг. При переходе на следующий курс также меняется и взаимосвязь объектов –
академических групп и студента (был связан с одной группой, стал связан с другой).
в) структурированные данные – данные, элементы которых упорядочены в
соответствии с некоторыми соглашениями. К каждому элементу структурированных данных
можно обратиться непосредованно, используя информацию о структуре. Например, если
данные хранятся в таблице, то имя пятого ученика мы можем получить из ячейки,
находящейся на пересечении столбца «Имя» и пятой строки таблицы, если данные
структурированы с помощью таблицы. Кроме определения правила расположения элементов
данных в общем хранилище данных структурирование часто подразумевает определение
типа данных – то есть способа их представления и объема требуемой для их хранения
памяти. В нашем случае имя может являться строкой из 25 символов.
г) хранимых в памяти вычислительной машины – подразумевается использование
вычислительной техники для хранения данных, в отличие от данных, хранимых
неавтоматизированно, например библиотечных каталогов.
д) стандартным способом – должно существовать описание правил структурирования
данных для того формата, в котором представлена рассматриваемая база данных. В
соответствии с этими правилами любое приложение может получить к этим данным доступ
независимо от приложения, с помощью которого рассматриваемая база данных была
создана.
е) поименованная – совокупность данных должна быть явно определена и фиксирована
заданием структуры хранимых данных и имени этой структуры. Каждое приложение
работает с определенной базой данных, используя ее имя для доступа к ней.
6. Основные проблемы обработки данных
на простом примере реляционной базы данных
Одним из наиболее простых для восприятия и эффективных для реализации методов
структурирования данных является реляционный метод.
В соответствии с ним каждая сущность предметной области представляется таблицей.
Каждый столбец такой таблицы содержит значения одного из атрибутов сущности.
Обязательным требованием реляционной модели является атомарность (неделимость)
значения хранимого в ячейке таблицы. Это означает, что значение ячейки во всех операциях
над данными выступает как единое целое и не может быть прочитано или изменено по
частям (по крайней мере командами СУБД для обработки данных БД).
Каждая строка содержит все признаки для одного из экземпляров сущности (каждому
экземпляру сущности соответствует одна строка в соответствующей таблице).
Связи между сущностями представляются связями между атрибутами таблиц. Для
заполненных данными таблиц связи показывают, какие экземпляры одной таблицы связаны с
экземплярами другой таблицы. Связь выполняется по совпадающим значениям одного или
нескольких столбцов связанных таблиц.
Пример.
а) Схема БД
Студент
Атрибут Тип
Фамилия Строка
Имя Строка
Группа
Отчество Строка
Атрибут Тип
№ Целое
Наименование Строка
зачетной число
Факультет Строка
книжки
Рейтинг Вещ.
число
Группа Строка
б) Наполнение БД
Студент Группа
Фамилия Имя Отчество № зачетной Рейтинг Группа Наименование Факультет
книжки
Иванов Сергей Иванович 36212312 92.5 ИВТ-463 ИВТ-463 ФиВТ
Петров Алексей Семенович 36312432 86.5 ИВТ-463 ИВТ-464 ФиВТ
Сидоров Евгений Петрович 33212343 89.8 ИВТ-563 ИВТ-563 ФиВТ
ХТ - 325 ХТФ
В реляционной модели различают следующие типы связей:
а) 1 : 1 (один к одному) – одной строке таблицы соответствует не более одной строки в
другой таблице (группа - староста)
б) 1 : N (один ко многим) – одной строке таблицы может соответствовать несколько
строк в другой таблице (группа - студент):
в) M : N (много ко многим) – одна строка первой таблицы связана с несколькими
строками второй таблицы, и одна строка второй таблицы связана с несколькими строками
первой (предмет - преподаватель).
Связь 1 : 1 является частным случаем связи 1 : M, а связь M : N можно представить с
помощью связей типа 1 : N (возможно, введением дополнительных таблиц или атрибутов в
муществующие таблицы). Таким образом, наиболее общим случаем связи является связь
типа 1 : N. В этом случае первая таблица называется родительской, вторая – дочерней. Один
или несколько атрибутов, по которым осуществляется связь, называются в дочерней таблице
внешним ключом.
Требованием реляционной модели является уникальность строк в каждой таблице.
Минимальный набор атрибутов, по совокупности которых все строки попарно различны,
называется ключом (первичным ключом) таблицы.
Проанализируем соответствие реляционных БД требованиям к информационной
системе:
1. Обработка постоянных (перманентных) данных. Таблицы сохраняются на диске в
одном или нескольких файлах.
2. Централизованная обработка данных на основе стандартов. В качестве стандарта
рассматриваются формат записи таблиц в файле, а также формат записи информация о
структуре таблиц.
3. Интеграция данных. Реляционные СУБД позволяют обрабатывать таблицы
одинаковым образом, кроме того, возможна обработка данных из нескольких таблиц как
данных одной объединенной таблицы.
4. Независимость (самодостаточность) данных от программ обработки: при
некоторых изменениях в структуре таблиц (добавление столбцов, изменение связей),
выполняемых независимо от существующих приложений обработки данных, приложения не
требует изменения. При этом может быть создано новое приложение обработки данных.
5. Целостность хранимых данных. При хранении данных необходимо обеспечить
контроль их непротиворечивости (особенно в случае дублирования части данных) и
корректности связей между элементами данных. На уровне БД осуществляется контроль
соответствия типов данных (в ячейку типа строка может быть записана только строка) и
ограничений целостности.
Контроль ограничений целостности обеспечивает сохранение корректности связей:
а) при добавлении строки в дочернюю таблицу – должен существовать
соответствующий ключ в родительской таблице
б) при добавлении строки в таблицу – должны различаться значения атрибутов ключа
новой строки и всех старых.
в) при удалении записи в родительской таблице должны быть удалены все связанные
записи в дочерней таблице
г) при изменении атрибутов связи строки родительской таблицы - должны измениться
соответствующие значения в связанных строках дочерней таблицы.
6. Эффективность обработки данных. Для реляционной модели БД теоретически
разработаны и практически реализованы эффективные алгоритмы обработки данных.
7. Язык управления данными. Для управления реляционными данными разработан
эффективный и универсальный структурированный язык запросов SQL. Кроме того,
различные СУБД содержат встроенные языковые средства обработки данных.
ЛЕКЦИЯ 4
Структурированный язык запросов sql
1. Общая характеристика языка
Структурированный язык запросов SQL основан на реляционном исчислении с переменными кортежами. Язык имеет несколько стандартов, наиболее распространенными из которых являются SQL-89 и SQL-92. В то же время язык не следует строго реляционной модели. В частности, в качестве операндов и результата оператора SQL могут выступать таблицы с повторяющимися строками.
Язык SQL предназначен для выполнения:
а) операций над таблицами (создание, удаление, изменение структуры);
б) над данными таблиц (выборка, изменение, добавление и удаление)
в) некоторых сопутствующих операций (управление доступом, управление индексами, управление транзакциями и др.).
SQL является непроцедурным языком и не содержит операторов управления, организации подпрограмм, ввода-вывода и т.п. В связи с этим SQL автономно не используется, обычно он погружен в среду встроенного языка программирования СУБД (например, FoxPro СУБД Visual FoxPro, ObjectPAL СУБД Paradox, Visual Basic for Applications СУБД Access). В современных СУБД с интерактивным интерфейсом можно создавать запросы, используя другие средства, например QBE. Однако применение SQL зачастую позволяет повысить эффективность обработки данных в базе. Например, при подготовке запроса в среде Access можно перейти из окна Конструктора запросов (формулировки запроса по образцу на языке QBE) в окно с эквивалентным оператором SQL. Подготовку нового запроса путем редактирования уже имеющегося в ряде случае проще выполнить путем изменения оператора SQL. В различных СУБД состав операторов SQL может несколько отличаться.
Язык SQL не обладает функциями полноценного языка разработки, а ориентирован на доступ к данным, поэтому его включают в состав средств разработки программ. В этом случае его называют встроенным SQL. Стандарт языка SQL поддерживают современные реализации следующих языков программирования: PL/1, Ada, С, COBOL, Fortran, MUMPS и Pascal.
В специализированных системах разработки приложений типа клиент-сервер (данную архитектуру мы рассмотрим позже) среда программирования, кроме того, обычно дополнена коммуникационными средствами (установление и разъединение соединений с серверами БД, обнаружение и обработка возникающих в сети ошибок и. т. д.), средствами разработки пользовательских интерфейсов, средствами проектирования и отладки.
Различают два основных метода использования встроенного SQL: статический и динамический.
При статическом использовании языка (статический SQL) в тексте программы имеются фиксированные по структуре вызовы функций языка SQL, включаемые в выполняемый модуль в процессе компиляции. Параметры запросов (обычно представляют константные значения, с которыми сравниваются значения полей в таблицах), являющиеся переменными языка программирования, позволяют добиться некоторой гибкости статических запросов.
При динамическом использовании языка (динамический SQL) предполагается динамическое построение запроса в форме текстовой строки. Данная строка используется как параметр для функции выполнения SQL-запросов, которая выполняет синтаксический анализ строки запроса и формирует на его основе последовательность команд БД. Динамический метод обычно применяется в случаях, когда в приложении заранее неизвестен вид SQL-вызова. В результате выборки данных из одной или нескольких, таблиц может быть получено множество записей, называемое представлением. Представление по существу является таблицей, формируемой в результате выполнения запроса, которая существует «виртуально» только до завершения выполнения программы.
Для удобства работы с представлениями в язык SQL введено понятие курсора. Курсор представляет собой своеобразный указатель на набор записей в представлении, обеспечивающий в каждый момент доступ лишь к некоторой небольшой части строк представления. С помощью операторов перемещения курсора по записям можно получить доступ ко всем строкам таблицы.