Системы баз данных. Учебно-методический комплекс
.pdfкаждой таблицы теоретически неограниченно, хотя на практике ограничения, естественно, существуют.
В модели реляционной базы данных атрибут (столбец) или набор атрибутов (столбцов), значение которого однозначно определяет строки таблицы, называется ключом (key). Ключ, который уникально определяет строку в таблице, называется первичным ключом (primary key). Он используется для идентификации записи в таблице. Если добавляется столбец, который является первичным ключом одной таблицы, ко второй таблице, то там этот столбец будет называться внешним ключом (foreign key). Столбец называется внешним ключом потому, что он используется только для реализации операции поиска строк с одинаковыми значениями ключа в логически связанных между собой таблицах. Для отношения Расписание ключом является атрибут Номер_рейса.
Под БД в различных РСУБД понимается табличное хранение данных, но название “база данных” может объединять не только таблицы, но и производные этих таблиц (в виде отчетов, форм, виртуальных таблиц - представлений), формы запросов, программные модули и т.д.
Лекция 2. Проектирование реляционных БД
2.1. Этапы проектирования баз данных
Предметная область - часть реального мира, подлежащая изучению с целью организации управления и, в конечном счете, автоматизации. Каждый фрагмент предметной области характеризуется множеством объектов и процессов, использующих объекты, а также множеством пользователей, характеризуемых различными взглядами на предметную область.
Отсюда вытекают основные этапы, на которые разбивается процесс проектирования базы данных информационной системы.
Концептуальное проектирование - сбор, анализ и редактирование требований к данным. По окончании данного этапа получаем концептуальную модель. Часто она представляется в виде инфологической модели "сущность-связь".
Логическое проектирование - преобразование требований к данным в структуры данных. На выходе получаем СУБД-ориентиро-
Ф КазНПУ 0703-12-11 Учебно-методический комплекс дисциплины для обучающегося
11
ванную структуру базы данных и спецификации прикладных программ. На этом этапе часто моделируют базы данных применительно к различным и конкретным СУБД и проводят сравнительный анализ моделей. Создание даталогической модели.
Физическое проектирование - определение особенностей хранения данных, методов доступа и т.д.
Различие уровней представления данных на каждом этапе проектирования представлено ниже.
Концептуальный уровень (сущности, атрибуты, связи) – это представление аналитика (инфологическая модель).
Логический уровень (записи, элементы данных, связи между записями) – это представление программиста (даталогическая модель).
Физический уровень (группирование данных, индексы, методы доступа) - это представление администратора (физическая модель).
2.2. ER-метод проектирования БД
Цель инфологического моделирования – обеспечение наиболее естественных для человека способов сбора и представления той информации, которую предполагается хранить в создаваемой базе данных. Поэтому инфологическую модель данных пытаются строить по аналогии с естественным языком (последний не может быть использован в чистом виде из-за сложности компьютерной обработки текстов и неоднозначности любого естественного языка). Наиболее распространенный метод проектирования информационной модели предметной области – метод "сущность-связь" (ER-метод).
Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства (атрибуты).
Сущность – любой различимый объект (объект, который мы можем отличить от другого), информацию о котором необходимо хранить в базе данных. Сущностями могут быть люди, места, самолеты, рейсы, вкус, цвет и т.д.
Атрибут – поименованная характеристика сущности. Его наименование должно быть уникальным для конкретного типа сущности, но может быть одинаковым для различного типа сущностей (например, ЦВЕТ может быть определен для многих сущностей: СОБАКА, АВТОМОБИЛЬ, ДОМ и т.д.). Атрибуты используются для определения того, какая информация должна быть собрана о сущности.
Ф КазНПУ 0703-12-11 Учебно-методический комплекс дисциплины для обучающегося
12
Связь устанавливается между двумя или более сущностями. Одно из основных требований к организации базы данных – это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи. Наличие множества связей и определяет сложность инфологических моделей.
При построении инфологических моделей реляционных БД можно использовать язык ER-диаграмм (от англ. Entity-Relationship, т.е. сущность-связь). В них сущности изображаются помеченными прямоугольниками, связи – помеченными ромбами, атрибуты – помеченными овалами, а связи между ними – ненаправленными ребрами, над которыми может проставляться степень связи и необходимое пояснение.
Между двумя сущностям, например, А и В возможны четыре типа связей.
Первый тип – связь ОДИН-К-ОДНОМУ (1:1): в каждый момент времени каждому представителю (экземпляру) сущности А соответствует 1 или 0 представителей сущности В.
Второй тип – связь ОДИН-КО-МНОГИМ (1:М): одному представителю сущности А соответствуют 0,1 или несколько представителей сущности В.
Третий тип связи. Так как между двумя сущностями возможны связи в обоих направлениях, то существует еще тип связи МНОГИЕ- К-ОДНОМУ (М:1).
Четвертый тип - связь МНОГИЕ-КО-МНОГИМ (М:N). Одному представителю сущности А соответствуют 0, 1 или несколько представителей сущности В и наоборот.
В настоящее время при проектировании БД и приложений БД широко используются CASE-средства (Computer - Aided Software/System Engineering). Наиболее популярным CASE-средством разработки моделей данных предметной области в виде ER-диаграмм является программа ERWin.
2.3. Нормальные формы
Проблема проектирования реляционной базы данных состоит в обоснованном принятии решений о том, из каких отношений должна состоять БД и какие атрибуты должны быть у этих отношений.
Ф КазНПУ 0703-12-11 Учебно-методический комплекс дисциплины для обучающегося
13
Исходной точкой является представление предметной области в виде одного или нескольких отношений. Процесс проектирования представляет собой процесс нормализации схем отношений, причем каждая следующая нормальная форма обладает свойствами лучшими, чем предыдущая. Нормализация – это пошаговый процесс разложения исходного отношения на более мелкие и простые. Каждой нормальной форме соответствует некоторый определенный набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений.
В теории реляционных баз данных обычно выделяется следующая последовательность нормальных форм: первая нормальная форма (1NF); вторая нормальная форма (2NF); третья нормальная форма (3NF); нормальная форма Бойса-Кодда (BCNF); четвертая нормальная форма (4NF); пятая нормальная форма. На практике используют первые три нормальные формы.
Отношение находится в 1NF, если значение каждого атрибута в каждом кортеже (строке таблицы) не является множеством. Отношение находится в 2NF, если оно находится в 1NF и каждый не ключевой атрибут функционально полно зависит от составного первичного ключа. Отношение находится в 3NF, если оно находится в 2NF и нет транзитивных зависимостей не ключевых атрибутов от первичного ключа.
Лекция 3. Языковая среда реляционных СБД
3.1. Языки баз данных
Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. Языковые средства предназначены для общения пользователей с БД.
Языки описания данных (ЯОД) - Data Definition Language (DDL), используются для логического описания данных и должны выполнять следующие функции: идентифицировать тип данных, присваивать уникальное имя каждому типу элемента данных, определять ключи, специфицировать порядок вхождения одних данных в другие, устанавливать отношения между данными.
Язык манипулирования данными (ЯМД) - Data Manipulation Language (DML), обеспечивает интерфейс между пользователем и
Ф КазНПУ 0703-12-11 Учебно-методический комплекс дисциплины для обучающегося
14
СУБД. Если манипулирование данными встраивается в базовый язык, тогда базовый язык является языком программирования СУБД. Базовый язык - это язык программирования, использованный для создания СУБД. В настоящее время используются так называемые автономные языки программирования, в которые встраиваются ЯМД, что облегчает процесс программирования.
Языки управления данными (ЯУД) - Data Control Language (DCL), используются для управления данными.
В современных СУБД это деление является чисто функциональным. Обычно при реализации операторы объединяются в единую языковую среду и поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс
сбазами данных.
3.2.Язык программирования баз данных xBase относится к языкам четвертого поколения 4GL (4 Generation Language), и
используется в реляционных настольных dBase-подобных СУБД. В это семейство, кроме СУБД dBase, входят системы управления базами данных, разработанные другими фирмами. Далее в случае наличия нескольких версий одной и той же команды, используемой в различных СУБД, описывается версия команды, реализованная в СУБД Visual FoxPro под ОС Windows. Visual FoxPro является одной из наиболее pаспpостpаненных и высокоскоростных локальных систем управления БД для персональных компьютеров и характеризуется умеренными требованиями к вычислительным ресурсам, что позволяет использовать ее на персональных компьютерах любого класса. В настоящее время существует несколько модификаций этой системы, ориентированных на работу в широком диапазоне, как операционных систем (от MS DOS до Unix), так и аппаратных платформ (от IBM PC и их аналогов до мини-ЭВМ типа VAX).
Команды манипулирования данными языка программирования xBase предназначены для работы с отношениями - таблицами данных, состоящими из полей (столбцов) и записей (строк). Таблицы хранятся в файлах данных, имена которых имеют расширение .DBF. Каждое поле таблицы имеет свое имя, тип, длину (количество символов в поле для одной записи) и точность - количество дробных знаков после запятой (для числовых полей). В различных dBase-
Ф КазНПУ 0703-12-11 Учебно-методический комплекс дисциплины для обучающегося
15
подобных СУБД набор типов полей различается, но некоторые типы полей применяются во всех СУБД и не только dBase-подобных. К ним относятся следующие типы полей: символьный - Character (значение поля - любые символы, в том числе и буквы любого алфавита), числовой - Numeric или Float (значение поля - любые числа), дата - Date (значение поля - дата с указанием дня, месяца и года), логический - Logical (значение поля -.F.(False-ложь) или
.T.(True-истина)), поле типа «примечание» - Memo.
Команды языка xBase можно использовать в двух режимах. Интерактивный режим работыэто работа в диалоговом режиме в интерактивной среде СУБД: командарезультат команды. Программный режим работы представляет собой выполнение в среде СУБД программ, написанных на языке программирования xBase. Все СУБД, использующие xBase, поддерживают встроенный язык управления даннымиSQL. Поэтому впрограммыxBase можно включатькомандыSQL.
Большинство команд языка программирования xBase, обрабатывающих записи таблицы данных, в общем виде имеют следующую структуру (необязательные параметры команды выделены квадратными скобками):
ГЛАГОЛ [<диапазон>][<список_выpажений>] [FOR/WHILE<условие>],
где ГЛАГОЛ - команда; <диапазон> - область действия глагола; <cписок_выpажений> - фоpмулы, временные переменные памяти, имена полей таблицы данных, опеpатоpы, константы и т.д.; <условие> - условия команд FOR или WHILE. Допустимо сокращение составляющих команд до первых четырех символов. Квадpатные скобки отмечают необязательные паpаметpы. Символом «/» разделены взаимоисключающие параметры (см. FOR/ WHILE). FOR <условие> указывает, что действие команды распространяется внутри диапазона только на записи, удовлетворяющие заданному условию. WHILE <условие> означает выполнение команды до тех пор, пока указанное условие истинно.
Для указания диапазона действия глагола используются следующие служебные слова: ALL (область действия - вся БД); RECORD <n> (область действия - n-я запись в файле таблицы данных); NEXT <z> (область действия - следующие z записей, начиная с текущей записи); REST (область действия - все записи, начиная с текущей записи и до конца БД).
Ф КазНПУ 0703-12-11 Учебно-методический комплекс дисциплины для обучающегося
16
Структура файла таблицы данных создается командой: CREATE <имя_файла>
Введенное <имя_файла> - это имя таблицы данных (требования к именам файлов таблиц БД определяются операционной системой).
При необходимости изменения структуры активной таблицы данных используется команда: MODIFY STRUCTURE
Команда ввода записей в конец таблицы БД имеет формат: APPEND [BLANK]
Можно вводить новые записи после текущей записи БД. Для этого используется команда вставки записей: INSERT [ BEFORE ] [BLANK]
Для просмотра, редактирования, удаления имеющихся записей и добавления новых записей в активную таблицу данных используется команда BROWSE. Диапазоном действия команды по умолчанию является ALL (все), если отсутствуют необязательные параметры: <диапазон>, FOR <условие>. В качестве диапазона не используется параметр NEXT <z>.
Сокращенный формат команды представлен ниже:
BROWSE <диапазон> [ FIELDS <список_полей> ] [ FOR <условие>] [REST]
[FREEZE <имя_поля>] [LOCK <число_полей>] [NOAPPEND ] [NODELETE][NOEDIT|
NOMODIFY] [TITLE <текст_заголовка>]
Удаление записей из активной таблицы данных обычно осуществляется в два этапа. Сначала удаляемые записи должны быть помечены с помощью команды DELETE. Формат команды: DELETE [<диапазон> ] [ FOR/WHILE <условие>]
Если параметр <диапазон> отсутствует, диапазоном по умолчанию является только текущая запись. Помеченные записи физически удаляются командой PACK. Формат команды: PACK
Команда PACK окончательно удаляет все записи в активном файле таблицы данных, помеченные для удаления командой DELETE. Пометка записей для удаления может быть отменена при помощи команды RECALL. Формат команды:
RECALL [ <диапазон> ] [ FOR/WHILE <условие>]
Параметры команды RECALL имеют аналогичное значение, что
идля команды DELETE.
ФКазНПУ 0703-12-11 Учебно-методический комплекс дисциплины для обучающегося
17
Лекция 4. Работа с файлами в СБД. Стандартные функции в СУБД
4.1. Работа с файлами в СБД
Язык программирования xBase содержит команды, подобные командам операционной системы.
Информацию об имеющихся файлах в системе можно получить, используя команду:
DIR [*.*]
Работать с записями в таблице данных можно, если она открыта для пользователя, т.е. если она является активной. Активизация имеющейся таблицы данных осуществляется использованием команды: USE <имя_файла_таблицы_данных>
Закрытие активной таблицы данных можно выполнить командой USE (без параметров).
С файлами можно выполнять различные операции: копировать, переименовывать, уничтожать и т.д.
Копировать можно как закрытый, так и открытый файл. Команда копирования из закрытого файла любого типа <файл1>
в несуществующий файл <файл2> имеет формат: COPY FILE < файл1 > TO < файл2>
Имена файлов должны быть указаны с расширением. Команда копирования из открытого файла имеет формат: COPY TO < файл > [< диапазон> ] [ FIELDS < список_полей > ] [FOR/WHILE <условие > ] [ TYPE < тип_файла>]
Команда переименования закрытого файла имеет формат: RENAME < старое_ имя_файла> TO <новое_ имя_файла> Закрытый файл можно уничтожить. Команда уничтожения
файла имеет формат:
DELETE FILE <имя файла>
Найти необходимые записи в активной таблице данных можно командой LOCATE:
LOCATE [<диапазон>] [ FOR/WHILE <условие>]
Эта команда выполняет поиск в указанном диапазоне первой записи, удовлетворяющей указанному условию, но найденную запись на экран не выводит. Для продолжения поиска по указанному условию и в указанном диапазоне используется команда без параметров: CONTINUE.
Ф КазНПУ 0703-12-11 Учебно-методический комплекс дисциплины для обучающегося
18
Сортировка и индексирование проводятся с целью упорядочения записей в таблицах данных в алфавитном, хронологическом или числовом порядке (в зависимости от типа поля, по которому выполняется сортировка или индексирование). При сортировке создается новый отсортированный файл, куда заносятся записи (или часть записей) из сортируемого файла в определенном порядке. Команда сортировки активной таблицы данных имеет формат:
SORT <диапазон> TO <файл> ON <поле1> [/A][/C][/D] [,<поле2> [/A][/C][/D]...] [FOR/WHILE <условие>] [FIELDS <список_полей>]
Сортировка идет по полю - ключу, указанному в параметре ON <поле1>. Отсортированная таблица записывается в файл с расширением .DBF.
В случае необходимости экономии памяти вместо команды SORT используется команда INDEX, создающая индексный файл. В индексном файле хранятся только указатели номеров записей (индексы) в упорядоченном виде, но записи там отсутствуют. Формат команды:
INDEX ON <поле1> [+<поле2>[+...]] TO <индексный_файл> [FOR/WHILE <условие>]
При работе с индексным файлом он должен быть подключен к активной таблице данных, для которой создавался. При индексации создаваемый индексный файл автоматически подключается к файлу таблицы БД. Отключение индексного файла осуществляется автоматически при закрытии активного файла таблицы БД или командой SET INDEX TO (без параметров). Подключение индексного файла к активной таблице данных осуществляется командой:
SET INDEX TO <имя_индексного_файла>
Подключение индексного файла можно также осуществить при активизации таблицы данных командой:
USE <файл_таблицы_БД> INDEX <имя_индексного_файла> Главное назначение индексирования - это ускорение доступа к
данным. Поэтому аппарат индексирования широко применяется в реляционных системах, одним из недостатков которых является медленный поиск данных. В проиндексированном файле можно осуществить быстрый поиск необходимых данных по полю, по которому проводилось индексирование (по ключу).
Ф КазНПУ 0703-12-11 Учебно-методический комплекс дисциплины для обучающегося
19
4.2. Стандартные функции в СУБД
В xBase существуют специальные команды - функции, к которым относятся команды подсчета записей в активной таблице данных, вычисления среднего значения и суммы по числовым полям активной таблицы данных.
Команда подсчета записей в активной таблице данных имеет формат:
COUNT [<диапазон>] [ FOR/WHILE <условие> ] [ TO <
переменная>] Команда вычисления среднего значения для полей числового
типа активной таблицы данных имеет формат: AVERAGE [<диапазон>] [ <список_выражений> ]
[ FOR/WHILE < условие > ] [ TO <список_переменных>] Команда вычисления сумм для числовых полей имеет формат: SUM [<диапазон>] [<список_выражений>]
[FOR/WHILE <условие>] [TO <список_ переменных >] Диапазон по умолчанию имеет значение ALL. Параметры
FOR/WHILE указывают, что в операции участвуют значения полей тех записей, которые удовлетворяют указанному условию. Полученные результаты могут быть занесены в переменные, число которых должно равняться числу обрабатываемых полей.
Система программирования xBase содержит около 100 стандартных встроенных функций: функции для обработки числовых выражений, функции для работы с датой, функции для обработки файлов, функции для обработки символьных выражений.
Лекция 5. Программирование в СУБД
5.1. Командные файлы
Для организации различных видов представления и обработки данных, хранящихся в базах данных, разрабатываются приложения - прикладные программы. Они могут разрабатываться как в универсальных инструментальных средах программирования, так и в среде программирования СУБД. При программировании в среде dBase-подобных СУБД в программы можно включать все команды и операторы языка программирования xBase.
Имя файла программы имеет расширение .PRG. Это текстовый файл, который можно создать и корректировать в любом текстовом
Ф КазНПУ 0703-12-11 Учебно-методический комплекс дисциплины для обучающегося
20
