Основные понятия систем баз данных (БД).
Определение. БД - поименованная совокупность данных, относящихся к некоторой области применения, обладающих определённой структурой, компонентами которой могут быть любые структурные единицы (группы, записи, файлы), связанные между собой определённым образом. Причём эти данные могут использоваться как в одной, так и в нескольких прикладных задачах, как одним, так и несколькими лицами.
БД свободна от излишней неуправляемой избыточности и обладает свойством целостности.
Пример:
STUD
FAM | NAME | GR | KAF | FOTO |
Ким | Иван | ● ссылка на файл | ||
… | … | ● ссылка на файл | ||
… | … | … | ● ссылка на файл |
Совокупность всех имён полей – таблица.
Строка в таблице - кортеж (студент) с атрибутами.
KAFEDRA
KAF | ZAV | TEL |
KAF – в БД данные взаимосвязаны. Используется вся имеющаяся информация, причём информация не должна повторятся.
Системы баз данных.
Банк данных – некий срез системы БД.
АИПС – информационно- поисковая система.
Пользователи:
а) Создатели (владельцы)
б) Администратор
в) Программисты–разработчики (разработчики СУБД)
г) Программисты-разработчики прикладных программ
д) Конечные пользователи.
Универсальный язык – с его помощью можно задать запрос. Пример:
1)QBF, QBE
FAM | =(оператор) | Ким |
NAME | = | Пётр |
GR | ||
KAF |
2) Yandex и др.
Система управления базами данных.
Определение. Система управления базами данных (СУБД) – это система, предназначенная для поддержки использования БД, и включает в себя следующие функции:
1) Создание БД: Определение данных, инициализация файлов, ввод данных с ФЛК (формально – логическим контролем).
2) Справочная функция
3) Манипулирование данными
4) Обновление данных
5) Реструктуризация данных
6) Поддержка средств программирования и проектирования приложений
7) Обеспечение целостности
8) Обеспечение безопасности
СУБД функционирует в определенной операционной обстановке и поддерживает определённую модель данных.
Определение данных – описание структур данных. Включает определение имён таблиц, столбцов, типов данных, размеров данных для каждого столбца, определение связей между таблицами, определение индексных файлов, области допустимых значений и др.
Организация БД в СУБД Visual Fox Pro (VFP)
Поддерживает реляционную модель данных (представлены в виде взаимосвязанных таблиц).
STUD
FAM | NAME | GR | KAF |
Ким | Иван | ||
… | … | ||
… | … | … |
2 языка, поддерживаемые Fox Pro:язык Fox Pro и SQL- стандартный язык.
Установление пути в директории по умолчанию: tools – options – file locations – default dir.
Команды:
1) Dir – содержание текущей директории
2) Create stud - создать файл с расширением dbt (Stud.dbt).
Таблица структуры файла:
name | type | width | dec |
FAM | C | ||
NAME | C | ||
GR | C | ||
KAF | N | ||
STIPA | N | ||
FOTO | G | ||
BIRTHDAY | D |
C – Символьный тип
N- numeric – числовой тип с фиксированной запятой
G – general – хранит в таблице адрес файла с фотографией
D – Дата
По умолчанию ММ.ДД.ГГ. Set date to germane →ДД.ММ.ГГ.
MEMO – для хранения документов большого размера (текст, ссылка на файл.dbt.
LOGICAL - логический – TRUE (T, t, Y, y) или FAULSE (F, f, N, n).
3) APPEND – сист. выделенную форму:
4) BROWSE – увидеть таблицу
5) MODIFY STRUCTURE – изменить структуру
Поиск:
1) Locate for FAM = «Ким» - найти первого Кима и остановится. Continue – продолжить поиск
2) Index on FAM to ST_FAM – создание индексного файла
Индексный файл:
FAM | указатель |
Если Index on FAM-NAME to … то порядок
Ким Иван Ким Пётр Сан Иван | указатель |
Seek «Ким» - поиск Кима в индексированном файле.
Browse – курсор на первом Киме
3) Set filter to fam = «Ким»
Browse – строчки таблицы STUD с Кимом
То же самое с SQL командой select * from stud where fam = «Ким»
Способы установления связи между таблицами.
I. Физическое соединение двух таблиц.
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 – возврат к управлению командой.
II. Установление связей с помощью команды SET RELATIONS.
Соответствует программному поиску.
STUD.dbt KAFEDRA.dbt
FAM | NAME | GR | KAF | KAF | ZAV | TEL | |
Сан Ким Ван | Петр | К7-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 ### ### | ### ### | ### ### | Румянцев ….. ….. | 323… 323.. 323.. |
### - аналогичные строки
III. Установление связи в форме
Формы Fox Pro:
1) Типовые
1. По первой таблице
2. По 2-м связанным 1:n таблицам
2) Созданные пользователями
File – new – form – wizard –
FAM NAME | → |
Форма хранится в виде файла
Do form имя – запуск формы
1:n – выбрать род поля – выбрать поля дочерней таблицы – сортировка - …
Модификация форм.
В дизайнере форм добавляется один объект. При добавлении кнопки с панели инструментов: указатель –Click,…Browse – команда кнопки. При редактировании форм их необходимо закрывать.
IV. Установление связи в БД.
Сохраняется на всё время функционирования БД. Физически БД – файл.dbc.
Создание: File – New – Data base -…
Browse
Сохранённую таблицу можно добавить в БД при помощи команды Add.
Для осуществления связи в БД надо в родительской таблице указать связующее поле. Это делается заданием первичного индекса Primary key. В дочерней таблице индекс - [-]. При этом БД поддерживает целостность.
Создание отчётов в среде VFP.
Отчёт – это:
1.) печатный многостраничный документ в который включены данные из БД.
2.) Вид объекта
Создание: File – new – report – quick report
Вид отчёта:
FAM NAME GR KAF -Объекты типа Text Верхний Колонтитул |
FAM NAME GR KAF -Объекты типа fields Описание строки БД |
DATE() Page Gen() - Печать даты и номера стр. Нижний колонтитул |
Получилось:
Report form имя – запуск отчёта.
Изменить – Report designer.
Недостаток – отчёт привязан к таблице, для печати используется промежуточный файл.
Создание лейблов в среде VFP.
Label (карточка) – создаётся через wizard.
1.) Выбор размера – количество столбцов, высота карточки
2.) Выбор таблицы
3.) формирование этикетки
FILE NAME GR KAF | ► ◄ | FAM NAME GR KAF |
Программа – гистограмма (необходима для демонстрации возможностей работы с таблицами).
Возможности управления:
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.&& пишется слитно!
Создание меню в среде VFP.
File – new – menu
Menu – generate ……….ok
Do menu1.mpe – запуск меню
Текст программы в текстовом файле.prg (modify command gist1)
Функции СУБД.
I. Создание БД. Включает определение, инициализацию файлов и ввод данных с ФЛК. К определению относится установление связей между таблицами, определение индексных файлов, определение структуры данных. Инициализация – создание пустой базы данных по заданным определениями данным. При вводе данных осуществляется формально – логический контроль (тип, размер, шаблон, одз). Он ориентирован на обеспечение целостности данных.
Создание БД осуществляется:
1) Определение
· Диалоговыми средствами
· Командами СУБД
· Средствами SQL
2) Инициализация скрыта от пользователя
3) Формы для ввода данных
II. Справочная функция – обеспечивает доступ к данным:
- Команды поиска родной СУБД (Locate, seek)
- Стандартизованный язык SQL (select)
- Средства поиска для конечного пользователя
III. Манипулирование данными – работа с файлами – таблицами (переименование, удаление, соединение, объединение).
Удаление данных в некоторых системах запрещено или фиксируется.
IV. Обновление данных – замена введенных значений на другие.
Проблемы из-за изменений:
1) В реляционных СУБД для хранения отводится место по максимальному значению – данные легко изменить.
2) В системах с плотной упаковкой данных часто нет места для изменения данных на более объёмные. В этом случае запись целиком переносится в другое место, а старая запись утилизируется.
3) В многопользовательских системах необходимо осуществлять одновременное изменение данных разными пользователями – проблема тупиковых ситуаций.
V. Реструктуризация данных – изменения в определении данных: ввод и удаление столбцов, изменение размера поля, типа поля, изменение связей, индексов.
Реструктуризация проводится в следующей последовательности этапов:
1) Внесение изменений в структуру БД
2) Инициализация новой пустой БД
3) Копирование данных из старой БД в новую
4) Переименование (старая БД удаляется или ей присваивается имя.bak)
При реструктуризации данных потерь не происходит.
VI. Средства для программирования и проектирования приложений.
Средства программирования:
а) Встроенный язык программирования (Fox Pro)
б) Встроенная среда программирования (Visual Fox Pro)
в) Использование стандартного языка программирования, среды программирования с обращением к БД через команды SQL (Delphi)
г) Для языка программирования разработаны процедуры для обращения к данным (Turbo Pascal)
д) Поддержка средств автоматического программирования типовых приложений (формы, отчёты, лейблы).
е) Встроенные key’s средства проектирования БД.
VII. Обеспечение целостности БД
Целостность – фундаментальное свойство БД. Обеспечение целостности состоит в гарантии:
1) Нерушимости данных и связей между ними, в том числе при использовании многими пользователями
2) Быстрого восстановления без потерь при сбоях и авариях
3) Контроля данных
На практике:
1) Проблема тупиковых ситуаций – 2 пользователя изменяют один файл. Используется транзакция – последовательность операций по изменению данных, такая, что либо все операции в последовательности выполняются полностью, либо все отменяются. Отмена сделанных изменений – откат. Два механизма внесения изменений:
1. 2-х фазовый протокол фиксации изменений: при внесении изменений все объекты блокируются, при подтверждении изменения – блокировка снимается.
2. Отложенная транзакция – регистрируется время начала изменения данных
2) Скачок напряжения – установка фильтров или источников бесперебойного питания. БД сама закрывается или закрывает пользователь.
Гибель устройства, где хранится БД – резервное копирование – через определённый промежуток времени делается копия БД на другом носителе.
LOG – журнал (системный) – последняя копия используется при гибели БД. В системном журнале часто сохраняются и данные оперативной памяти.
3) Контроль данных.
Осуществляется при вводе данных – ФЛК(Формально – логический контроль). Позволяет контролировать тип данных, одз, шаблоны и т.д. Существуют также другие виды контроля, например семантический – по смыслу.
VIII. Безопасность – защита данных от случайного или преднамеренного доступа лиц, не имеющих на это права.
Секретность – право отдельных лиц определять, сколько и какой информации может быть передано другим лицам.
Безопасность обеспечивает:
1) Проверка полномочий (имя пользователя, пароль)
2) Ограничение доступа. Существует два вида – привилегии доступа и привилегии безопасности.
Привилегии доступа – select(выбор данных),update(изменение данных),delete(удаление данных),insert(ввод данных). Привилегия доступа предоставляется пользователям разного типа (админы, владельцы и т.д.), по ролям (опр. Паролем), всем пользователям.
Привилегия безопасности – никогда группами – только конкретным пользователям. Необходимо сохранение секретных данных.
Уровни: security, владелец БД, оператор.
Существуют логические способы защиты информации (часто непредставление информации равносильно раскрытию данных) Используется разграничение информации по уровням секретности.
Модели данных.
Данные – описание разных явлений, предметов вне зависимости от того, доступно полное понимание его или нет.
Информация – приращение знаний.
Задача поисковых систем – давать информацию, а не данные.
Далее будем считать данные = информация.
Модель данных – представление о предметной области в виде данных и связей между ними.
Предметная область – часть реального мира, представляющая интерес для данного пользователя и отражаемая в БД.
Модель данных может отображать концептуальное (инфологическое) представление данных, либо представление реляционное (даталогическое).
Схема создания БД:
|

Схема – графическое или формальное определение логической структуры данных. Пример:
STUD
FAM | NAME | GR |
STUD(FAM,NAME,GR) Д.Б.={STUD,KAFEDRA}.
Архитектура (общая схема) систем БД.
Эта схема – многоуровневое представление данных
Интерфейс пользователя – представление о данных конкретного пользователя
Внешний уровень – определяется внешней схемой (моделью). Представление о данных разработчика прикладных программ пользователя.
Концептуальный уровень – определяется схемой БД – общее концептуальное представление обо всех данных в БД.
Внутренняя модель определяется внешней схемой. Внутренняя модель отражает физическую последовательность данных на диске. К внутренней модели относится структура индексного файла. Внутренняя модель – представление о данных разработчика БД.