
- •230111 Компьютерные сети
- •Оглавление
- •Аннотация
- •Для чего нужны базы данных.
- •1.Представление данных в памяти компьютера.
- •1.1.Типы и структуры данных
- •1.1.1.Основные типы данных.
- •1.1.2.Обобщенные структуры или модели данных.
- •1.2.Методы доступа к данным.
- •1.2.1.Методы поиска по дереву.
- •1.2.2.Хеширование.
- •2.Модель "сущность-связь".
- •2.1.Представление данных с помощью модели "сущность-связь".
- •2.1.1.Назначение модели.
- •2.1.2.Элементы модели.
- •2.2.Диаграмма "сущность-связь".
- •Выделим интересующие нас сущности и связи:
- •Обобщая все проведенные выше рассуждения, получим диаграму "сущность-связь", показанную на слудющем рисунке.
- •2.3.Целостность данных.
- •2.4.Обзор нотаций, используемых при построении диаграмм "сущность-связь"
- •2.4.1.Нотация Чена.
- •2.4.2.Нотация Мартина
- •2.4.3.Нотация idef1x.
- •2.4.4.Нотация Баркера.
- •3.Дореляционные модели представления данных.
- •3.1.Иерархическая модель данных.
- •3.1.1.Структура данных.
- •3.1.2.Операции над данными, определенные в иерархической модели:
- •3.1.3.Ограничения целостности.
- •3.2.Сетевая модель данных.
- •3.2.1.Структура данных.
- •3.2.2.Операции над данными.
- •4.1.2.Свойства отношений.
- •4.2.Теория нормальных форм.
- •4.2.1.Функциональные зависимости.
- •4.2.5. Bcnf - нормальная форма Бойса-Кодда.
- •4.2.6. Многозначные зависимости и четвертая нормальная форма (4nf).
- •4.2.7. Зависимости по соединению и пятая нормальная форма (5nf).
- •4.3.Ограничения целостности
- •4.3.1.Целостность сущностей.
- •4.3.2.Целостность ссылок
- •Проекция
- •Объединение
- •Пересечение
- •Разность
- •Произведение
- •Деление
- •Соединение
- •4.5.Реляционное исчисление.
- •4.6.Язык sql
- •4.6.1.Типы данных sql.
- •5.Проектирование реляционных баз данных.
- •5.1.Этапы проектирования данных
- •5.2.Инструментальные средства проектирования информационных систем.
- •5.3.Методологии функционального моделирования.
- •5.3.1.Диаграммы потоков данных. Нотация Йордона - Де Марко
- •5.3.2.Другие нотации, используемые при построении диаграмм потоков данных.
- •5.3.3.Методология sadt (idef0).
- •5.3.4.Сравнительный анализ методологий функционального моделирования.
- •5.4.Концептуальное моделирование. Пример построения модели "сущность-связь"
- •5.5.Правила порождения реляционных отношений из модели "сущность-связь"
- •5.5.1.Бинарные связи
- •5.5.3.Иерархические связи.
- •5.6.Проектирование реляционной базы данных на основе декомпозиции универсального отношения.
- •5.7.Обзор некоторых case-систем.
- •5.7.1.Power Designer компании Sybase.
- •6.Современные направления развития баз данных.
- •6.1.Ограничения реляционных баз данных.
- •6.2.Постреляционные субд.
- •6.3.Объектно-ориентированные субд.
- •6.3.1.Объектно-ориентированная парадигма.
- •6.3.2.Объектно-ориентированные субд.
- •6.3.3.Стандарт odmg.
- •6.3.4.Объектные расширения реляционных субд. Язык sql-3.
- •6.4.Объектно-реляционные субд.
- •6.5.Нечисловая обработка и ассоциативные процессоры.
- •7.Физическая организация субд.
- •7.1.Архитектура "клиент-сервер".
- •7.1.1.Основные понятия.
- •7.1.2.Модели взаимодействия клиент-сервер.
- •7.1.3.Мониторы транзакций.
- •7.2.Обработка распределенных данных.
- •7.3.Структура сервера базы данных.
- •8.Базы знаний.
- •8.1.Понятие системы баз знаний.
- •8.2.Структура и функции системы баз знаний.
- •8.3.Инструментальные средства построения систем баз знаний.
- •9.Источники информации по базам данных в Internet.
- •9.1.Электронные журналы и другие периодические издания.
- •9.2.Исследовательские группы и проекты.
- •9.3.Компании - разработчики.
Соединение
Операция соединения есть результат последовательного применения операций декартового произведения и выборки. Если в отношениях и имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать.
Пример:
Мульфильмы
Код_мульта |
Название_мульта |
Название_канала |
0 |
The Simpsons |
2х2 |
1 |
Family Guy |
2х2 |
2 |
Duck Tales |
RenTV |
Каналы
Код_канала |
Частота |
RenTV |
3,1415 |
2х2 |
783,25 |
Соединим их с выборкой σНазвание_канала = Код_канала(Произведение) Первый этап, произведение:
Код_мульта |
Название_мульта |
Название_канала |
Код_канала |
Частота |
0 |
The Simpsons |
2х2 |
RenTV |
3,1415 |
0 |
The Simpsons |
2х2 |
2х2 |
783,25 |
1 |
Family Guy |
2х2 |
RenTV |
3,1415 |
1 |
Family Guy |
2х2 |
2х2 |
783,25 |
2 |
Duck Tales |
RenTV |
RenTV |
3,1415 |
2 |
Duck Tales |
RenTV |
2х2 |
783,25 |
Второй этап, выборка σНазвание_канала = Код_канала(Произведение):
Код_мульта |
Название_мульта |
Название_канала |
Код_канала |
Частота |
0 |
The Simpsons |
2х2 |
2х2 |
783,25 |
1 |
Family Guy |
2х2 |
2х2 |
783,25 |
2 |
Duck Tales |
RenTV |
RenTV |
3,1415 |
Эквивалентный SQL-запрос:
SELECT * FROM Мультфильмы, Каналы WHERE Название_канала = Код_канала
4.5.Реляционное исчисление.
В реляционной модели определяются два базовых механизма манипулирования данными:
основанная на теории множеств реляционная алгебра
основанное на математической логике реляционное исчисление.
Также как и выражения реляционной алгебры формулы реляционного исчисления определяются над отношениями реляционных баз данных, и результатом вычисления также является отношение.
Эти механизмы манипулирования данными различаются уровнем процедурности:
запрос, представленный на языке реляционной алгебры, может быть вычислен на основе вычисления элементарных алгебраических операций с учетом их старшинства и возможных скобок
формула реляционного исчисления только задает условия, которым должны удовлетворять кортежи результирующего отношения. Поэтому языки реляционного исчисления являются более непроцедурными или декларативными.
Пример: Пусть даны два отношения:
СОТРУДНИКИ (СОТР_НОМЕР, СОТР_ИМЯ, СОТР_ЗАРПЛ, ОТД_НОМЕР) ОТДЕЛЫ(ОТД_НОМЕР, ОТД_КОЛ, ОТД_НАЧ)
Мы хотим узнать имена и номера сотрудников, являющихся начальниками отделов с количеством работников более 10. Выполнение этого запроса средствами реляционной алгебры распадается на четко определенную последовательность шагов:
(1).выполнить соединение отношений СОТРУДНИКИ и ОТДЕЛЫ по условию СОТР_НОМ = ОТДЕЛ_НАЧ.
С1 = СОТРУДНИКИ [СОТР_НОМ = ОТД_НАЧ] ОТДЕЛЫ
(2).из полученного отношения произвести выборку по условию ОТД_КОЛ > 10
С2 = С1 [ОТД_КОЛ > 10].
(3).спроецировать результаты предыдущей операции на атрибуты СОТР_ИМЯ, СОТР_НОМЕР
С3 = С2 [СОТР_ИМЯ, СОТР_НОМЕР]
Заметим, что порядок выполнения шагов может повлиять на эффективность выполнения запроса. Так, время выполнения приведенного выше запроса можно сократить, если поменять местами этапы (1) и (2). В этом случае сначала из отношения СОТРУДНИКИ будет сделана выборка всех кортежей со значением атрибута ОТДЕЛ_КОЛ > 10, а затем выполнено соединение результирующего отношения с отношением ОТДЕЛЫ. Машинное время экономится за счет того, что в операции соединения участвуют меньшие отношения.
На языке реляционного исчисления данный запрос может быть записан как:
Выдать СОТР_ИМЯ и СОТР_НОМ для СОТРУДНИКИ таких, что
существует ОТДЕЛ с таким же, что и СОТР_НОМ значением ОТД_НАЧ
и значением ОТД_КОЛ большим 50.
В данном случае, мы указываем лишь характеристики результирующего отношения, но не говорим о способе его формирования. СУБД сама должна решить, какие операции и, в каком порядке надо выполнить над отношениями СОТРУДНИКИ и ОТДЕЛЫ. Задача оптимизации выполнения запроса в этом случае также ложится на СУБД.