- •1.1. Системы бд и их характеристики. Бд, банк бд, субд, ипс.
- •1.2. Субд определение и функции.
- •1.3. Уровни классификации пользователей системы бд.
- •1.4. Определение данных в базах данных.
- •1.6. Манипулирование данными в субд.
- •1.10. Безопасность баз данных
- •1.11. Модели данных классификация моделей
- •1.16. Релятионная модель данных
- •1 .12. Объекты и отношения. Er-диаграммы, концептуальное проектирование.
- •1.17. Иерархическая модель данных.
- •1.15. Сравнение реляционного, иерархического и сетевого подходов к форме моделей данных.
- •1.18. Сетевая модель данных.
- •1.19. Логические структуры данных. (элемент, группа, отношение, представление).
- •1.20. Организация физических записей.Способы выделения элементов в физической записи.
- •Организация физических записей.
- •Способы выделения элементов в физической записи:
- •1.22. Последовательный файл, файл с указателем, индексирование по одному элементу.
- •1.26. Иерархическая организация (структура хранения).
- •1.26. Иерархическая организация (структура хранения).
- •2.2. Создание меню в субд vfp
- •2.3. Создание отчетов в субд vfp
- •2.4. Создание этикеток в субд vfp
- •2.1. Создание форм в субд vfp
- •2.5. Создание форм «один-ко-многим» в субд vfp. Установление отношения в форме.
- •2.8. Характеристика субд vfp.
- •2.6. Определение данных в субд vfp.
- •2.10. Программирование в субд vfp.
- •2.9. Создание и ведение бд в vfp (основные команды).
- •2.11. Операторы доступа и поиска команд. Языка системы vfp
- •2.12. Установление отношения в бд в субд vfp
- •2.14. Установление отношения в форме типа 1:n в субд vfp
- •2.13. Установление отношения c использованием команды set relation в субд vfp
- •2.7. Объектно-ориентированное визуальное проектирование форм в субд vfp
- •3.15. Язык Баз Данных sql.
- •3.17. Sql. Оператор select.
- •3.16. Управление доступом. Привилегии.
- •3.18. Sql : определение таблиц.
- •3.19. Sql : Модификация и удаление таблиц.
- •3.20. Sql: операторы insert, update, delete
- •3.21. Понятие транзакции.
- •3.22. Сериализация транзакций в распределённых субд. Двухфазная фиксация изменений.
- •3.23. Сериализация транзакций в распределенных субд на основе временных меток.
- •1.13. Этапы проектирования бд.
Обеспечение целостности БД
Целостность – фундаментальное свойство БД. Обеспечение целостности состоит в гарантии:
Нерушимости данных и связей между ними, в том числе при использовании многими пользователями
Быстрого восстановления без потерь при сбоях и авариях
Контроля данных
Два механизма внесения изменений:
2-х фазовый протокол фиксации изменений: при внесении изменений все объекты блокируются, при подтверждении изменения – блокировка снимается.
Отложенная транзакция – регистрируется время начала изменения данных
Скачок напряжения – установка фильтров или источников бесперебойного питания. БД сама закрывается или закрывает пользователь.
Гибель устройства, где хранится БД – резервное копирование – через определённый промежуток времени делается копия БД на другом носителе.
LOG – журнал (системный) – последняя копия используется при гибели БД. В системном журнале часто сохраняются и данные оперативной памяти.
Контроль данных.
Осуществляется при вводе данных – ФЛК(Формально – логический контроль). Позволяет контролировать тип данных, одз, шаблоны и т.д. Существуют также другие виды контроля, например семантический – по смыслу.
Безопасность – защита данных от случайного или преднамеренного доступа лиц, не имеющих на это права.
Секретность – право отдельных лиц определять, сколько и какой информации может быть передано другим лицам.
Безопасность обеспечивает:
Проверка полномочий ( имя пользователя, пароль)
Ограничение доступа. Существует два вида – привилегии доступа и привилегии безопасности.
Привилегии доступа – select(выбор данных),update(изменение данных),delete(удаление данных),insert(ввод данных). Привилегия доступа предоставляется пользователям разного типа (админы, владельцы и т.д.), по ролям (опр. Паролем), всем пользователям.
Привилегия безопасности – никогда группами – только конкретным пользователям. Необходимо сохранение секретных данных.
Уровни: security, владелец БД, оператор.
Существуют логические способы защиты информации (часто непредставление информации равносильно раскрытию данных) Используется разграничение информации по уровням секретности.
1.3. Уровни классификации пользователей системы бд.
Пользователи:
Создатели (владельцы)
Администратор
Программисты–разработчики (разработчики СУБД)
Программисты-разработчики прикладных программ
Конечные пользователи.
1.4. Определение данных в базах данных.
Данные – описание разных явлений, предметов вне зависимости от того, доступно полное понимание его или нет.
данные = информация
Модель данных – представление о предметной области в виде данных и связей между ними.
Модель данных может отображать концептуальное (инфологическое) представление данных, либо представление реляционное (даталогическое).
1.6. Манипулирование данными в субд.
Манипулирование- это соединение таблиц, удаление файла, переименовывание файла, удаление записей.
Используется язык SQL , так как можно создавать с его помощью таблицы.
Удаление строк:
пометить строку как удаленную(физически она не удаляется)
пометить можно в окне browse(cлева от строки) либо командой DELETE она помечает текущую строку.
команда Pack удаляет все помеченные строки.
Данные могут спасти если остался файл с расширением bak.
1.7 Модификация Баз данных
Возможны любые модификации, кроме переименования базы в многопользовательском режиме. Процедуры изменения базы данных подобны ее созданию. Используются те же методы Create и Append. Модификацию базы данных можно также проводить с помощью специальных запросов SQL.
1.8. Реструктуризация Баз данных.
Реструктуризация- изменение структура (шапки например)
изменение имен столбцов, внесение новых столбцов.
изменение типов данных.
изменение размера данных.
изменение индексов
замена связей м/у таблицами
1.9. Понятие целостности баз данных.
Целостность БД состоит в гарантии:
нерушимости данных и связи между ними. В том числе при использовании многими пользователями.
быстрого восстановления без потерь при сбоях и авариях
контроля данных
при вводе данных система контролирует связи
1.5. Языки запросов СУБД.
Язык запросов можно увидеть в Яндексе в пункте help
Яндекс обладает мощным языком запросов, позволяющим контролировать малейшие нюансы его поведения при поиске. Для использования наиболее востребованных команд не обязательно запоминать операторы — можно воспользоваться расширенным поиском. В остальных случаях знание языка запросов дает возможность решать сложные поисковые задачи.
Поисковый контекст
Для запросов из нескольких слов, Яндекс умеет определять, на каком максимальном расстоянии должны быть слова запроса, чтобы страница лучше всего отвечала на запрос. Вы можете указать требования к расстоянию в явном виде.
Слова идут подряд.
Такой порядок слов можно указать с помощью запроса в кавычках.
Пример
По запросу "красная шапочка" будут найдены страницы, где есть подряд два слова: вначале красная, затем шапочка.
Слова в одном предложении.
Ограничить поиск страницами, где слова запроса находятся в пределах предложения, вы можете, соединив слова оператором &.
Пример
Запрос культура & Китая найдет страницы, где есть сочетания слов культура Древнего Китая или Китай и его культура.
Слова в одном документе.
Если вам нужны документы, где присутствуют заданные слова — неважно, на каком расстоянии и в каком порядке — соедините их оператором &&.
Пример
По запросу продажа & сканеров && Новосибирск найдутся страницы, где в одном предложении должны встретиться слова продажа и сканеры, и где угодно на странице должно быть слово Новосибирск.
Расстояние между словами
Вы можете регулировать расстояние между словами с точностью до слова.
Слова на расстоянии в несколько слов.
Вы можете указать максимально допустимое расстояние между двумя любыми словами запроса, поставив после первого слова символ /, сразу за которым идет число, означающее расстояние.
Пример
Запрос великий /2 хурал найдет страницы, где есть фразы хурал великий, или великий народный хурал, или великий государственный хурал, но не найдет страницы, где есть великий государственный народный хурал (расстояние между словами равно 3).
Слова на расстоянии в несколько предложений.
Аналогично записи расстояния между словами, вы можете задавать расстояние в предложениях. Для этого достаточно перед оператором расстояния / указать оператор &&.
Пример
Если вы хотите найти статью, где упоминается памятник Пушкина на площади Искусств, можете задать запрос памятник Пушкину && /3 площадь Искусств.
Порядок слов
Кроме расстояния между словами, вы можете указывать и их порядок.
Слова следуют в определенном порядке на нужном расстоянии.
Если вы точно знаете не только расстояние, но и порядок слов запроса, в котором они должны идти в тексте интересных вам страниц, укажите между символом / и числом-расстоянием символ + для прямого порядка слов или - для обратного.
Пример
Если вы хотите найти отчество Тургенева, то задайте запрос Иван /+2 Тургенев Будут найдены страницы, где между словами Иван и Тургенев есть ровно одно третье слово.
Слова расположены в заданной окрестности.
В некоторых поисковых задачах слова могут идти в разном порядке, причем между ними может быть от n слов (минимум) до m (максимум). Добавив между словами запроса оператор /(n m), вы получите интересующие вас страницы.
Пример
Запрос Васисуалий /(-1 +2) Лоханкин найдет как страницы с текстом Васисуалий Батькович Лоханкин, так и Лоханкин Васисуалий.
Найти любое из слов
Вы можете указать Яндексу найти любое из заданных слов. Это полезно, например, когда для нужного вам термина есть много синонимов. Достаточно поставить между словами символ |, и вы получите страницы, где содержится хоть одно из слов запроса.
Пример
Запрос аэроплан | самолет | планер | дирижабль | аэростат | вертолет | пепелац найдет страницы, где встречается хоть одно из этих слов.
Исключить слова
Яндекс позволяет исключать страницы, где есть определенные слова. Для этого используется оператор ~~, слева от которого вы пишите «что искать», а справа - какие страницы исключать из поиска.
Пример
Если вы ищете информацию о Задорнове (но не министре), можете задать запрос Задорнов ~~ министр. Будут найдены все страницы, где есть слово Задорнов и нет слова министр.
Иногда допустимо, чтобы слово встречалось на странице, но нельзя, чтобы оно встретилось в том же предложении. С этой целью используйте оператор ~.
Пример
Если вы ищите информацию о г-же Кузькиной, то более информативные результаты даст запрос Кузькина ~ мать, который ищет страницы со словом Кузькина, исключая страницы, где в одном предложении с ним есть слово мать.
Сложные запросы: выручат скобки
Вы можете строить сколь угодно сложные конструкции, подставляя в каждом из операторов вместо отдельного слова целые выражения. Чтобы Яндекс при этом правильно понимал вас, заключайте выражения в круглые скобки.
Пример
Если вы ищете описание мумие, но не хотите наталкиваться на прайсы интернет-магазинов, можете задать такой запрос: мумие && (лечение | лечебный | болезни)~~(цена | прайс | рубли | доллар | фирма | магазин). Будут найдены все страницы, где есть слово мумие, а также любое из слов лечение, лечебный или болезни, и нет ни одного из слов, перечисленных после оператора ~~.
Морфология
Все слова, которые вы приводите в запросе, по умолчанию ищутся с учетом морфологии. Чтобы отключить ее, используйте оператор ! перед словом (без пробела).
Пример
Запрос !день найдет страницы, где слово день встречается только в такой форме.
Если одна или несколько форм слова совпадает с другими словами, поиск может находить лишние страницы. Указав нормальную форму слова с помощью оператора !!, вы уберете многие из ненужных страниц.
Пример
Запрос !!день найдет все формы слова - дня, дню днем и др., и не найдет форм слова деть (одна из которых совпадает со словом день).
Независимо от формы слов, Яндекс по-разному учитывает слова, набранные с маленькой и большой буквы.
Список операторов
Яндекс позволяет вам искать в отдельных элементах страницы или в связанной с ней информации.
1.10. Безопасность баз данных
Безопасность – защита данных от случайного или преднамеренного доступа лиц, не имеющих на это права.
Секретность – право отдельных лиц определять, сколько и какой информации может быть передано другим лицам.
Безопасность обеспечивает:
Проверка полномочий ( имя пользователя, пароль)
Ограничение доступа. Существует два вида – привилегии доступа и привилегии безопасности.
Привилегии доступа – select(выбор данных),update(изменение данных),delete(удаление данных),insert(ввод данных). Привилегия доступа предоставляется пользователям разного типа (админы, владельцы и т.д.), по ролям (опр. Паролем), всем пользователям.
Привилегия безопасности – никогда группами – только конкретным пользователям. Необходимо сохранение секретных данных.
Уровни: security, владелец БД, оператор.
Существуют логические способы защиты информации (часто непредставление информации равносильно раскрытию данных) Используется разграничение информации по уровням секретности.
1.14. Архитектура (общая схема) систем БД.
Эта схема – многоуровневое представление данных
Интерфейс пользователя – представление о данных конкретного пользователя
Внешний уровень – определяется внешней схемой (моделью). Представление о данных разработчика прикладных программ пользователя.
Концептуальный уровень – определяется схемой БД – общее концептуальное представление обо всех данных в БД.
Внутренняя модель определяется внешней схемой. Внутренняя модель отражает физическую последовательность данных на диске. К внутренней модели относится структура индексного файла. Внутренняя модель – представление о данных разработчика БД.
1.11. Модели данных классификация моделей
Модели данных.
Данные – описание разных явлений, предметов вне зависимости от того, доступно полное понимание его или нет.
Информация – приращение знаний.
Задача поисковых систем – давать информацию, а не данные.
Далее будем считать данные = информация.
Модель данных – представление о предметной области в виде данных и связей между ними.
Предметная область – часть реального мира, представляющая интерес для данного пользователя и отражаемая в БД.
Модель данных может отображать концептуальное (инфологическое) представление данных, либо представление реляционное (даталогическое).
Схема создания БД:
Схема – графическое или формальное определение логической структуры данных. Пример:
STUD
FAM |
NAME |
GR |
STUD(FAM,NAME,GR) Д.Б.={STUD,KAFEDRA}.
Архитектура (общая схема) систем БД.
Эта схема – многоуровневое представление данных
Интерфейс пользователя – представление о данных конкретного пользователя
Внешний уровень – определяется внешней схемой (моделью). Представление о данных разработчика прикладных программ пользователя.
Концептуальный уровень – определяется схемой БД – общее концептуальное представление обо всех данных в БД.
Внутренняя модель определяется внешней схемой. Внутренняя модель отражает физическую последовательность данных на диске. К внутренней модели относится структура индексного файла. Внутр. модель – представление о данных разработчика БД.
1.16. Релятионная модель данных
Сотрудники Должности
№ |
сотрудник |
отдел |
НИИ |
… |
|
№ |
Должность |
… |
|||
С1 |
Иванов |
28 |
13 |
|
|
D1 |
Инженер |
|
|||
С2 |
Попов |
28 |
13 |
|
D2 |
Ст. Инженер |
|
||||
С3 |
Титов |
28 |
13 |
|
D3 |
Ведущий инженер |
|
||||
|
D4 |
Начальник отдела |
|
Оклад
№сотр. |
№ долж |
Оклад |
С1 |
D1 |
150 |
С2 |
D3 |
180 |
С2 |
D4 |
200 |
С3 |
D1 |
140 |
Реляционная модель данных – представление данных в виде взаимосвязанных таблиц.
1 .12. Объекты и отношения. Er-диаграммы, концептуальное проектирование.
Концептуальное проектирование. ER – диаграммы (типа «сущность – связь»).
Концептуальное проектирование:
Полное представление о содержании БД
инфологическое проектирование (до выбора СУБД).
Концептуальная структура (схема) состоит из основных элементарных данных предметной области (личности, факты, документы), называемых сущностями или объектами.
Элементарные данные, описывающие сущности, называются атрибутами. Между сущностями существуют связи:
1:1
1:n
m:n
Пример. Фирма, с клиентами работают менеджеры.
В реляционных БД не используются связи n:m и заменяются на 1:n (договоры дифференцируются по товарам).
1.17. Иерархическая модель данных.
Это первая модель данных, реализованная в СУБД (IMS). Относится к классу навигационных моделей (пользователь должен представлять как будет происходить поиск – в данном случае через вершину дерева). Недостатки модели – нельзя, например, посчитать сумму зарплат инженеров.
1.15. Сравнение реляционного, иерархического и сетевого подходов к форме моделей данных.
См. билеты 16, 17 и 18 :p
1.18. Сетевая модель данных.
Замкнутый цикл указателей. Также относится к классу навигационных моделей.
Поиск:
Поиск в файле сотрудников (по индексу)
Идём к первому файлу, потом к следующему по указателю.
Индекс по связующим полям не строится, а по основным строится.
Достоинство (как и всех списковых структур) – быстрое внесение изменений в Б.Д.
Пример: Попов назначается ведущим инженером (пунктиром). Сначала добавляется оклад.
Модель оказалась недееспособной. Указатель – обращение к диску, что связанно с большими затратами времени при большой базе данных.
1.19. Логические структуры данных. (элемент, группа, отношение, представление).
Логические структуры данных.
Элемент (поле, атрибут) – минимальная логически неделимая структура данных.
Свойства элементов:
Значение элемента данных
Имя (существуют ограничения на длину имени и на использование символов)
Индикатор существования значения
Права доступа (пароль) – ограничение доступа передаётся к данным, также любому элементу может быть присвоен уровень секретности
Дата и время последнего изменения
Размер (связан с типом данных)
Тип
Класс значений – дополнение к типу данных –ОДЗ – задаётся или интервалом, или списком разрешённых или запрещённых значений.
Группа – состоит из элементов или других групп. Простая группа состоит только из элементов. В реляционных БД используются только простые группы – атрибуты. Под именем группы хранится таблица строк и её элементов. В реляционных СУБД могут использоваться составные группы – в группу входит другая группа.
FAM |
NAME |
GR |
KAF |
должность |
должность |
||
Назв. |
оклад |
Назв. |
оклад |
||||
Ким |
Иван |
Ф5-1 |
57 |
Инж. |
3000 |
Лабор. |
2000 |
Групповое отношение – состоит из нескольких групп. Множество связанных групповых отношений – логическая структура. Схема группового отношения:
STUD
Должность
FAM |
NAME |
GR |
KAF |
№ |
№ |
Назв |
Оклад |
Представление – состоит из групповых логических записей. Представление описывается при определении данных, и в него включаются элементы из разных таблиц (связанных отношениями).
1.20. Организация физических записей.Способы выделения элементов в физической записи.
Структуры хранения.
Организация физических записей.
Логические структуры и физические записи могут быть связаны по-разному:
С овпадают
хранятся одна в другой в разных соотношениях
Способы выделения элементов в физической записи:
Элементы хранятся в заданной (вычисляемой) позиции
Элементы разделяются разделителем
элементы помечаются этикеткой
1.:
Элементы начинаются с заданной позиции : 1 Ким 18Иван 30Ф5-571
Развитие а): информация о начальной позиции хранится в файле .dbt.
Хранится информация о количестве символов (числа не учитываются) : 3Ким4Иван.. Недостатки – программист должен знать последовательность элементов или начальные позиции.
Всю информацию переносят в начало: маркер, справочник, данные. Стандарт ISO 2709
2.: Ким*Иван*Ф5-571*…. Недостаток - разделители нельзя использовать в тексте.
3.: Э1КимЭ2Иван…
1.22. Последовательный файл, файл с указателем, индексирование по одному элементу.
Структуры хранения:
Последовательный файл
№ |
Фирма |
Статус |
город |
1 2 3 4 5 |
Весна Свобода Скороход Днипро Арарат |
10 20 30 20 30 |
Москва Москва Спб Киев Ереван |
Достоинства – простота
Недостатки – большое время доступа к файлам и большой объём дублирования.
Файл с указателем.
город |
Сведения |
Москва Москва Спб Киев Ереван |
|
Файл городов сокращает объём при условии, что размер значения превышает размер указателя. Хорошо обеспечивается целостность, но проблему поиска структура не решает.
Индексирование по одному элементу
Индекс предназначен для быстрого поиска. Существуют разные способы реализации индекса. Единственная проблема – разное количество указателей. Если определяются индексы по всем полям – инвертированная структура (не путать с инвертированным файлом).
1.23. Инвертированная организация файлов.
И нвертированный файл.
Структура используется в документарно - поисковых системах и Internet. Файл – словарь и собственно инвертированный файл.
1.24. Списковые структуры (списки).
Списковая структура – структура, в которой не совпадают физическая и логическая последовательность данных.
Логическая структура:
Физическая структура:
Достоинство: Списковая структура хорошо подходит для изменений и дополнений
Недостаток: Большое время поиска.
С пособы ускорения списковых структур:
Экспресс – указатель – дополнительный указатель, который ссылается на много записей вперёд. Иногда добавляется обратный указатель – двусвязанный список.
Зацикливание списка – последний указатель ссылается на первый.
1.25. ХЭШ-АРЕСАЦИЯ.
Хэш–адресация.
Всё пространство памяти (под хранение) делится на фрагменты, и адрес любого фрагмента вычисляется как функция от ключа.
0 |
1 |
2 |
3 |
3)Скороход |
|||
4 |
5 |
6 |
7 |
2)Свобода |
5) Арарат |
||
8 |
9 |
10 |
11 |
1) Весна |
4) Днипро |
||
12 |
|
Пример: Хэш-функция
№ |
|
|
1 |
Весна |
|
2 |
Свобода |
|
3 |
Скороход |
|
4 |
Днипро |
|
5 |
Арарат |
|
Если происходит переполнение, то записывается либо в соседнюю строку, либо в дополнительную строку.
Поиск – ключ подставляется в Хэш-функцию, подставляем в адрес и ищем на странице.
1.26. Иерархическая организация (структура хранения).
Иерархическая структура
1.26. Иерархическая организация (структура хранения).
Бинарное дерево В – дерево.
Используется для построения индексных файлов.
Логическая структура бинарного дерева:
По алфавиту связи лево – право. В таблице хранятся левые и правые указатели.
1.28. В+ деревья их использования в СУБД.
В + дерево.
На его основе строятся все индексные файлы в современных СУБД. Главное отличие от бинарного дерева – узел дерева хранит не одно, а множество значений ключа, соответствующих определённому интервалу.
|
Л-С |
|
|
А-К |
|
|
Т-Я |
|
2.2. Создание меню в субд vfp
Visual FoxPro позволяет создавать два типа меню: линейку главного меню (Menu) и самостоятельное ниспадающее меню (Shortcut). В главном меню Visual FoxPro: File –> new –> menu
В окне проектирования меню необходимо определить пункты главной линейки меню, определить подменю (если оно предусматривается) и описать действия, выполняемые при выборе пунктов меню.
Prompt (назв. эл-тов меню), result (тип действия) - состоит из раскрывающих списков, позволяющих определить тип действия при выборе элемента меню – команда (Command), подменю (Submenu) или программа (Procedure); Options
Prompt Просмотр Форма Гистограмма Выход |
Result Submenu Submenu Command proc |
Options
Do gist1 |
STUD KAF |
Proc proc |
|
Set sismenu to default Return
Use STUD Browse
Для создания выполнимого файла (программы, запускающей меню) необходимо сгенерировать код программы, выбрав пункт Menu=>Generate главного меню FoxPro (данный пункт меню доступен при активном окне проектирования меню).
Do menu1.mpr – запуск меню
Текст программы в текстовом файле .prg (modify command gist1)
Для внесения изменений в созданное меню в командном окне вводим команду MODIFY MENU название_меню. VFP откроет окно проектирования меню. После внесения изменений в меню необходимо повторно сгенерировать код программы-меню.
2.3. Создание отчетов в субд vfp
Отчёт – это: 1)печатный многостраничный документ, в который включены данные из БД.
2)Вид объекта
Создание: File – new – report –new/report-wizard
Вид отчёта:
FAM NAME GR KAF -Объекты типа Text Верхний Колонтитул |
FAM NAME GR KAF -Объекты типа fields Описание строки БД |
DATE() Page Gen() - Печать даты и номера стр. Нижний колонтитул |
П олучилось:
Report form имя – запуск отчёта.
Изменить – MODIFY REPORT название.
Недостаток – отчёт привязан к таблице, для печати используется промежуточный файл.
2.4. Создание этикеток в субд vfp
Label ( карточка, этикетка) – создаётся через wizard.
1.) Выбор размера – количество столбцов, высота карточки
2.) Выбор таблицы
3.) формирование этикетки
FILE NAME GR KAF |
► ◄ |
FAM NAME GR KAF |
LABEL FORM название – запуск этикетки.
Изменить – MODIFY LABEL название.
2.1. Создание форм в субд vfp
File -> New -> Form -> New File/Wizard
Первое окно определяет тип формы – простая (по одной таблице) или форма ”один ко многим” (по двум связанным таблицам).
Мастер проектирования форм предлагает последовательность диалоговых окон.
На первом шаге выбираем таблицу, по которой создаем форму и поля этой таблицы, которые войдут в форму. На втором шаге предлагается выбрать стиль оформления формы и определить вид кнопок. На третьем шаге можно определить порядок просмотра записей таблицы. На завершающем шаге можно просмотреть предварительный результат (кнопка Preview) и при необходимости внести изменения в форму. Для сохранения формы необходимо нажать кнопку Finish.
Запустить сохраненную форму = DO FORM имя_формы.
Измененить = MODIFY FORM имя_формы.
STUD
FAM
NAME
GR
KAF
2.5. Создание форм «один-ко-многим» в субд vfp. Установление отношения в форме.
Форма ”один-ко-многим” позволяет одновременно работать с данными двух логически связанных между собой таблиц. При создании формы со связью “один-ко-многим” на одном из шагов проектирования формы необходимо определить эту связь, то есть указать поля таблиц, логически связанные между собой. Эти поля должны иметь одинаковый тип данных, но названия их не обязательно должны совпадать.
STUD
FAM
NAME
GR
KAF
KAF |
ZAV |
TEL |
28 ### ### |
Румянцев ….. ….. |
323… 323.. 323.. |
Для осуществления связи в БД надо в родительской таблице указать связующее поле. Это делается заданием первичного индекса Primary key. В дочерней таблице индекс - [-]. При этом БД поддерживает целостность.
2.8. Характеристика субд vfp.
Эта СУБД имеет очень мощный и в то же время простой и интуитивно понятный графический интерфейс для выполнения любых действий по разработке приложения: от средств управления всем проектом до средств разработки конкретного окна формы или отчета. При создании любого объекта можно использовать мастера (Wizard), который позволяет автоматизировать процесс создания объекта.
Visual FoxPro (VFP) - современная СУБД для персональных компьютеров, использующая реляционные базы данных, имеющая объектно-ориентированный алгоритмический язык для работы с информацией, методы визуального программирования и достаточно большие возможности.
2.6. Определение данных в субд vfp.
Данные – описание разных явлений, предметов вне зависимости от того, доступно полное понимание его или нет.
Типы данных:
1) Строковые типы. Символьные типы, типы, представляющие собой строку бит, типы класса BLOP(двоичные блоки большой размерности), в FoxPro – general
BLOP – самый распространённый тип для хранения мультимедиа.
Текстовые типы, предназначенные только для просмотр данных (MEMO).
Существуют также текстовые типы для поиска данных – при описании указываются: символы – разделители слов (« », «.», «,» ), максимальная длина слова. Этот тип относится к классу множественных полей (под одним именем поля хранится множество значений). Используется в реляционных СУБД, в обычных не используется т.к. противоречит первой нормальной форме.
Символьные строки могут быть постоянной и переменной длины.
2) Числовые типы.
Включают все типы, встречающиеся в языках программирования: типы с плавающей запятой (Real, Integer), типы с fix запятой (Numeric), денежный, тип – последовательность, тип – интервал.
3) Прочие типы.
Логический (false, true), тип дата, интервал дат, координаты и т.д.
Группа – состоит из элементов или других групп. Простая группа состоит только из элементов. В реляционных БД используются только простые группы – атрибуты. Под именем группы хранится таблица строк и её элементов. В реляционных СУБД могут использоваться составные группы – в группу входит другая группа.
FAM |
NAME |
GR |
KAF |
должность |
должность |
||
Назв. |
оклад |
Назв. |
оклад |
||||
Ким |
Иван |
Ф5-1 |
57 |
Инж. |
3000 |
Лабор. |
2000 |
Г рупповое отношение – состоит из нескольких групп. Множество связанных групповых отношений – логическая структура. Схема группового отношения:
FAM
NAME
GR
KAF
№
№
Назв
Оклад
2.10. Программирование в субд vfp.
Программа – гистограмма (необходима для демонстрации возможностей работы с таблицами).
Возможности управления: 1) кол- во столбцов; 2)выбор конкретной группы
clear && очистить экран
kol_gr = 5
@ 1,1 say “введите количество групп” get kol_gr.
Read
Clear
@ 1,1 to 20,1 &&вертикальная ось
@20,1 to 20,80 &&горизонтальная ось
@ 1,5 say “Распределение студентов по группам”
i=1
Do while i<=kol_gr
Use stud
Set uniq on &&включить уникальность
Index on GR to i1 &&индексировать по группам
Browse fields GR &&Вывести на экран список групп в алфав порядке.выбираем номер гр.
GR1=GR
Use &&закрыть STUD
Set uniq off
Use STUD
Count for GR=GR1 to kol_st
@ 20-kol_st,i*10-5 to 20,i*10
@ 21,i*10 – 5 say GR1
@ 20 – kol_st – 1? I*10 – 3 say str(kol_st, 2,0)
i=i+1
enddo.&& пишется слитно!
2.9. Создание и ведение бд в vfp (основные команды).
Поддерживает реляционную модель данных (представлены в виде взаимосвязанных таблиц).
STUD
FAM |
NAME |
GR |
KAF |
Ким |
Иван |
|
28 |
… |
… |
|
27 |
… |
… |
|
… |
2 языка, поддерживаемые FoxPro: язык FoxPro и SQL- стандартный язык.
Установление пути в директории по умолчанию: tools – options – file locations – default dir.
Команды: 1) Dir – содержание текущей директории; 2) Create stud - создать файл с расширением dbf (Stud.dbf).
Таблица структуры файла:
name |
type |
width |
dec |
FAM |
C |
16 |
|
NAME |
C |
12 |
|
GR |
C |
7 |
|
KAF |
N |
2 |
0 |
STIPA |
N |
7 |
2 |
FOTO |
G |
|
|
BIRTHDAY |
D |
|
|
C – Символьный тип; N- numeric – числовой тип с фиксированной запятой; G – general – хранит в таблице адрес файла с фотографией; D – Дата
По умолчанию ММ.ДД.ГГ. Set date to germane →ДД.ММ.ГГ.
MEMO – для хранения документов большого размера (текст, ссылка на файл .dbf)
LOGICAL - логический – TRUE (T, t, Y, y) или FAULSE (F, f, N, n).
APPEND – сист. выделенную форму:
BROWSE – увидеть таблицу
MODIFY STRUCTURE – изменить структуру
Поиск:
Locate for FAM = «Ким» - найти первого Кима и остановится. Continue – продолжить поиск
Index on FAM to ST_FAM – создание индексного файла
Индексный файл:
-
FAM
указатель
Если Index on FAM-NAME to … то порядок
-
Ким Иван
Ким Пётр
Сан Иван
указатель
Seek «Ким» - поиск Кима в индексированном файле.
Browse – курсор на первом Киме
Set filter to fam = «Ким»
Browse – строчки таблицы STUD с Кимом
2.11. Операторы доступа и поиска команд. Языка системы vfp
Поиск:
Locate for FAM = «Ким» - найти первого Кима и остановится. Continue – продолжить поиск
Index on FAM to ST_FAM – создание индексного файла
Индексный файл:
-
FAM
указатель
Если Index on FAM-NAME to … то порядок
-
Ким Иван
Ким Пётр
Сан Иван
указатель
Seek «Ким» - поиск Кима в индексированном файле.
Browse – курсор на первом Киме
Set filter to fam = «Ким»
Browse – строчки таблицы STUD с Кимом
2.12. Установление отношения в бд в субд vfp
Физическое соединение двух таблиц. Join.
Рабочая область – область в оперативной памяти, где размещены переменные, соответствующие именам столбцов таблицы.
Чтобы объединить две таблицы их надо одновременно открыть, это можно сделать только в различных рабочих областях.
Select1 && активировать 1-ю раб. обл.
Use stud && открыть таблицу
Browse
Select 2 && активировать 2-ю раб. обл.
Use kafedra && открыть таблицу
Select 1
Join with kafedra to tab3 for .t. && создать третью таблицу, объединяющую две
Join with kafedra to tab3 for stud.kaf=kafedra.kaf && объединение только при совпадении.
Физический способ – очень громоздкий. В БД связи логические. Данные могут изменяться.
Правила записи команд в СУБД VFP:
1)Каждая команда записывается с новой строки
2)В командах ключевые слова и вводимые параметры разделяются пробелом
3)Строка-комментарий - * в первой позиции. Комментарий в строке - &&
4)Если в команде используется список значений, то ставится запятая
5)Признак продолжения команды в следующей строке – «;» в конце строки.
6)Сам текст прог-мы может заканч-ся командой Return – возврат к управлению командой.
Сохраняется на всё время функционирования БД. Физически БД – файл .dbc.
Создание: File – New – Data base -…
Browse
Сохранённую таблицу можно добавить в БД при помощи команды Add.
Для осуществления связи в БД надо в родительской таблице указать связующее поле. Это делается заданием первичного индекса Primary key. В дочерней таблице индекс - [-]. При этом БД поддерживает целостность.
2.14. Установление отношения в форме типа 1:n в субд vfp
Формы Fox Pro:
Типовые
По первой таблице
По 2-м связанным 1:n таблицам
Созданные пользователями
File – new – form – wizard –
FAM NAME |
→ |
|
Форма хранится в виде файла
Do form имя – запуск формы
1:n – выбрать род поля – выбрать поля дочерней таблицы – сортировка - …
STUD
FAM
NAME
GR
KAF
KAF |
ZAV |
TEL |
28 ### ### |
Румянцев ….. ….. |
323… 323.. 323.. |
Модификация форм.
В дизайнере форм добавляется один объект. При добавлении кнопки с панели инструментов: указатель –Click,…Browse – команда кнопки. При редактировании форм их необходимо закрывать.
2.13. Установление отношения c использованием команды set relation в субд vfp
Соответствует программному поиску.
STUD.dbf KAFEDRA.dbf
FAM |
NAME |
GR |
KAF |
|
KAF |
ZAV |
TEL |
Сан Ким Ван |
Петр |
К7-28 |
28 |
связь→ |
28 28 28 |
Румянцев |
323.. |
2-я таблица должна быть индексирована по связующему полю.
Modify command poisk
Select 1
Use STUD index ST_FAM
Set Index to ST_FAM && активизировать индексный файл
Select 2
Use kafedra index KAF_KAF
(Index on KAF to KAF_KAF && должен быть заранее создан)
Select 1
Set relations to KAF into KAFEDRA.
Для установления связей между таблицами необходимо:
Определить родительскую и подчинённую таблицу
Проиндексировать подчинённую таблицу по связующему полю
Проверить, чтобы связующие поля в родительской и подчинённой таблице имели один тип и размер
Необходимо указать имя связующего поля в родительской таблице
Данная процедура устанавливает связь 1:1. Для установления связи 1:n используется команда set skip.
Set skip to KAFEDRA
FAM1=” “
@1,1 say «введите фамилию» get FAM1
READ
FAM2=alltrim(FAM1)&&отсечёт пробелы
Seek FAM2
Browse fields STUD.FAM, STUD.NAME, STUD.GR;
,STUD.KAF, KAFEDRA.KAF, KAFEDRA.ZAV,KAFEDRA.TEL.
FAM |
NAME |
GR |
KAF |
KAF |
ZAV |
TEL |
Ким ### ### |
Петр ### ### |
К7-28 ### ### |
28 ### ### |
28 ### ### |
Румянцев ….. ….. |
323… 323.. 323.. |
### - аналогичные строки
2.7. Объектно-ориентированное визуальное проектирование форм в субд vfp
Для внесения изменений в созданную форму в командном окне вводим команду MODIFY FORM имя_формы. Visual FoxPro откроет окно модификации формы и соответствующий ему набор инструментов.
Добавим новую кнопку с функцией просмотра, допустим, всех поставщиков. Выберем элемент управления Command Button и разместим его на форме. Для изменения названия кнопки в окне Properties изменим название кнопки.
По правой кнопке мыши выбираем пункт Code и в открывшемся окне вводим текст программы, выполняющейся при нажатии на кнопку:
BROW FIELDS FIRM_NAME FONT “ARIAL”,15
Завершив модификацию формы, запустим ее и убедимся в работоспособности добавленной кнопки.
3.15. Язык Баз Данных sql.
SQL (Structured Query Language - структуризованный язык запросов) ориентирован на операции с данными, представленными в виде логически взаимосвязанных совокупностей таблиц. Особенность предложений этого языка состоит в том, что они ориентированы в большей степени на конечный результат обработки данных, чем на процедуру этой обработки. SQL сам определяет, где находятся данные, какие индексы и даже наиболее эффективные последовательности операций следует использовать для их получения: не надо указывать эти детали в запросе к базе данных. SQL поддерживает: предложения определения данных (определение баз данных, а также определение и уничтожение таблиц и индексов); запросы на выбор данных (предложение SELECT); предложения модификации данных (добавление, удаление и изменение данных); предложения управления данными (предоставление и отмена привилегий на доступ к данным, управление транзакциями и другие). Кроме того, он предоставляет возможность выполнять в этих предложениях: арифметические вычисления (включая разнообразные функциональные преобразования), обработку текстовых строк и выполнение операций сравнения значений арифметических выражений и текстов; упорядочение строк и (или) столбцов при выводе содержимого таблиц на печать или экран дисплея; создание представлений (виртуальных таблиц), позволяющих пользователям иметь свой взгляд на данные без увеличения их объема в базе данных; запоминание выводимого по запросу содержимого таблицы, нескольких таблиц или представления в другой таблице (реляционная операция присваивания). агрегатирование данных: группирование данных и применение к этим группам таких операций, как среднее, сумма, максимум, минимум, число элементов и т.п.
Знание SQL полностью достаточно для выполнения любых осмысленных действий с базой данных, управляемой SQL-ориентированной СУБД. Помимо операторов формулирования запросов и манипулирования БД язык содержит:
средства определения схемы БД и манипулирования схемой;
операторы для определения ограничений целостности и триггеров;
средства определения представлений БД;
средства авторизации доступа к отношениям и их полям;
средства управления транзакциями.
3.17. Sql. Оператор select.
Практически весь SQL - базируется на операторе SELECT. Сам оператор SELECT есть не что иное, как выражение для получения результирующего набора из таблиц БД. Мы формируем запрос при помощи оператора SELECT, а он, в свою очередь, выполнив свою работу, возвращает результирующий набор данных. Возвращаются эти данные в виде таблицы, которая в свою очередь, может быть обработана следующим оператором SELECT и т.д.
Cам оператор и его синтаксис. Согласно стандарту SQL92, все это выглядит примерно так:
SELECT -- ALL ------- схема , столбец ----
-- DISTINCT -- ---- * -----------
FROM -- схема , таблица .. --------------
WHERE -- условие поиска ------------------
GROUP BY -- схема , столбец ---------------
HAVING -- условие поиска ------------------
ORDER BY -- спецификатор сортировки --------
Первое правило, само выражение SELECT обязательно включает, выражение FROM. Остальные выражения используются по мере необходимости.
Выражение SELECT включает в себя список столбцов возвращаемых запросом.
Выражение FROM включает в себя список таблиц для выполнения запроса.
Выражение WHERE устанавливает условие поиска, если необходимо вернуть не все строки, а только ту часть, которая описана условием, поиска.
Выражение GROUP BY позволяет создать итоговой запрос, разбитый на группы.
Выражение HAVING определяет условие возврата групп и используется только совместно с GROUP BY.
Выражение ORDER BY определяет порядок сортировки результирующего набора данных.
Вот как устроен оператор SELECT.
3.16. Управление доступом. Привилегии.
SQL-сервер содержит механизм идентификации пользователей. При установлении соединения с SQL-сервером требуется указать имя пользователя и пароль. На основании этих данных сервер идентифицирует или не идентифицирует пользователей.
Администратор SQL-сервера управляет списком пользователей, назначая им имена и пароли и присваивая права доступа к данным.
Обычно права назначаются на просмотр, ввод, удаление или модификацию записей таблиц или значений отдельных полей. Также права назначаются:
1) на выполнение хранимых процедур 2) на доступ к отображениям 3) на изменения условий декларативной ссылочной целостности 4) на создание, изменение или удаление объектов БД.
Управление правами доступа к данным позволяет организовать механизм защиты данных, соответствующий регламенту вашей информационной системы.
Назначение прав доступа осуществляется командой GRANT.
GRANT SELECT, INSERT ON Employ TO Alexd
Этот запрос разрешает просмотр и добавление записей в таблицу Employ пользователю Alexd.
Удаление прав доступа осуществляется командой REVOKE.
REVOKE INSERT ON Employ TO Alexd
В этом запросе пользователю Alexd запрещается добавление записей в таблицу Employ.
После команд GRANT или REVOKE перед ключевым словом ON могут указываться типы операций SELECT, INSERT, UPDATE, DELETE или ALL.
Многие SQL-сервера поддерживают механизм объединения пользователей в группы. Каждой группе назначаются определенные права и любой пользователь, включенный в эту группу, автоматически их наследует.
Группы пользователей снижают трудозатраты администратора на назначение и отслеживание прав каждого пользователя.
Программисты пользуются языком SQL, чтобы писать приложения, в которых содержатся обращения к базам данных. Одни и те же операторы SQL используются как для интерактивного, так и для программного доступа, поэтому части программ, содержащие обращения к базе данных, можно вначале тестировать в интерактивном режиме, а затем встраивать в программу. В традиционных базах данных для программного доступа используются одни программные средства, а для выполнения немедленных запросов — другие, без какой либо связи между этими двумя режимами доступа.
SQL — это легкий для понимания язык и в то же время универсальное программное средство управления данными.
Успех языку SQL принесли следующие его особенности:
• независимость от конкретных СУБД;
• переносимость с одной вычислительной системы на другую;
• наличие стандартов;
• одобрение компанией IBM (СУБД DB2);
• поддержка со стороны компании Microsoft (протокол ODBC);
• реляционная основа;
• высокоуровневая структура, напоминающая английский язык;
• возможность выполнения специальных интерактивных запросов:
• обеспечение программного доступа к базам данных;
• возможность различного представления данных;
• полноценность как языка, предназначенного для работы с базами данных;
• возможность динамического определения данных;
• поддержка архитектуры клиент/сервер.
Все перечисленные выше факторы явились причиной того, что SQL стал стандартным инструментом для управления данными на персональных компьютерах, мини-компьютерах и больших ЭВМ.
Обработка ванных.SQLдает пользователю или приложению возможность изменять базу данных, т.е. добавлять в нее новые данные, а также удалять или обновлять уже имеющиеся в ней данные.
· Управление доступом. С помощью SQL можно ограничить возможности пользователя по чтению и изменению данных и защитить их от несанкционированного доступа.
· Совместное использование данных.SQL координирует совместное использование данных пользователями, работающими параллельно, чтобы они не мешали друг другу.
· Целостность данных.SQL позволяет обеспечить целостность базы данных, защищая ее от разрушения из-за несогласованных изменений или отказа системы.
Таким образом, SQL является достаточно мощным языком для взаимодействия с СУБД.
3.18. Sql : определение таблиц.
В соответствии с правилами SQL/89 каждая таблица данной БД имеет простое и квалифицированное имена. В качестве квалификатора имени выступает "идентификатор полномочий" таблицы, который обычно в реализациях совпадает с именем некоторого пользователя, и квалифицированное имя таблицы имеет вид:
<идентификатор полномочий>.<простое имя>
Подход к определению схемы в SQL/89 состоит в том, что все таблицы с одним идентификатором полномочий создаются (определяются) путем выполнения одного оператора определения схемы. При этом в стандарте не определяется способ выполнения оператора определения схемы: должен ли он выполняться только в интерактивном режиме или может быть встроен в программу, написанную на традиционном языке программирования.
В операторе определения схемы содержится идентификатор полномочий и список элементов схемы, каждый из которых может быть определением таблицы, определением представления (view) или определением привилегий. Каждое из этих определений представляется отдельным оператором SQL/89, но все они, как уже говорилось, должны быть встроены в оператор определения схемы.
Для этих операторов мы приведем синтаксис, поскольку это позволит более четко описать их особенности.
Оператор определения таблицы имеет следующий синтаксис:
<table definition> ::=
CREATE TABLE <table name> (<table element>
[{,<table element>}...])
<table element> ::=
<column definition>
| <table constraint definition>
Кроме имени таблицы, в операторе специфицируется список элементов таблицы, каждый из которых служит либо для определения столбца, либо для определения ограничения целостности определяемой таблицы. Требуется наличие хотя бы одного определения столбца. Оператор CREATE TABLE определяет так называемую базовую таблицу, т.е. реальное хранилище данных.
Для определения столбцов таблицы и ограничений целостности используются специальные операторы, которые должны быть вложены в оператор определения таблицы.
3.19. Sql : Модификация и удаление таблиц.
Создание таблиц осуществляется выполнением команды CREATE
CREATE TABLE
( { I] [ ...]}, . . ., [ ], . . .) Например: CREATE TABLE DocOperate ( DocOperate_ID int identity(1,1) not null, Doc_ID int not null, Employ_ID int not null, OperType_ID int not null, OperateDate datetime default getdate() null )
Этот запрос создаст таблицу DocOperate.
Ограничение not null предписывает запрещать SQL-серверу добавление записей с NULL-значением данного поля; null - предписывает разрешать добавление таких записей.
Поле DocOperate_ID будет автоматически заполняться числовым целым значением, на 1 большим, чем в ранее введенной записи. Однако IDENTITY (автоинкремент) в таком виде поддерживается только MS SQL Server 6.5.
Ограничение default getdate() обозначает, что если при добавлении новой записи значение этого поля не будет указано, то MS SQL Server запишет в него текущую системную дату и время.
Модификация таблиц (например, добавление или удаление полей) осуществляется командой ALTER TABLE:
ALTER TABLE
DROP|ADD , . . .)
Удалять столбцы позволяют не все SQL-сервера.
Удаление таблиц выполняется командой DROP TABLE:
DROP TABLE
3.20. Sql: операторы insert, update, delete
Предложение INSERT имеет один из следующих форматов: INSERT INTO {базовая таблица | представление} [(столбец [,столбец] ...)] VALUES ({константа | переменная} [,{константа | переменная}] ...); или INSERT INTO {базовая таблица | представление} [(столбец [,столбец] ...)] подзапрос; В первом формате в таблицу вставляется строка со значениями полей, указанными в перечне фразы VALUES (значения), причем i-е значение соответствует i-му столбцу в списке столбцов (столбцы, не указанные в списке, заполняются NULL-значениями). Если в списке VALUES фразы указаны все столбцы модифицируемой таблицы и порядок их перечисления соответствует порядку столбцов в описании таблицы, то список столбцов в фразе INTO можно опустить. Однако не советуем этого делать, так как при изменении описания таблицы (перестановка столбцов или изменение их числа) придется переписывать и INSERT предложение. Во втором формате сначала выполняется подзапрос, т.е. по предложению SELECT в памяти формируется рабочая таблица, а потом строки рабочей таблицы загружаются в модифицируемую таблицу. При этом i-й столбец рабочей таблицы (i-й элемент списка SELECT) соответствует i-му столбцу в списке столбцов модифицируемой таблицы. Здесь также при выполнении указанных выше условий может быть опущен список столбцов фразы INTO. 4. Предложение UPDATE также имеет два формата. Первый из них: UPDATE (базовая таблица | представление} SET столбец = значение [, столбец = значение] ... [WHERE фраза] где значение - это столбец | выражение | константа | переменная и может включать столбцы лишь из обновляемой таблицы, т.е. значение одного из столбцов модифицируемой таблицы может заменяться на значение ее другого столбца или выражения, содержащего значения нескольких ее столбцов, включая изменяемый. При отсутствии WHERE фразы обновляются значения указанных столбцов во всех строках модифицируемой таблицы. WHERE фраза позволяет сократить число обновляемых строк, указывая условия их отбора. Второй формат описывает предложение, позволяющее производить обновление значений модифицируемой таблицы по значениям столбцов из других таблиц. К сожалению в ряде СУБД эти форматы отличаются друг от друга и от стандарта. Для примера приведем один из таких форматов: UPDATE {базовая таблица | представление} SET столбец = значение [, столбец = значение] ... FROM {базовая таблица | представление} [псевдоним], {базовая таблица | представление} [псевдоним] [,{базовая таблица | представление} [псевдоним]] ... [WHERE фраза] Здесь перечень таблиц фразы FROM содержит имя модифицируемой таблицы и тех таблиц, значения столбцов которых используются для обновления. При этом, естественно, таблицы должны быть связаны между собой в WHERE фразе, которая, кроме того, служит для указания условий отбора обновляемых строк модифицируемой таблицы. В значениях, находящихся в правых частях равенств фразы SET, следует уточнять имена используемых столбцов, предваряя их именем таблицы (псевдонима).
Предложение DELETE имеет формат DELETE FROM базовая таблица | представление [WHERE фраза]; и позволяет удалить содержимое всех строк указанной таблицы (при отсутствии WHERE фразы) или тех ее строк, которые выделяются WHERE фразой.
3.21. Понятие транзакции.
Транзакция - это последовательность операций над БД, рассматриваемых СУБД как единое целое. Либо транзакция успешно выполняется, и СУБД фиксирует (COMMIT) изменения БД, произведенные этой транзакцией, во внешней памяти, либо ни одно из этих изменений никак не отражается на состоянии БД. Понятие транзакции необходимо для поддержания логической целостности БД. Если вспомнить наш пример информационной системы с файлами СОТРУДНИКИ и ОТДЕЛЫ, то единственным способом не нарушить целостность БД при выполнении операции приема на работу нового сотрудника является объединение элементарных операций над файлами СОТРУДНИКИ и ОТДЕЛЫ в одну транзакцию. Таким образом, поддержание механизма транзакций является обязательным условием даже однопользовательских СУБД (если, конечно, такая система заслуживает названия СУБД). Но понятие транзакции гораздо более важно в многопользовательских СУБД.
То свойство, что каждая транзакция начинается при целостном состоянии БД и оставляет это состояние целостным после своего завершения, делает очень удобным использование понятия транзакции как единицы активности пользователя по отношению к БД. При соответствующем управлении параллельно выполняющимися транзакциями со стороны СУБД каждый из пользователей может в принципе ощущать себя единственным пользователем СУБД (на самом деле, это несколько идеализированное представление, поскольку в некоторых случаях пользователи многопользовательских СУБД могут ощутить присутствие своих коллег).
3.22. Сериализация транзакций в распределённых субд. Двухфазная фиксация изменений.
С управлением транзакциями в многопользовательской СУБД связаны важные понятия сериализации транзакций и сериального плана выполнения смеси транзакций. Под сериализаций параллельно выполняющихся транзакций понимается такой порядок планирования их работы, при котором суммарный эффект смеси транзакций эквивалентен эффекту их некоторого последовательного выполнения. Сериальный план выполнения смеси транзакций - это такой план, который приводит к сериализации транзакций. Понятно, что если удается добиться действительно сериального выполнения смеси транзакций, то для каждого пользователя, по инициативе которого образована транзакция, присутствие других транзакций будет незаметно (если не считать некоторого замедления работы по сравнению с однопользовательским режимом).
Существует несколько базовых алгоритмов сериализации транзакций. В централизованных СУБД наиболее распространены алгоритмы, основанные на синхронизационных захватах объектов БД. При использовании любого алгоритма сериализации возможны ситуации конфликтов между двумя или более транзакциями по доступу к объектам БД. В этом случае для поддержания сериализации необходимо выполнить откат (ликвидировать все изменения, произведенные в БД) одной или более транзакций. Это один из случаев, когда пользователь многопользовательской СУБД может реально (и достаточно неприятно) ощутить присутствие в системе транзакций других пользователей.
В современных СУБД предусмотрен так называемый протокол двухфазовой (или двухфазной) фиксации транзакций (two-phase commit). Фаза 1 начинается, когда при обработке транзакции встретился оператор COMMIT. Сервер распределенной БД (или компонент СУБД, отвечающий за обработку распределенных транзакций) направляет уведомление "подготовиться к фиксации" всем серверам локальных БД, выполняющим распределенную транзакцию. Если все серверы приготовились к фиксации (то есть откликнулись на уведомление и отклик был получен), сервер распределенной БД принимает решение о фиксации. Серверы локальных БД остаются в состоянии готовности и ожидают от него команды "зафиксировать". Если хотя бы один из серверов не откликнулся на уведомление в силу каких-либо причин, будь то аппаратная или программная ошибка, то сервер распределенной БД откатывает локальные транзакции на всех узлах, включая даже те, которые подготовились к фиксации и оповестили его об этом. Фаза 2 - сервер распределенной БД направляет команду "зафиксировать" всем узлам, затронутым транзакцией, и гарантирует, что транзакции на них будут зафиксированы. Если связь с локальной базой данных потеряна в интервал времени между моментом, когда сервер распределенной БД принимает решение о фиксации транзакции и моментом, когда сервер локальной БД подчиняется его команде, то сервер распределенной БД продолжает попытки завершить транзакцию, пока связь не будет восстановлена.
3.23. Сериализация транзакций в распределенных субд на основе временных меток.
Альтернативный метод сериализации транзакций, хорошо работающий в условиях редких конфликтов транзакций и не требующий построения графа ожидания транзакций. основан на использовании временных меток.
Основная идея метода (у которого существует множество разновидностей) состоит в следующем: если транзакция T1 началась раньше транзакции T2, то система обеспечивает такой режим выполнения, как если бы T1 была целиком выполнена до начала T2.
Для этого каждой транзакции T предписывается временная метка t, соответствующая времени начала T. При выполнении операции над объектом r транзакция T помечает его своей временной меткой и типом операции (чтение или изменение).
Перед выполнением операции над объектом r транзакция T1 выполняет следующие действия:
Проверяет, не закончилась ли транзакция T, пометившая этот объект. Если T закончилась, T1 помечает объект r и выполняет свою операцию.
Если транзакция T не завершилась, то T1 проверяет конфликтность операций. Если операции неконфликтны, при объекте r остается или проставляется временная метка с меньшим значением, и транзакция T1 выполняет свою операцию.
Если операции T1 и T конфликтуют, то если t(T) > t(T1) (т.е. транзакция T является более "молодой", чем T), производится откат T и T1 продолжает работу.
Если же t(T) < t(T1) (T "старше" T1), то T1 получает новую временную метку и начинается заново.
К недостаткам метода временных меток относятся потенциально более частые откаты транзакций, чем в случае использования синхронизационных захватов. Это связано с тем, что конфликтность транзакций определяется более грубо. Кроме того, в распределенных системах не очень просто вырабатывать глобальные временные метки с отношением полного порядка (это отдельная большая наука).
Но в распределенных системах эти недостатки окупаются тем, что не нужно распознавать тупики, а как мы уже отмечали, построение графа ожидания в распределенных системах стоит очень дорого.
1.13. Этапы проектирования бд.
1. Исследование предметной области и выявление пользователей.
2. Описание информации и хранение в БД.
3. Выделение сущностей и связей; построение ER-диаграмм.
4. Выделение свойств.
5. Построение отношений.
6. Устранение избыточности (нормализация отношений)
7. Определение типов данных и ограничений.
8. Определение прав доступа, обеспечение защиты данных.
9. Определение пользовательских видов.