- •«Информационное обеспечение систем управления»
- •1. Общие понятия ио
- •1) Файловые системы (фс)
- •2) Системы, использующие бд
- •1) По размещению:
- •2) По виду модели данных:
- •1) По размещению:
- •2. Жизненный цикл ио, проектирование ио
- •В соответствии с гост 34.601-90 Автоматизированные системы в стадии создания определены следующие стадии создания автоматизированных систем:
- •2) Каскад с возвратом (возможно переопределение требований):
- •3) Итерационная модель:
- •4) Эволюционная модель:
- •Проектирование ис. Основное проектирование данных и по
- •3. Инфологическое проектирование
- •Нотация Чена:
- •Нотация Баркера:
- •Нотация idef1x:
- •Основными элементами er-модели являются:
- •Сущность
- •Атрибут
- •Множественность
- •Обязательность
- •Расширение нотаций
- •Проблемы er-моделирования
- •4. Логические модели данных. Сетевая и иерархическая модели
- •Сетевая модель данных
- •Операции сетевой модели
- •1) Операции с данными:
- •2) Операции со связями:
- •3) Навигация по данным:
- •Иерархическая модель данных
- •5. Реляционная модель данных
- •Операции с реляционными данными
- •1) Унарные операции (операции с одним отношением):
- •2) Операции с двумя однотипными отношениями:
- •3) Операции с разнотипными отношениями:
- •1. Внутренние соединения:
- •Реляционное исчисление
- •6. Нормализация отношений
- •1Нф требует:
- •2Нф требует:
- •7. Даталогическое проектирование
- •Рассмотрим преобразование реляционной логической модели
- •I. Преобразование исходной инфологической модели (им):
- •Преобразования сущностей
- •Преобразования свойств
- •Преобразования связей
- •II. Переход к логической модели:
- •III. Нормализация отношений
- •IV. Дополнительные действия
- •8. Ограничения целостности, виды и реализация
- •1) По области действия.
- •2) По месту реализации.
- •3) По способу реакции на нарушение.
- •4) По моменту выполнения проверки.
- •9. Средства доступа к данным и разработки приложений
- •10. Язык sql
- •1. Основные составляющие языка sql.
- •2. Методы и средства контроля целостности в основном реализованы в create table:
- •3. Операторы модификации данных:
- •4. Выборка:
- •5. Управление доступом:
- •6. Управление транзакциями:
- •11. Создание бд в sql
- •1. Оператор создания схемы бд
- •2. Оператор создания домена
- •3. Оператор создания таблицы
- •4. Оператор фиксации результатов работы с бд
- •12. Выборка данных в sql
- •1) Формирование единой таблицы:
- •2) Ограничение единой таблицы по строкам:
- •3) Отбор выходных столбцов выборки:
- •4) Группирование строк таблицы выборки:
- •5) Ограничение по групповым строкам:
- •6) Объединение выборки:
- •7) Упорядочивание записей выборки:
- •13. Восстановление данных
- •14. Организация многопользовательского доступа
- •15. Защита от несанкционированного доступа
- •2. Защита на уровне субд
- •3. Защита на уровне приложения
- •16. Физическая организация данных в бд
- •1. Последовательная организация.
- •2. Списковое хранение
- •3. Индексная организация
- •4. Хэшированная организация
- •17. Методы поиска в бд
- •1. Последовательный поиск:
- •2. Блочный поиск.
- •3. Бинарный поиск
- •4. Индексный поиск
- •5. Хешированный поиск
4. Оператор фиксации результатов работы с бд
COMMIT;
Данный оператор фиксирует результаты выполнения предшествующих операторов.
12. Выборка данных в sql
ОПЕРАТОР ВЫБОРКИ SELECT
Оператор выборки SELECT предназначен для описания и исполнения запросов к БД на выборку данных. Он является наиболее проработанным и идеологически важным оператором языка SQL. Основная форма оператора имеет вид:
SELECT <поля выборки>
FROM <таблицы>
WHERE <условия отбора записей>
GROUP BY <поля группирования>
HAVING <условия отбора группы>
Оператор описывает:
- откуда брать данные,
- каким требованиям должна удовлетворять отобранная информация,
- в каком виде представить результаты выборки.
Таким образом, в операторе SELECT определяется, «что должно быть получено», а не «как это получить», что показывает связь оператора SELECT с реляционным исчислением. Дополнительно оператор SELECT включает нереляционные операции.
Исполнение оператора SELECT можно представить последовательностью действий:
1) Формирование единой таблицы:
Формирование выполняется в соответствии с информацией, заданной фразой FROM. Во фразе FROM перечисляются через запятую входные элементы. Элементом может быть исходная таблица или соединение исходных таблиц.
Соединение таблиц задается в виде:
<таблица1> <вид соединения> JOIN <таблица2> ON <условие>
Вид соединения может принимать значения:
INNER – внутреннее соединение: содержит все соединения записей, для которых выполняется заданное условие
LEFT – левое внешнее соединение: к допустимым соединениям записей добавляются соединения с пустой строкой для записей таблицы 1, не имеющих соответствия в таблице 2. Таким образом, в таблицу соединения хотя бы однократно входят все записи таблицы 1 (левой таблицы соединения)
RIGHT – правое внешнее соединение: к допустимым соединениям записей добавляются соединения с пустой строкой для записей таблицы 2, не имеющих соответствия в таблице 1.
FULL – полное внешнее соединение: в результат соединения включаются все записи как левой, так и правой таблицы соединения.
После формирования соединений общая таблица образуется декартовым произведением полученных табличных элементов. Декартово произведение также образуется соединениями строк, но допустимыми являются все сочетания.
Пример:
Таблица «А_сотрудники» содержит сведения о сотрудниках фирмы X:
Таб_ном |
ФИО |
01 |
Диго |
02 |
Афанасьев |
03 |
Сидоров |
Таблица «Б_разработки» содержит информацию о том, какие программные продукты разработаны в фирме X и кто является автором каждой разработки.
ФИО |
Продукт |
Диго |
П1 |
Диго |
П2 |
Афанасьев |
П3 |
Чистов |
П4 |
Если в предложении FROM перечислено несколько таблиц, то все они неявно считаются соединяемыми. Если тип соединения явно не задан, то считается, что каждая строка первой таблицы соединяется с каждой строкой второй таблицы. Такое соединение и называется перекрестным.
Результат перекрестного соединения для приведенных выше таблиц представлен ниже.
Таб_ном |
А_сотрудники.фио |
Б_разработки.фио |
Продукт |
01 |
Диго |
Диго |
П1 |
01 |
Диго |
Диго |
П2 |
01 |
Диго |
Афанасьев |
ПЗ |
01 |
Диго |
Чистов |
П4 |
02 |
Афанасьев |
Диго |
П1 |
02 |
Афанасьев |
Диго |
П2 |
02 |
Афанасьев |
Афанасьев |
ПЗ |
02 |
Афанасьев |
Чистов |
П4 |
03 |
Сидоров |
Диго |
Ш |
03 |
Сидоров |
Диго |
П2 |
03 |
Сидоров |
Афанасьев |
ПЗ |
03 |
Сидоров |
Чистов |
П4 |
Запрос на SQL может иметь следующий вид:
SELECT а_сотрудники.таб_ном, а_сотрудники.фио, б_разработки.фио, б_разработки.продукт
FROM а_сотрудники, б_разработки;
Чаще всего при создании запросов используется тип соединения INNER JOIN, при котором соединенная таблица будет включать только те строки, для которых есть соответствующие друг другу значения полей связи в обеих таблицах.
Результат соединения типа INNER JOIN для приведенных выше таблиц представлен ниже.
Таб_ном |
ФИО |
Продукт |
01 |
Диго |
П2 |
01 |
Диго |
П1 |
02 |
Афанасьев |
ПЗ |
Этот запрос показывает разработки, выполненные сотрудниками фирмы X.
На SQL такой запрос будет иметь следующий вид:
SELECT а_сотрудники.таб_ном, а_сотрудники.фио, б_разработки.продукт
FROM а_сотрудники INNER JOIN б_разработки
ON а_сотрудники.фио = б_разработки.фио;
При использовании соединения типа LEFT JOIN в результатную таблицу попадают все записи из первой таблицы и только те записи из второй таблицы, для которых есть соответствующие значения полей связи в первой таблице. Соединение типа LEFT JOIN для рассматриваемого примера даст в результате список всех сотрудников фирмы X с указанием их разработок:
Таб_ном |
ФИО |
Продукт |
01 |
Диго |
П2 |
01 |
Диго |
П1 |
02 |
Афанасьев |
ПЗ |
03 |
Сидоров |
Null |
На SQL такой запрос будет выглядеть следующим образом:
SELECT а_сотрудники.таб_ном, а_сотрудники.фио, б_разработки.продукт
FROM а_сотрудники LEFT JOIN б_разработки
ON а_сотрудники.фио = б_разработки.фио;
При использовании соединения типа RIGHT JOIN, напротив, в результатную таблицу попадают все записи из второй таблицы и только те записи из первой таблицы, для которых есть соответствующие значения полей связи во второй таблице. Соединение типа RIGHT JOIN для рассматриваемого примера даст в результате список всех продуктов с указанием разработчика и его табельного номера:
Таб_ном |
ФИО |
Продукт |
01 |
Диго |
П1 |
01 |
Диго |
П2 |
02 |
Афанасьев |
ПЗ |
Null |
Чистов |
П4 |
На SQL такой запрос будет выглядеть следующим образом:
SELECT а_сотрудники.таб_ном, б_разработки.фио, б_разработки.продукт
FROM а_сотрудники RIGHT JOIN б_разработки
ON а_сотрудники.фио = б_разработки.фио;
Во всех приведенных выше примерах предполагалось, что условием соединения является равенство значений полей связи. Обычно именно этот тип сравнения и используется.
FULL JOIN для нашего примера даст следующий результат:
Таб_ном |
ФИО |
Продукт |
01 |
Диго |
П1 |
01 |
Диго |
П2 |
02 |
Афанасьев |
ПЗ |
03 |
Сидоров |
Null |
Null |
Чистов |
П4 |
