- •А.И. Костюк
- •Введение
- •1. Данные
- •1.1. Источники данных
- •1.1.1. Предметная область
- •1.1.2. Объект
- •1.1.3. Атрибуты (элементы данных)
- •1.2. Значение данных
- •1.2.1. Ключевой элемент данных
- •1.2.2. Запись данных
- •1.2.3. Файл данных
- •1.3. Недостатки традиционной организации файлов данных
- •1.4. База данных
- •1.4.1. Определение базы данных
- •1.4.2. Система управления базами данных
- •1.4.3. Недостатки интеграции данных
- •1.5. Администратор базы данных
- •1.6. Независимость данных
- •1.6.1. Два уровня независимости данных
- •1.6.2. Способы достижения независимости данных
- •1.7. Словарь данных
- •1.8.Принципы проектирования базы данных и достижения требуемых эксплуатационных характеристик
- •2. Администрирование базы данных
- •2.1. Функция администрирования базы данных
- •2.1.1. Обязанности абд
- •2.1.2. Абд и администрация предприятия
- •2.1.3. Абд и пользователи
- •2.1.4. Абд и разработчики прикладных программ
- •2.1.5. Абд и системная группа
- •2.1.6. Абд и эксплуатационная группа
- •2.1.7. Абд и поставщики программного обеспечения
- •2.1.8. Абд и поставщики аппаратных средств
- •2.2. Жизненный цикл системы с базой данных
- •2.2.1. Проектирование базы данных (этап 1)
- •2.2.2. Материализация базы данных (этап 2)
- •2.2.3. Конвертирование существующих наборов данных и прикладных программ во вновь созданную базу данных (этап 3)
- •2.2.4. Интеграция конвертированных и новых прикладных программ для работы в среде вновь созданной базы данных (этап 4)
- •2.2.5. Эксплуатация (этап 5)
- •2.2.6. Развитие, совершенствование и сопровождение (этап 6)
- •2.3. Абд, группа абд и ее обязанности
- •3. Словарь данных
- •3.1. Что такое словарь данных
- •3.1.1. Назначение
- •3.1.2. Словарь данных и система управления базами данных
- •3.1.3. Интерфейсы
- •3.1.4. Идеальный словарь данных. Требования и организация
- •3.2. Стратегия реализации словаря данных
- •3.2.1. Экономическая целесообразность
- •3.2.2. Условия применения
- •3.2.3. Рекомендации по определению данных
- •4. Модели данных
- •4.1. Что такое модель данных
- •4.2. Взаимосвязи в модели данных
- •4.2.1. Взаимосвязь «один к одному» (между двумя типами объектов)
- •4.2.2. Взаимосвязь «один ко многим» (между двумя типами объектов)
- •4.2.3. Взаимосвязь «многие ко многим» (между двумя типами объектов)
- •4.2.4. Взаимосвязь «один к одному» (между двумя атрибутами)
- •4.2.5. Взаимосвязь «один ко многим» (между двумя атрибутами)
- •4.2.6. Взаимосвязь «многие ко многим» (между двумя атрибутами)
- •4.2.7. Обзор моделей данных
- •4.3. Реляционная модель данных
- •4.3.1. Достоинства модели
- •4.3.2. Недостатки модели
- •4.4. Иерархическая модель данных
- •4.4.1. Иерархическая древовидная структура
- •4.4.2. Включение и удаление данных
- •4.4.3. Достоинства модели
- •4.4.4. Недостатки модели
- •4.5. Сетевая модель данных
- •4.5.1. Представление взаимосвязи «один ко многим»
- •4.5.2. Дополнительные классы наборов
- •4.5.3. Операции включения и удаления в сетевой модели данных
- •4.5.4. Достоинства модели
- •4.5.5. Недостатки модели
- •5. Проектирование концептуальной модели данных
- •5.1. Анализ данных
- •5.1.1. Сбор информации о данных, используемых в существующих прикладных программах
- •5.1.2. Сбор информации о данных для перспективных приложений
- •5.2. Нормализация отношений
- •5.3. Графическое представление
- •6. Проектирование логической модели данных
- •6.1. Отображение на реляционную модель данных
- •6.2. Отображение на иерархическую модель данных
- •6.3. Отображение на сетевую модель данных
- •7. Физическая модель данных
- •7.1. Интерфейсы между пользователем и базой данных
- •7.2. Методы доступа внутренней модели (физической)
- •7.2.1. Физический последовательный метод доступа
- •7.2.2. Индексно-последовательный метод доступа
- •7.2.3. Индексно-произвольный метод доступа
- •7.2.4. Инвертированный метод доступа
- •7.2.5. Прямой метод доступа
- •7.2.6. Метод доступа посредством хеширования
- •7.3. Методы доступа внешней модели (представления пользователя)
- •8. Языкsql
- •8.1. Состав языка sql
- •8.2. Реляционные операции. Команды языка манипулирования данными
- •Команда select Простейшие конструкции команды select
- •Список полей
- •Все поля
- •Все поля в произвольном порядке
- •Вычисления
- •Литералы
- •Конкатенация
- •Использование квалификатора as
- •Работа с датами
- •Агрегатные функции
- •Предложение from команды select
- •Ограничения на число выводимых строк
- •Is null
- •Операции сравнения
- •Between
- •Containing
- •Is null
- •Логические операторы
- •Преобразование типов (cast)
- •Изменение порядка выводимых строк (order by)
- •Упорядочивание с использованием имен столбцов
- •Упорядочивание с использованием номеров столбцов
- •Устранение дублирования (модификатор distinct)
- •Соединение (join)
- •Внутренние соединения
- •Самосоединения
- •Внешние соединения
- •9. Общая характеристика баз знаний и экспертных систем
- •9.1. Терминология
- •9.2. Принципы, структура и функции систем баз знаний (сбз)
- •9.3. Классификация инструментальных средств построения сбз
- •Литература
- •Содержание
- •1. Данные 6
- •2. Администрирование базы данных 21
- •3. Словарь данных 43
- •4. Модели данных 57
- •5. Проектирование концептуальной модели данных 82
Containing
Предикат CONTAINING аналогичен предикату LIKE, за исключением того, что он не чувствителен к регистру букв. Разрешено также использовать конструкцию NOT CONTAINING.
SELECT first_name, last_name
FROM employee
WHERE last_name CONTAINING "ne" получить список сотрудников, фамилии которых содержат буквы “ne”, “Ne”, “NE”, “nE”.
FIRST_NAME LAST_NAME
=============== ====================
Robert Nelson
Ann Bennet
Pierre Osborne
Is null
В SQL-запросах NULLозначает, что значение столбцанеизвестно. Поисковые условия, в которых значение столбца сравнивается с NULL, всегда принимают значениеunknown(и, соответственно, приводят к ошибке), в противоположностьtrueилиfalse, т.е.
WHERE dept_no = NULL
или даже
WHERE NULL = NULL.
Предикат IS NULLпринимает значениеtrueтолько тогда, когда выражение слева от ключевых слов “IS NULL” имеет значениеnull(пусто, не определено). Разрешено также использовать конструкцию IS NOT NULL, которая означает “не пусто”, “имеет какое-либо значение”.
SELECT department, mngr_no
FROM department
WHERE mngr_no IS NULL получить список отделов, в которых еще не назначены начальники.
DEPARTMENT MNGR_NO
========================= =======
Marketing <null>
Software Products Div. <null>
Software Development <null>
Field Office: Singapore <null>
Логические операторы
К логическим операторам относятся известные операторы AND,OR,NOT, позволяющие выполнять различные логические действия: логическое умножение (AND, “пересечение условий”), логическое сложение (OR, “объединение условий”), логическое отрицание (NOT, “отрицание условий”). Использование этих операторов позволяет гибко “настроить” условия отбора записей.
Оператор ANDозначает, что общий предикат будет истинным только тогда, когда условия, связанные по “AND”, будут истинны.
Оператор ORозначает, что общий предикат будет истинным, когда хотя бы одно из условий, связанных по “OR”, будет истинным.
Оператор NOTозначает, что общий предикат будет истинным, когда условие, перед которым стоит этот оператор, будет ложным.
В одном предикате логические операторы выполняются в следующем порядке: сначала выполняется оператор NOT, затем -ANDи только после этого - операторOR. Для изменения порядка выполнения операторов разрешается использовать скобки.
SELECT first_name, last_name, dept_no,
job_code, salary
FROM employee
WHERE dept_no = 622
OR job_code = "Eng"
AND salary <= 40000
ORDER BY last_name получить список служащих,
занятых в отделе 622 или на должности “инженер” с зарплатой не выше 40000.
FIRST_NAME LAST_NAME DEPT_NO JOB_CODE SALARY
============ ============= ======= ======== ===========
Jennifer M. Burbank 622 Eng 53167.50
Phil Forest 622 Mngr 75060.00
T.J. Green 621 Eng 36000.00
Mark Guckenheimer 622 Eng 32000.00
John Montgomery 672 Eng 35000.00
Bill Parker 623 Eng 35000.00
Willie Stansbury 120 Eng 39224.06
SELECT first_name, last_name, dept_no,
job_code, salary
FROM employee
WHERE (dept_no = 622
OR job_code = "Eng")
AND salary <= 40000
ORDER BY last_name получить список служащих, занятых в отделе 622 или на должности “инженер”, зарплата которых не выше 40000.
FIRST_NAME LAST_NAME DEPT_NO JOB_CODE SALARY
============ ============= ======= ======== ===========
T.J. Green 621 Eng 36000.00
Mark Guckenheimer 622 Eng 32000.00
John Montgomery 672 Eng 35000.00
Bill Parker 623 Eng 35000.00
Willie Stansbury 120 Eng 39224.06