Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ура_почти_все_шпоры_уе!!.doc
Скачиваний:
1
Добавлен:
23.04.2019
Размер:
923.14 Кб
Скачать
  • Обеспечение целостности БД

    Целостность – фундаментальное свойство БД. Обеспечение целостности состоит в гарантии:

    1. Нерушимости данных и связей между ними, в том числе при использовании многими пользователями

    2. Быстрого восстановления без потерь при сбоях и авариях

    3. Контроля данных

    Два механизма внесения изменений:

    1. 2-х фазовый протокол фиксации изменений: при внесении изменений все объекты блокируются, при подтверждении изменения – блокировка снимается.

    2. Отложенная транзакция – регистрируется время начала изменения данных

    Скачок напряжения – установка фильтров или источников бесперебойного питания. БД сама закрывается или закрывает пользователь.

    Гибель устройства, где хранится БД – резервное копирование – через определённый промежуток времени делается копия БД на другом носителе.

    LOG – журнал (системный) – последняя копия используется при гибели БД. В системном журнале часто сохраняются и данные оперативной памяти.

    Контроль данных.

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

    1. Безопасность – защита данных от случайного или преднамеренного доступа лиц, не имеющих на это права.

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

    Безопасность обеспечивает:

    1. Проверка полномочий ( имя пользователя, пароль)

    2. Ограничение доступа. Существует два вида – привилегии доступа и привилегии безопасности.

    Привилегии доступа – select(выбор данных),update(изменение данных),delete(удаление данных),insert(ввод данных). Привилегия доступа предоставляется пользователям разного типа (админы, владельцы и т.д.), по ролям (опр. Паролем), всем пользователям.

    Привилегия безопасности – никогда группами – только конкретным пользователям. Необходимо сохранение секретных данных.

    Уровни: security, владелец БД, оператор.

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

    1.3. Уровни классификации пользователей системы бд.

    Пользователи:

    1. Создатели (владельцы)

    2. Администратор

    3. Программисты–разработчики (разработчики СУБД)

    4. Программисты-разработчики прикладных программ

    5. Конечные пользователи.

    1.4. Определение данных в базах данных.

    Данные – описание разных явлений, предметов вне зависимости от того, доступно полное понимание его или нет.

    данные = информация

    Модель данных – представление о предметной области в виде данных и связей между ними.

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

    1.6. Манипулирование данными в субд.

    Манипулирование- это соединение таблиц, удаление файла, переименовывание файла, удаление записей.

    Используется язык SQL , так как можно создавать с его помощью таблицы.

    Удаление строк:

    1. пометить строку как удаленную(физически она не удаляется)

    пометить можно в окне browse(cлева от строки) либо командой DELETE она помечает текущую строку.

    1. команда Pack удаляет все помеченные строки.

    Данные могут спасти если остался файл с расширением bak.

    1.7 Модификация Баз данных

    Возможны любые модификации, кроме переименования базы в многопользовательском режиме. Процедуры изменения базы данных подобны ее созданию. Используются те же методы Create и Append. Модификацию базы данных можно также проводить с помощью специальных запросов SQL.

    1.8. Реструктуризация Баз данных.

    Реструктуризация- изменение структура (шапки например)

    1. изменение имен столбцов, внесение новых столбцов.

    2. изменение типов данных.

    3. изменение размера данных.

    4. изменение индексов

    5. замена связей м/у таблицами

    1.9. Понятие целостности баз данных.

    Целостность БД состоит в гарантии:

    1. нерушимости данных и связи между ними. В том числе при использовании многими пользователями.

    2. быстрого восстановления без потерь при сбоях и авариях

    3. контроля данных

    4. при вводе данных система контролирует связи

    1.5. Языки запросов СУБД.

    Язык запросов можно увидеть в Яндексе в пункте help

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

    Поисковый контекст

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

    Слова идут подряд.

    Такой порядок слов можно указать с помощью запроса в кавычках.

    Пример

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

    Слова в одном предложении.

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

    Пример

    Запрос культура & Китая найдет страницы, где есть сочетания слов культура Древнего Китая или Китай и его культура.

    Слова в одном документе.

    Если вам нужны документы, где присутствуют заданные слова — неважно, на каком расстоянии и в каком порядке — соедините их оператором &&.

    Пример

    По запросу продажа & сканеров && Новосибирск найдутся страницы, где в одном предложении должны встретиться слова продажа и сканеры, и где угодно на странице должно быть слово Новосибирск.

    Расстояние между словами

    Вы можете регулировать расстояние между словами с точностью до слова.

    Слова на расстоянии в несколько слов.

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

    Пример

    Запрос великий /2 хурал найдет страницы, где есть фразы хурал великий, или великий народный хурал, или великий государственный хурал, но не найдет страницы, где есть великий государственный народный хурал (расстояние между словами равно 3).

    Слова на расстоянии в несколько предложений.

    Аналогично записи расстояния между словами, вы можете задавать расстояние в предложениях. Для этого достаточно перед оператором расстояния / указать оператор &&.

    Пример

    Если вы хотите найти статью, где упоминается памятник Пушкина на площади Искусств, можете задать запрос памятник Пушкину && /3 площадь Искусств.

    Порядок слов

    Кроме расстояния между словами, вы можете указывать и их порядок.

    Слова следуют в определенном порядке на нужном расстоянии.

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

    Пример

    Если вы хотите найти отчество Тургенева, то задайте запрос Иван /+2 Тургенев Будут найдены страницы, где между словами Иван и Тургенев есть ровно одно третье слово.

    Слова расположены в заданной окрестности.

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

    Пример

    Запрос Васисуалий /(-1 +2) Лоханкин найдет как страницы с текстом Васисуалий Батькович Лоханкин, так и Лоханкин Васисуалий.

    Найти любое из слов

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

    Пример

    Запрос аэроплан | самолет | планер | дирижабль | аэростат | вертолет | пепелац найдет страницы, где встречается хоть одно из этих слов.

    Исключить слова

    Яндекс позволяет исключать страницы, где есть определенные слова. Для этого используется оператор ~~, слева от которого вы пишите «что искать», а справа - какие страницы исключать из поиска.

    Пример

    Если вы ищете информацию о Задорнове (но не министре), можете задать запрос Задорнов ~~ министр. Будут найдены все страницы, где есть слово Задорнов и нет слова министр.

    Иногда допустимо, чтобы слово встречалось на странице, но нельзя, чтобы оно встретилось в том же предложении. С этой целью используйте оператор ~.

    Пример

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

    Сложные запросы: выручат скобки

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

    Пример

    Если вы ищете описание мумие, но не хотите наталкиваться на прайсы интернет-магазинов, можете задать такой запрос: мумие && (лечение | лечебный | болезни)~~(цена | прайс | рубли | доллар | фирма | магазин). Будут найдены все страницы, где есть слово мумие, а также любое из слов лечение, лечебный или болезни, и нет ни одного из слов, перечисленных после оператора ~~.

    Морфология

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

    Пример

    Запрос !день найдет страницы, где слово день встречается только в такой форме.

    Если одна или несколько форм слова совпадает с другими словами, поиск может находить лишние страницы. Указав нормальную форму слова с помощью оператора !!, вы уберете многие из ненужных страниц.

    Пример

    Запрос !!день найдет все формы слова - дня, дню днем и др., и не найдет форм слова деть (одна из которых совпадает со словом день).

    Независимо от формы слов, Яндекс по-разному учитывает слова, набранные с маленькой и большой буквы.

    Список операторов

    Яндекс позволяет вам искать в отдельных элементах страницы или в связанной с ней информации.

    1.10. Безопасность баз данных

    Безопасность – защита данных от случайного или преднамеренного доступа лиц, не имеющих на это права.

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

    Безопасность обеспечивает:

    1. Проверка полномочий ( имя пользователя, пароль)

    2. Ограничение доступа. Существует два вида – привилегии доступа и привилегии безопасности.

    Привилегии доступа – 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

    2. 1:n

    3. m:n

    Пример. Фирма, с клиентами работают менеджеры.

    В реляционных БД не используются связи n:m и заменяются на 1:n (договоры дифференцируются по товарам).

    1.17. Иерархическая модель данных.

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

    1.15. Сравнение реляционного, иерархического и сетевого подходов к форме моделей данных.

    См. билеты 16, 17 и 18 :p

    1.18. Сетевая модель данных.

    Замкнутый цикл указателей. Также относится к классу навигационных моделей.

    Поиск:

    1. Поиск в файле сотрудников (по индексу)

    2. Идём к первому файлу, потом к следующему по указателю.

    Индекс по связующим полям не строится, а по основным строится.

    Достоинство (как и всех списковых структур) – быстрое внесение изменений в Б.Д.

    Пример: Попов назначается ведущим инженером (пунктиром). Сначала добавляется оклад.

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

    1.19. Логические структуры данных. (элемент, группа, отношение, представление).

    Логические структуры данных.

    1. Элемент (поле, атрибут) – минимальная логически неделимая структура данных.

    Свойства элементов:

    1. Значение элемента данных

    2. Имя (существуют ограничения на длину имени и на использование символов)

    3. Индикатор существования значения

    4. Права доступа (пароль) – ограничение доступа передаётся к данным, также любому элементу может быть присвоен уровень секретности

    5. Дата и время последнего изменения

    6. Размер (связан с типом данных)

    7. Тип

    8. Класс значений – дополнение к типу данных –ОДЗ – задаётся или интервалом, или списком разрешённых или запрещённых значений.

    9. Группа – состоит из элементов или других групп. Простая группа состоит только из элементов. В реляционных БД используются только простые группы – атрибуты. Под именем группы хранится таблица строк и её элементов. В реляционных СУБД могут использоваться составные группы – в группу входит другая группа.

    FAM

    NAME

    GR

    KAF

    должность

    должность

    Назв.

    оклад

    Назв.

    оклад

    Ким

    Иван

    Ф5-1

    57

    Инж.

    3000

    Лабор.

    2000

    1. Групповое отношение – состоит из нескольких групп. Множество связанных групповых отношений – логическая структура. Схема группового отношения:

    STUD

    Должность

    FAM

    NAME

    GR

    KAF

    Назв

    Оклад


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

    1.20. Организация физических записей.Способы выделения элементов в физической записи.

    Структуры хранения.

    1. Организация физических записей.

    Логические структуры и физические записи могут быть связаны по-разному:

    1. С овпадают

    1. хранятся одна в другой в разных соотношениях

    1. Способы выделения элементов в физической записи:

    1. Элементы хранятся в заданной (вычисляемой) позиции

    2. Элементы разделяются разделителем

    3. элементы помечаются этикеткой

    1.:

    1. Элементы начинаются с заданной позиции : 1 Ким 18Иван 30Ф5-571

    2. Развитие а): информация о начальной позиции хранится в файле .dbt.

    3. Хранится информация о количестве символов (числа не учитываются) : 3Ким4Иван.. Недостатки – программист должен знать последовательность элементов или начальные позиции.

    4. Всю информацию переносят в начало: маркер, справочник, данные. Стандарт ISO 2709

    2.: Ким*Иван*Ф5-571*…. Недостаток - разделители нельзя использовать в тексте.

    3.: Э1КимЭ2Иван…

    1.22. Последовательный файл, файл с указателем, индексирование по одному элементу.

    Структуры хранения:

    1. Последовательный файл

    Фирма

    Статус

    город

    1

    2

    3

    4

    5

    Весна

    Свобода

    Скороход

    Днипро

    Арарат

    10

    20

    30

    20

    30

    Москва

    Москва

    Спб

    Киев

    Ереван

    Достоинства – простота

    Недостатки – большое время доступа к файлам и большой объём дублирования.

    1. Файл с указателем.

    город

    Сведения

    Москва

    Москва

    Спб

    Киев

    Ереван

    Файл городов сокращает объём при условии, что размер значения превышает размер указателя. Хорошо обеспечивается целостность, но проблему поиска структура не решает.

    1. Индексирование по одному элементу

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

    1.23. Инвертированная организация файлов.

    И нвертированный файл.

    Структура используется в документарно - поисковых системах и Internet. Файл – словарь и собственно инвертированный файл.

    1.24. Списковые структуры (списки).

    Списковая структура – структура, в которой не совпадают физическая и логическая последовательность данных.

    Логическая структура:

    Физическая структура:

    Достоинство: Списковая структура хорошо подходит для изменений и дополнений

    Недостаток: Большое время поиска.

    С пособы ускорения списковых структур:

    1. Экспресс – указатель – дополнительный указатель, который ссылается на много записей вперёд. Иногда добавляется обратный указатель – двусвязанный список.

    2. Зацикливание списка – последний указатель ссылается на первый.

    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), тип дата, интервал дат, координаты и т.д.

    1. Группа – состоит из элементов или других групп. Простая группа состоит только из элементов. В реляционных БД используются только простые группы – атрибуты. Под именем группы хранится таблица строк и её элементов. В реляционных СУБД могут использоваться составные группы – в группу входит другая группа.

    FAM

    NAME

    GR

    KAF

    должность

    должность

    Назв.

    оклад

    Назв.

    оклад

    Ким

    Иван

    Ф5-1

    57

    Инж.

    3000

    Лабор.

    2000

    1. Г рупповое отношение – состоит из нескольких групп. Множество связанных групповых отношений – логическая структура. Схема группового отношения:

    1. 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).

    1. APPEND – сист. выделенную форму:

    2. BROWSE – увидеть таблицу

    3. MODIFY STRUCTURE – изменить структуру

    Поиск:

    1. Locate for FAM = «Ким» - найти первого Кима и остановится. Continue – продолжить поиск

    2. Index on FAM to ST_FAM – создание индексного файла

    Индексный файл:

    FAM

    указатель

    Если Index on FAM-NAME to … то порядок

    Ким Иван

    Ким Пётр

    Сан Иван

    указатель

    Seek «Ким» - поиск Кима в индексированном файле.

    Browse – курсор на первом Киме

    1. Set filter to fam = «Ким»

    Browse – строчки таблицы STUD с Кимом

    2.11. Операторы доступа и поиска команд. Языка системы vfp

    Поиск:

    1. Locate for FAM = «Ким» - найти первого Кима и остановится. Continue – продолжить поиск

    2. Index on FAM to ST_FAM – создание индексного файла

    Индексный файл:

    FAM

    указатель

    Если Index on FAM-NAME to … то порядок

    Ким Иван

    Ким Пётр

    Сан Иван

    указатель

    Seek «Ким» - поиск Кима в индексированном файле.

    Browse – курсор на первом Киме

    1. 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:

    1. Типовые

      1. По первой таблице

      2. По 2-м связанным 1:n таблицам

    2. Созданные пользователями

    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. Определить родительскую и подчинённую таблицу

    2. Проиндексировать подчинённую таблицу по связующему полю

    3. Проверить, чтобы связующие поля в родительской и подчинённой таблице имели один тип и размер

    4. Необходимо указать имя связующего поля в родительской таблице

    Данная процедура устанавливает связь 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. Определение пользовательских видов.