
- •Лекции по курсу «Базы данных» для студентов факультета вычислительной математики и кибернетики кгу
- •Системы управления базами данных, их состав и назначение. Файловые и клиент-серверные субд.
- •2. Типы базы данных. Реляционные, иерархические, сетевые, объектно-ориентированные базы данных.
- •Основные понятия теории баз данных. Поиск данных и пользовательские запросы.
- •4. Проектирование предметной области. Объекты и атрибуты предметной области. Связи между объектами типа 1:1, 1:m, m:n.
- •Первичные ключи и индексы
- •Реляционные отношения между таблицами Отношение один-ко-многим
- •Отношение один-к-одному
- •Отношение многие-ко-многим
- •Оператор переименования атрибутов.
- •Теоретико-множественные операторы:
- •Объединение
- •Пересечение
- •3. Вычитание
- •4. Декартово произведение
- •Специальные реляционные операторы
- •5. Выборка (ограничение, селекция)
- •Проекция
- •6. Соединение
- •7. Деление
- •Примеры использования реляционных операторов
- •Кросс-таблицы.
- •Ключи отношений. Их роль и использование в базах данных.
- •Связи между отношениями. Внешние ключи. Проблема целостности внешних ключей.
- •Функциональные зависимости. Аксиоматическая система функциональных зависимостей. Теорема полноты.
- •1. Аксиоматика функциональных зависимостей Армстронга.
- •Покрытия функциональных зависимостей. Структура неизбыточных покрытий.
- •Нормальные формы баз данных. Первая, вторая и третья нормальные формы. Нормальная форма Бойса- Кодда.
- •Вторая Нормальная Форма.
- •Отношение сотрудники_отделы
- •Отношение проекты
- •Отношение задания
- •3 Нормальная форма.
- •Отношение сотрудники
- •Отношение отделы
- •Нормализация баз данных. Алгоритм приведения к 3-й нормальной форме с помощью кольцевых зависимостей.
- •Метод «Entity-Relationship». Проектирование структуры баз данных с помощью er-диаграмм. Пример.
- •Физическая организация баз данных.
- •2. Блочный поиск.
- •3. Двоичный поиск.
- •4. Поиск в индексно-последовательном файле.
- •6. Поиск в сбалансированном дереве.
- •7. Перемешивание.
- •8. Комбинация вышеперечисленных способов.
- •Организация баз данных с помощью хеширования. Влияние на эффективность хеширования размеров блока, плотности заполнения и выбора алгоритма хеширования.
- •2. Деление.
- •3. Сдвиг разрядов.
- •4. Преобразование системы исчисления.
- •Язык sql. Команды create, select, insert, alter, update, drop.
- •Простая выборка
- •Использование операторов сравнения
- •Использование in
- •Использование like
- •Выборка с упорядочением
- •Применение агрегатных функций sum, max, min, average в предложении select.
- •Функции без использования фразы group by
- •Фраза group by
- •Использование фразы having
- •19. Организация сложных запросов с помощью команды select.
- •Декартово произведение таблиц
- •Соединение таблицы со своей копией
- •Простые вложенные подзапросы
- •Объединение (union)
- •Организация клиент–серверных бд. Модели технологий «клиент–сервер».
- •Технологии доступа к данным. Система драйверов odbc. Источники данных. Создание dsn-файла.
- •Модели безопасность данных. Мандатный и дискреционный подход к обеспечению безопасности данных. Передача и отзыв привилегий пользователей с помощью предложения grant.
- •26.Безопасность баз данных. Средства защиты бд access.
- •31. Использование внешних данных в Access. Создание страниц доступа к данным и загрузка внешних баз данных. Выполнение sql-запросов к серверу ms sql Server.
- •I. Создание html-страницы доступа к данным
- •II. Загрузка в Access базы данных c сервера и работа с ней.
- •III. Выполнение в Access запросов к внешним таблицам, хранящимся на ms sql Server.
- •Совместная работа Access и ms sql Server, работа с удаленными данными на сервере. Использование утилиты Query Analyzer.
- •Работа с внешними данными с помощью технологии odbc
- •Команды Transact-sql
- •Создание представлений
- •Создание триггеров
- •37. Raid массивы и уровни их организации.
Основные понятия теории баз данных. Поиск данных и пользовательские запросы.
Определение. Базой данных называется совокупность взаимосвязанных данных, хранящихся в постоянной памяти компьютера в форме, обеспечивающей операции изменения данных и получения информации пользователям по их запросам. Пример БД. Таблица «Установочные сведения на студента»
Табл.1.
Фамилия, имя,отчество |
Номер группы |
Домашний адрес |
Телефон |
Дата рождения |
Афонин C. Н. |
ПМ-21 |
Гончарова, 10-25 |
241-12-76 |
30.09.83 |
Иванова Е.И. |
ПМ-22 |
Нариманова,1-12 |
null |
15.07.84 |
Логическая структура данных.
БД может состоять из одной или нескольких взаимосвязанных таблиц. Например, к табл.1 могут добавиться новые таблицы данных о сдаче студентами текущих экзаменов, зачетов и т.п.
Рассмотрим подробнее структуру таблицы: логической единицей данных таблиц является строка данных или запись. Каждая запись состоит из отдельных элементов, называемых полями. Каждое поле записи содержит элемент информации об некотором объекте, в нашем примере, студенте. Таким образом, каждое поле записи характеризует отдельные качества объекта, а в целом, таблица характеризует данные о совокупности однотипных объектов. Разбиение БД на отдельные таблицы, записи и поля называется логической структурой БД.
Хранение данных. Физическая организация (структура) данных.
БД хранятся на физических носителях -магнитных и оптических дисках, лентах и т.п. Объемы данных, входящих в БД, могут быть огромными – несколько млн. записей, занимающих гигабайты памяти, поэтому возникает проблема такого размещения данных на носителях, при котором доступ к данным был бы наиболее эффективным. Способ размещения данных на физическом носителе называется физической организацией или структурой данных.
Связь между логической и физической структуры данных.
Ясно, что не может быть полной независимости физической и логической организации данных. Бессмысленно хранить в одном блоке памяти , например, фамилии сотрудников, а в другом – данные на этих сотрудников, если не наладить при этом совокупность ссылок.
Наиболее простая физическая организация состоит в том, чтобы размещать в памяти файл, хранящий данные одной таблицы, последовательно запись за записью.
Запись 1 |
Запись 2 |
Запись 3 |
... |
Запись n |
При простейшей реляционной модели организации данных каждое поле записи имеет фиксированную длину, а значит, и все записи имеют фиксированную длину. При этом игнорируется тот факт, что элементы данных, например, фамилии могут иметь разную длину, а значит, надо выбрать длину поля фамилий по самой длинной фамилии. Много места при этом остается свободным, однако, при таком подходе можно легко определить координаты записи по ее номеру, т.е. осуществлять произвольный доступ к данным.
БД размещаются, в основном, на физических носителях, представляющих собой цилиндры, состоящие из пакетов дисков. Поверхность каждого диска состоит из дорожек, которые делятся на сегменты, называемые кластерами. Диски вращаются со скоростью несколько тыс.об./мин. Читающая - записывающая головка перемещается с помощью специального привода перпендикулярно дорожкам.
Основным типом пользовательского запроса является получение одной логической записи. Если запись размещена на одной дорожке, то ее считывание можно произвести без перемещения головки, что значительно ускоряет доступ к записи.
При считывании данных о целой таблице желательно также размещение ее на одном носителе с тем, чтобы обеспечить к ней наиболее эффективный доступ.
С другой стороны, если БД привязана к конкретному физическому носителю и жестко настроена на него, то ее невозможно использовать на другом компьютере, что ограничивает область ее применения, поэтому проектировщики БД стараются обеспечить независимость логической и физической структуры данных.
Типы пользовательских запросов.
Ранее мы уже говорили о составе и задачах систем управления БД. Рассмотрим их здесь более подробно:
1. Основная задача СУБД – обеспечить эффективное хранение данных и осуществление легкого доступа к ним. Для выполнения этой задачи современные СУБД (например, Access, входящий в систему Windows) имеют развитую среду пользователя. К ее задачам относятся обеспечение процедуры ввода данных. Данные вводятся в виде простой таблицы или с помощью специальных форм. Форма-это специальный бланк, выводимый на экран компьютера, в котором имеются окна для ввода данных. Имеется стандартный набор форм (ленточный, в столбик и т.п.), который может быть дополнен пользователем своими собственными формами, привязанными к конкретной таблице. Здесь пользователь может проявить талант дизайнера, размещая поля ввода по экрану, расцвечивая области ввода, расставляя управляющие кнопки, скрытые МЕНЮ, всплывающие подсказки, прокрутки и т.д.При вводе данных можно указывать ключевое поле или их совокупность, и тогда данные будут сортироваться по этим полям.
2. Следующая задача СУБД- это выполнение запросов пользователя. Пользователь может запрашивать данные разного типа. Все пользовательские запросы делятся на три основных типа:
Получить единичную запись
Получить выборку записей
Получить пакет записей
Рассмотрим каждый из них по отдельности:
При поиске единичной записи указывается номер записи или какой-нибудь отличительный признак искомой записи, например, фамилию сотруднику. Атрибут, по которому осуществляется поиск, называется ключом поиска. Ключом поиска в таблице “Сотрудники предприятия” может быть, например, ФИО сотрудника, его табельный номер или совокупность атрибутов, позволяющая однозначно идентифицировать запись. Рассмотрим в качестве примера таблицу “Телефонный справочник”, содержащую 2 поля : ФИО и номер телефона. Основной тип запроса в этом случае состоит в том, чтобы по заданным ФИО найти нужный номер телефона. Если данные в таблице заполнялись произвольным образом, то для данного вида поиска требуется просматривать всю таблицу, пока не встретится требуемая фамилия. Такой поиск неэффективен, поэтому желательно данные в таблицах сортировать, например, по алфавиту. В этом случае, вместо последовательного сканирования всего файла, достаточно производить выборочные проверки и методом деления пополам выйти на искомую запись. Число операций считывания при этом равно log_2 n, где n-число записей в таблице. Предположим теперь, что нам требуется решить обратную задачу: найти фамилию по номеру телефона. В этом случае упорядочение таблицы по фамилиям ничего нам не даст, и опять придется просматривать всю таблицу. Значит, для ускорения поиска надо создать копию таблицы, где данные будут сортированы уже по номерам телефонам.
В общем случае, таблицы могут иметь несколько десятков полей и возникает необходимость поиска по различным полям и их комбинациям. В этом случае, приходится иметь многочисленные копии данных, упорядоченные различными способами.
2. Второй тип пользовательского запроса называется поиском по шаблону, когда указывается отличительный признак, которому удовлетворяют несколько записей, например, запрос “найти данные о сотрудниках отдела Х”. Здесь ключом поиска является номер или название отдела, не позволяющий однозначно идентифицировать отдельную запись. Опять же для выполнения такого запроса желательно иметь таблицу, сортированную по номерам отдела. Поскольку записей, соответствующих одному и тому же отделу, будет несколько, то можно дополнительно их отсортировать по другому полю, например, фамилиям. Список студентов УлГУ можно например, отсортировать по факультетам, курсам, группам и фамилиям.
3. Третий тип запросов означает просмотр всей таблицы или основной ее части для выполнения статистики или создания отчетов. Данные, извлекаемые из таблиц, могут дополнительно обрабатываться с сортировкой, выводом суммарных или других статистических данных.