СУБД_вступ_маг.ppt
- Количество слайдов: 177
Темы вступительного экзамена в магистратуру по направлению «Организация и управление наукоемкими производствами» Раздел СУБД 1
Основные понятия 2
Понятие и содержание информационного обеспечения Информационные процессы создания, сбора, обработки, накопления, хранения, поиска, распространения и потребления информации. Информационное обеспечение - совокупность процессов сбора, обработки, хранения, анализа и выдачи информации, необходимой для обеспечения управленческой деятельности и технологических процессов. 3
Понятие информации Информация изложение. (лат. ) informatio — разъяснение, • сведения, передаваемые людьми устным, письменным или другим (знаками, техническими средствами) способом; Информация по Шеннону: • уменьшение степени неопределенности знания о каком-либо объекте, системе, процессе или явлении, или изменение неопределенности состояния самого объекта, системы, явления, процесса; Общенаучная трактовка понятия информация : • изменение объема и воспринимающей системы; структуры знания 4
Понятие информации Нормативно-правовая информация (закон РФ «Об трактовка понятия информации, информатизации и защите информации» от 20. 02. 95 № 24 -ФЗ) : «информация» — сведения о лицах, предметах, фактах, событиях и процессах независимо от способа их представления. Информация — изменение объема и структуры знания о некоторой предметной области (лица, предметы, факты, события, явления, процессы) воспринимающей системой (человек, организационная структура, автоматизированная информационная система) независимо от формы и способа представления знания. 5
Свойства информации • Объективность и субъективность; • Полнота информации характеризует качество информации и определяет достаточность данных для принятия решений или для создания новых данных на основе имеющихся; • Достоверность информации — свойство информации быть правильно воспринятой; • Адекватность информации — это уровень соответствия создаваемого с помощью полученной информации образа реальному объекту, процессу, явлению и т. п. • Доступность информации — мера возможности получить ту или иную информацию; • Актуальность информации — это степень 6 соответствия информации текущему моменту времени.
Формы представления информации Данные - информация, отражающая определенное состояние некоторой предметной области в конкретной форме представления и содержащая лишь наиболее существенные с точки зрения целей и задач сбора и обработки информации элементы образа отражаемого фрагмента действительности. Информация на стадии данных характеризуется определенной формой представления и дополнительной характеристикой, термином структура. выражаемой 7
Основные информационные процессы Данные - сведения: - полученные путем измерения, наблюдения, логических или арифметических операций; и - представленные в форме, пригодной для постоянного хранения, передачи и (автоматизированной) обработки. • сбор данных; • формализация данных; • фильтрация данных; • сортировка данных; • архивация данных; • защита данных; • транспортировка данных; • преобразование данных. 8
Классификация информации I. С точки зрения взаимодействия с окружающей средой: входящая и исходящая; II. В зависимости от сроков хранения: постоянная, условно-постоянная и переменная (регулярно обновляемую); III. По характеру внемашинная, обработки: IV. По уровням управления: водственная, заводская, …; машинная цеховая, и произ- V. По характеру деятельности: - бухгалтерская, учетно-отчетная, плановая, конструкторская, технологическая, диспетчерская, …и т. п. 9
Формы представления информации 1. Неструктурированная форма: • связный текст (т. е. документ на естественном языке — на литературном, официально-деловом и т. д. ); • графические данные в виде фотографий, картинок и прочих неструктурированных изображений. 2. Структурированная форма данных: • анкеты; • таблицы; • графические 10 данные в виде чертежей, схем,
Понятие системы Система - множество элементов А и связей R между ними: SR ai bj ОУ Rab УО Zu DT Система (S) представляет собой конечное множество функциональных элементов управляющего объекта А и объекта управления В, взаимосвязанных отношениями RAB и выделенное из среды SR в соответствии с определенной целью ZU в рамках определенного временного интервала Т. 11
Базы данных Банк данных (Бн. Д) — это система специально организованных данных, программных, языковых, организационных и технических средств, предназначенных для централизованного накопления и коллективного многоцелевого использования данных. База данных (БД) — именованная совокупность данных, отображающая состояние объектов и их отношений в рассматриваемой предметной области. База — совместно используемый набор логически связанных данных (и данных описание этих данных), предназначенный для удовлетворения информационных потребностей организации. 12
Базы данных Система управления базами данных (СУБД) — это совокупность языковых и программных средств, предназначенных для создания, ведения и совместного использования БД многими пользователями СУБД — это программное обеспечение, с помощью которого пользователи могут определять, создавать и поддерживать базу данных, а также осуществлять к ней контролируемый доступ. 13
Базы данных СУБД взаимодействует с прикладными программами пользователя и базой данных и реализует основные функции: • организация и поддержание логической структуры данных; • организация и поддержание физической структуры данных во внешней памяти; • организация доступа к данным и их обработки в оперативной и внешней памяти. 14
Модели баз данных 15
Система моделей представления информации Инфологические модели (1) Модели представления хорошо структурированной информации Модели представления плохо структурированной информации IDEF-модели Дескрипторные модели ER-модели Фреймы Диаграммы потоков данных Семантические сети, тезаурусы Даталогические модели(2) Модели представления фактографической информации Модели представления документальной информации Объектно-ориентированные Инвертируемая организация Теоретико-множественные Прямая организация Реляционные Схемноопределяемая структура Бинарных отношений Теоретико-графовые Иерархические Контекстноопределяемая структура Сетевые Физические модели(3) Модели, основанные на файловых структурах 16 Модели, имеющие на страничную организацию
Стадии и объекты процесса проектирования Объекты и связи предметной области Системный анализ Определение парадигмы информационной модели (структурированность и динамичность информ. ; способ представления и характер ее использования) Парадигма ИМ Инфологическое проектирование Прикладные задачи пользователей Выбор парадигмы модели данных (иерархическая, сетевая, реляционная, объектная и т. п. ). Выбор методики (средств) моделирования. Логика СУБД (модель данных) Языки описания данных и языки манипулирования данными конкретной СУБД Определение: - системы атрибутов; - типовых запросов; - типовых процедур обработки. Инфологическая модель Даталогическое проектирование Разработка: - концептуальной схемы БД; - внешних схем; - правил семантической целостности. Даталогическая модель Физическое проектирование Отображение даталогической модели в модель данных выбранной СУБД; проектирование структур данных и связей. Физическая модель БД 17
Даталогические модели представления информации 18
Хранимые в базе данные имеют определенную логическую структуру — описываются некоторой моделью представления данных (моделью данных), поддерживаемой СУБД • иерархическая, • сетевая, • реляционная, • постреляционная, • многомерная, • объектно-ориентированная 19
ИЕРАРХИЧЕСКАЯ МОДЕЛЬ Представление связей в иерархической модели 20
ИЕРАРХИЧЕСКАЯ МОДЕЛЬ Отдел Отд_№ Отд_размер Отд_зарплата Начальник Нач_№ Нач_имя Нач_телефон Сотрудник Сотр_№ Сотр_имя Сотр_зарплата Пример типа «дерево» 21
ИЕРАРХИЧЕСКАЯ МОДЕЛЬ Корневым называется тип, который имеет подчиненные типы и сам не является подтипом. Подчиненный тип (подтип) является потомком по отношению к типу, который выступает для него в роли предка (родителя). Потомки одного и того же типа являются близнецами по отношению друг к другу 22
ИЕРАРХИЧЕСКАЯ МОДЕЛЬ Отдел 10 17 280000 Начальник 103 Петров А. В. 4143 Сотрудник 201 202 216 Иванов И. И. Сидоров С. С. Лукин Л. Л. Данные в иерархической базе 12000 10000 18400 23
ИЕРАРХИЧЕСКАЯ МОДЕЛЬ Между предками и потомками автоматически поддерживается контроль целостности связей. Основное правило контроля целостности: потомок не может существовать без родителя, а у некоторых родителей может не быть потомков. Механизмы поддержания целостности связей между записями различных деревьев отсутствуют. 24
ИЕРАРХИЧЕСКАЯ МОДЕЛЬ достоинства иерархической модели данных • эффективное использование памяти ЭВМ; • относительно низкое время выполнения основных операций над данными; • удобна для работы с иерархически упорядоченной информацией; • автоматическое поддержание целостности связей между предками и потомками. недостатки иерархической модели данных • громоздкость для обработки информации достаточно сложными логическими связями; с • сложность понимания для обычного пользователя; • невозможность установления произвольных связей 25
СЕТЕВАЯ МОДЕЛЬ Сетевая модель данных позволяет отображать разнообразные взаимосвязи элементов данных в виде произвольного графа, обобщая тем самым иерархическую модель данных Представление связей в сетевой модели 26
СЕТЕВАЯ МОДЕЛЬ Работают в Отдел Сотрудники Начальник Состоит из Имеет Пример схемы сетевой БД 27
СЕТЕВАЯ МОДЕЛЬ достоинства сетевой модели данных • возможность эффективной реализации показателям затрат памяти и оперативности; по • в сравнении с иерархической моделью сетевая модель предоставляет большие возможности в смысле допустимости образования произвольных связей. недостатки сетевой модели данных • высокая сложность и жесткость схемы БД; • сложность для понимания и выполнения обработки информации в БД обычным пользователем; • ослаблен контроль целостности связей вследствие допустимости установления произвольных связей 28 между записями.
РЕЛЯЦИОННАЯ МОДЕЛЬ Сущность есть объект любой природы, данные о котором хранятся в базе данных. Данные о сущности хранятся в отношении. Атрибуты представляют собой свойства, характеризующие сущность. В структуре таблицы каждый атрибут именуется и ему соответствует заголовок некоторого столбца таблицы. Реляционная модель данных (РМД) некоторой предметной области представляет собой набор отношений, изменяющихся во времени. 29
РЕЛЯЦИОННАЯ МОДЕЛЬ Отношение представляет называемых кортежами. собой множество элементов, Пусть даны n множеств D 1, D 2, D 3, . . . , Dn, тогда отношение R есть множество упорядоченных кортежей
- , где dk Dk, dk — атрибут, Dk -домен отношения R. 30
РЕЛЯЦИОННАЯ МОДЕЛЬ Домен - множество всех возможных значений определенного атрибута отношения Схема отношения (заголовок отношения) - список имен атрибутов Первичный ключ (ключевой атрибут (ы)) – атрибут или совокупность атрибутов отношения, однозначно идентифицирующий(их) каждый из его кортежей. Ключ может быть простым - состоять из одного атрибута или составным (сложным), т. е. состоять из нескольких атрибутов. 31
РЕЛЯЦИОННАЯ МОДЕЛЬ Требования к отношениям реляционной модели 1. Bce строки таблицы должны быть уникальны, т. е. не может быть строк с одинаковыми первичными ключами. 2. Имена столбцов таблицы должны быть различны, а значения их простыми, т. е. недопустима гpyппа значений в одном столбце одной строки. З. Все строки одной таблицы должны иметь одну структуру, соответствующую именам и типам столбцов, 4. Порядок размещения строк в таблице может быть произвольным. 32
РЕЛЯЦИОННАЯ МОДЕЛЬ Элемент реляционной модели Форма представления Отношение Таблица Схема отношения Строка заголовков столбцов таблицы Кортеж (запись) Строка таблицы Сущность Описание свойств объекта Атрибут (свойство сущности) заголовок столбца таблицы Домен Множество атрибутов Значение атрибута Значение поля в записи Первичный ключ (идентифицирующий атрибут) Один или несколько атрибутов Тип данных Тип значений элементов таблицы допустимых значений 33
РЕЛЯЦИОННАЯ МОДЕЛЬ Схема отношения (строка заголовков) Атрибут (заголовок столбца) Отношение (таблица) ФИО Должность Дата рождения Иванов И. И. Кортеж (строка, запись) Отдел 002 Начальник 27. 09. 51 Петров П. П. 001 Заместитель 15. 04. 55 Сидоров И. С. 002 Инженер 13. 01. 70 Значение атрибута (значение поля в записи) 34
РЕЛЯЦИОННАЯ МОДЕЛЬ достоинства реляционной модели данных • простота реализации; • понятность обычному пользователю; • удобство физической реализации. недостатки реляционной модели данных • отсутствие стандартных средств идентификации отдельных записей; • относительно данных; низкая эффективность обработки • сложность описания иерархических и сетевых связей; • необходимость наличия дополнительных механизмов контроля целостности. 35
РЕЛЯЦИОННАЯ МОДЕЛЬ Примеры баз данных, использующих реляционную модель Самая распространенная на практике. Зарубежные Отечественные d. Base. III Plus и d. Base IY (фирма Ashon. Tate), DB 2 (IBM), R: BASE (Microrim), Fox. Pro ранних версий и Fox. Base (Fox Software), Paradox и d. BASE for Windows (Borland), Fox. Pro более поздних версий. Visual Fox. Pro и Access (Microsoft), Clarion (Clarion Software), Ingres (ASK Computer Systems) и Oracle (Oracle) ПАЛЬМА (ИК АН УССР), а также система Hy. Tech (МИФИ) 36
ПОСТРЕЛЯЦИОННАЯ МОДЕЛЬ Классическая реляционная модель предполагает неделимость данных, хранящихся в полях записей таблиц. Это означает, что информация в таблице представляется в первой нормальной форме. Постреляционная модель данных допускает многозначные поля — поля, значения которых состоят из подзначений. Набор значений многозначных полей считается самостоятельной таблицей, встроенной в основную таблицу. 37
ПОСТРЕЛЯЦИОННАЯ МОДЕЛЬ Накладные-товары Номер_накл Номер_покуп Номер_накл 0373 8723 8374 8232 7364 8723 0373 8374 7364 Структуры данных реляционной Накладные Товар Кол-во Сыр Рыба Лимонад Сок Печенье Йогурт Номер_накл Номер_покуп Товар Кол-во 0373 8723 Сыр 3 Рыба 2 Лимонад 1 Сок 6 Печенье 2 Йогурт 1 3 2 1 6 2 1 8374 7364 8232 8723 и постреляционной моделей 38
ПОСТРЕЛЯЦИОННАЯ МОДЕЛЬ Операторы SQL для реляционной и постреляционной моделей а) SELECT INVOICES. INVNO, CUSTNO, GOODS, QTY FROM INVOICES, INVOICE. ITEMS WHERE INVOICES. INVNO=INVOICE. ITEMS. INVNO; б) SELECT INVNO, CUSTNO, GOODS, QTY FROM INVOICES; 39
ПОСТРЕЛЯЦИОННАЯ МОДЕЛЬ • не накладывается требование постоянства на длину полей и количество полей в записях таблицы. • структура данных и таблиц имеют большую гибкость. • допускает хранение в таблицах ненормализованных данных, • проблема обеспечения целостности и непротиворечивости данных. 40
ПОСТРЕЛЯЦИОННАЯ МОДЕЛЬ достоинства постреляционной модели данных • возможность представления совокупности связанных реляционных таблиц одной постреляционной таблицей; • высокая наглядность представления информации; • высокая эффективности обработки информации. недостатки постреляционной модели данных • сложность решения проблемы обеспечения целостности и непротиворечивости хранимых данных. Примеры баз данных, использующих постреляционную модель Зарубежные uni. Vers, Bubba и Dasdb 41
МНОГОМЕРНАЯ МОДЕЛЬ Системы класса OLAP (On. Line Analytical Processing — оперативная аналитическая обработка), предназначены для оперативной обработки информации проведении анализа и принятии решений. Направления развития концепций ИС : • системы оперативной (транзакционной) обработки; • системы аналитической обработки (системы поддержки принятия решений). 42
МНОГОМЕРНАЯ МОДЕЛЬ Основные принципы многомерных СУБД Агрегируемостъ данных - рассмотрение различных уровнях ее обобщения. информации на Историчность данных предполагает обеспечение высокого уровня статичности (неизменности) собственно данных и их взаимосвязей, а также обязательность привязки данных ко времени. Прогнозируемостъ данных подразумевает задание функций прогнозирования и применение их к различным временным интервалам. Многомерность модели данных означает не многомерность визуализации цифровых данных, а многомерное логическое представление структуры информации при описании и в 43 операциях манипулирования данными.
МНОГОМЕРНАЯ МОДЕЛЬ Представление данных в реляционной Модель Месяц Объем «Жигули» июнь 12 «Жигули» июль 24 «Жигули» август 5 «Москвич» июнь 2 «Москвич» июль 18 «Волга» июль 19 и многомерной СУБД Модель Июнь Июль Август «Жигули» 12 24 5 «Москвич» 2 18 No «Волга» No 19 , No 44
МНОГОМЕРНАЯ МОДЕЛЬ Основные понятия многомерных СУБД Измерение (Dimension) — это множество однотипных данных, образующих одну из граней гиперкуба ( Дни, Месяцы, Кварталы и Годы, Города, Районы, Регионы и Страны. Ячейка (Cell) или показатель — это поле, значение которого однозначно определяется фиксированным набором измерений. 2004 2005 2006 Петров Смирнов Яковлев «Волга» 9 4 6 9 4 4 9 6 5 4 9 9 7 5 8 9 7 8 «Жигули» Измерения: Время (год) – 2004, 2005, 2006 Менеджер – Петров, Смирнов, Яковлев Модель – «Волга» , «Жигули» , «Москвич» Показатель: Объем продаж «Москвич» 45
МНОГОМЕРНАЯ МОДЕЛЬ Основные операции с данными «Срез» (Slice) представляет собой подмножество гиперкуба, полученное в результате фиксации одного или нескольких измерений Фиксированное значение 9 9 4 6 4 4 9 5 9 9 7 8 9 9 7 Срез 8 46
МНОГОМЕРНАЯ МОДЕЛЬ Основные операции с данными «Вращение» (Rotate) применяется при двумерном представлении данных. Суть ее заключается в изменении порядка измерений при визуальном представлении данных. Измерение 1 9 9 4 6 Измерение 2 4 4 9 5 9 9 7 8 9 Измерение 92 9 9 7 8 Измерение 9 9 1 Вращение 9 4 6 4 4 9 5 9 9 7 8 47 Измерение
МНОГОМЕРНАЯ МОДЕЛЬ Основные операции с данными «Агрегация» (Drill Up) и «детализация» (Drill Down) означают соответственно переход к более общему и к более детальному представлению информации пользователю из гиперкуба 9 9 4 4 6 6 4 4 9 9 5 5 9 9 7 7 8 8 9 9 7 Агрегация 7 8 8 9 9 4 4 6 6 4 4 9 9 5 5 9 9 4 4 9 9 7 7 8 8 4 9 4 9 9 7 9 9 Детализа 7 ция 7 8 8 9 9 4 4 4 9 4 9 9 7 48
МНОГОМЕРНАЯ МОДЕЛЬ достоинства многомерной модели данных • удобство и эффективность аналитической обработки больших объемов данных, связанных со временем; недостатки многомерной модели данных • громоздкость для простейших задач оперативной обработки информации. обычной Примеры баз данных, использующих многомерную модель Зарубежные Еssbase (Arbor Software), Media Multimatrix (Speedware), Oracle Express Server (Oracle) и Cache (Inter. Systems) 49
ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ МОДЕЛЬ При представлении данных имеется возможность идентифицировать отдельные записи базы. Между записями базы данных и функциями их обработки устанавливаются взаимосвязи с помощью механизмов, подобных соответствующим средствам в объектно-ориентированных языках программирования. Структура объектно-ориентированной БД графически представима в виде дерева, узлами которого являются объекты. Свойства объектов описываются некоторым стандартным типом (например, строковым — string) или типом, конструируемым пользователем (определяется как class). 50
ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ МОДЕЛЬ Пример логической структуры объектно-ориентированной БД БИБЛИОТЕКА тип Значение район АБОНЕНТ ВЫДАЧА КАТАЛОГ билет номер string class abs Кировский КАТАЛОГ isbn удк удк название автор КНИГА string string string class 321700628 6 S 1306 данных Базы данных Иванов И. И. abs abs string string string 00015 Васильев Мира, 3 2463548 ВЫДАЧА билет номер дата свойство АБОНЕНТ билет имя имя адрес телефон abs abs abs date 00015 02866 9. 01. 06 КНИГА номер abs 002794 номер стеллаж abs 002794 7 стеллаж abs 7 стеллаж издание abs string 7 3 издание string 3 51
ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ МОДЕЛЬ Объектно-ориентированные механизмы Инкапсуляция ограничивает область видимости пределами того объекта, в котором оно определено. имени свойства Наследование, распространяет область видимости свойства на всех потомков объекта. Полиморфизм - способность одного и того же программного кода работать с разнотипными данными - допустимость в объектах разных типов иметь методы (процедуры или функции) с одинаковыми именами. 52
ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ МОДЕЛЬ достоинства объектно-ориентированной модели данных • возможность отображения информации о сложных взаимосвязях объектов; • позволяет идентифицировать отдельную запись базы данных и определять функции их обработки. недостатки объектно-ориентированной модели данных • высокая понятийная сложность; • неудобство обработки данных; • низкая скорость выполнения запросов. Примеры баз данных, использующих объектноориентированную модель РОЕТ (РОЕТ Software), Jasmine (Computer Associate; Versant (Versant Technologies), O 2 (Ardent Software), ODBJupiter (научно-производственный центр «Интелтек 53 Плюс» ), а также Iris, Orion и Postgres
Элементы реляционной модели 54
РЕЛЯЦИОННАЯ МОДЕЛЬ Сущность есть объект любой природы, данные о котором хранятся в базе данных. Данные о сущности хранятся в отношении. Атрибуты представляют собой свойства, характеризующие сущность. В структуре таблицы каждый атрибут именуется и ему соответствует заголовок некоторого столбца таблицы. Реляционная модель данных (РМД) некоторой предметной области представляет собой набор отношений, изменяющихся во времени. 55
РЕЛЯЦИОННАЯ МОДЕЛЬ Отношение представляет называемых кортежами. собой множество элементов, Пусть даны n множеств D 1, D 2, D 3, . . . , Dn, тогда отношение R есть множество упорядоченных кортежей
- , где dk Dk, dk — атрибут, Dk -домен отношения R. 56
РЕЛЯЦИОННАЯ МОДЕЛЬ Домен - множество всех возможных значений определенного атрибута отношения Схема отношения (заголовок отношения) - список имен атрибутов Первичный ключ (ключевой атрибут (ы)) – атрибут или совокупность атрибутов отношения, однозначно идентифицирующий(их) каждый из его кортежей. Ключ может быть простым - состоять из одного атрибута или составным (сложным), т. е. состоять из нескольких атрибутов. 57
РЕЛЯЦИОННАЯ МОДЕЛЬ Когда отношение имеет несколько комбинации атрибутов, каждая из которых однозначно определяет все кортежи ношения. Все эти комбинации атрибутов являются возможными ключами отношения Если выбранный первичный ключ состоит из минимально необходимого набора атрибутов, говорят, что он является не избыточным 58
РЕЛЯЦИОННАЯ МОДЕЛЬ Назначение ключей 1) исключение дублирования значений в ключевых атрибутах; 2) идентификация кортежей; 3) упорядочение кортежей; 4) ускорение работы с кортежами отношения; 5) организация связывания таблиц. 59
РЕЛЯЦИОННАЯ МОДЕЛЬ Пусть в отношении R 1 имеется неключевой атрибут А 1, значения которого являются значениями ключевого атрибута K 2 другого отношения R 2. Тогда говорят, что атрибут А отношения R 1 есть внешний ключ. R 1 *K 1 А 1 В 1 С 1 ∞ R 2 1 *K 2 D 2 E 2 F 2 60
РЕЛЯЦИОННАЯ МОДЕЛЬ Требования к отношениям реляционной модели 1. Bce строки таблицы должны быть уникальны, т. е. не может быть строк с одинаковыми первичными ключами. 2. Имена столбцов таблицы должны быть различны, а значения их простыми, т. е. недопустима гpyппа значений в одном столбце одной строки. З. Все строки одной таблицы должны иметь одну структуру, соответствующую именам и типам столбцов, 4. Порядок размещения строк в таблице может быть произвольным. 61
РЕЛЯЦИОННАЯ МОДЕЛЬ Элемент реляционной модели Форма представления Отношение Таблица Схема отношения Строка заголовков столбцов таблицы Кортеж (запись) Строка таблицы Сущность Описание свойств объекта Атрибут (свойство сущности) заголовок столбца таблицы Домен Множество атрибутов Значение атрибута Значение поля в записи Первичный ключ (идентифицирующий атрибут) Один или несколько атрибутов Тип данных Тип значений элементов таблицы допустимых значений 62
РЕЛЯЦИОННАЯ МОДЕЛЬ Схема отношения (строка заголовков) Атрибут (заголовок столбца) Отношение (таблица) ФИО Должность Дата рождения Иванов И. И. Кортеж (строка, запись) Отдел 002 Начальник 27. 09. 51 Петров П. П. 001 Заместитель 15. 04. 55 Сидоров И. С. 002 Инженер 13. 01. 70 Значение атрибута (значение поля в записи) 63
РЕЛЯЦИОННАЯ МОДЕЛЬ Связывание таблиц • контроль целостности вводимых в базу данных в соответствии с установленными связями. Это повышает достоверность хранимой в БД информации; • облегчение доступа к данным; • снижение избыточности данных; • снижение противоречивости данных. 64
РЕЛЯЦИОННАЯ МОДЕЛЬ Виды связей • • один-к-одному (1: 1); один-ко-многим (1: М); многие-к-одному (М: 1); многие-ко-многим (М: М или M: N). Характеристика полей связи по видам Поля связи основной таблицы 1: 1 1: М являются ключом не являются ключом Поля связи дополнительной являются ключом таблицы М: 1 М: М не являются ключом 65
РЕЛЯЦИОННАЯ МОДЕЛЬ Связь типа один-к-одному Связь вида 1: 1 образуется в случае, когда все поля связи основной и дополнительной таблиц являются ключевыми. Поскольку значения в ключевых полях обеих таблиц не повторяются, обеспечивается взаимнооднозначное соответствие записей из этих таблиц. Связь1 -1 существует, если каждому кортежу сущности А поставлен в соответствие один и только один кортеж сущности В и каждому кортежу сущности В поставлен в соответствие один и только один кортеж сущности А. Сотрудник *Таб_№ ФИО Отдел. . . 1 1 Паспортные данные *Таб_№ №_паспорта Дата рождения. . . 66
РЕЛЯЦИОННАЯ МОДЕЛЬ Связи типа один-ко-многим и многие-к-одному Связь 1 -М существует, если каждой записи главной таблицы может соответствовать несколько записей в подчиненной таблице и каждая запись подчиненной таблицы участвует в связи только с одной записью главной таблицы. Для формализации связи 1 -М в подчиненную таблицу помещают внешний ключ к главной таблице и связывают. Связь М-1 существует, если каждой записи подчиненной таблицы может соответствовать несколько записей в главной таблице и каждая запись главной таблицы участвует в связи только с одной записью подчиненной таблицы. 67
РЕЛЯЦИОННАЯ МОДЕЛЬ Связь типа один-ко-многим Хозяин *№_пасп_хоз ФИО Дата_рождения Адрес Телефон. . . Собака 1 *№_пасп_соб ∞ Кличка Порода Дата рождения №_пасп_хоз. . . 68
РЕЛЯЦИОННАЯ МОДЕЛЬ Связь типа многие-ко-многим Преподаватели Студенты Код ФИО Должность Номер ФИО Группа 1 Петраков В. А. профессор 061 Шимбарева О. А. САУ 2 Свечкарев В. П. профессор 095 Сомов А. С. САУ 3 Корохова Е. В. доцент 099 Чужин В. Е. САУ М-М существует, если каждому экземпляру главной сущности соответствует несколько экземпляров подчиненной сущности и каждой записи подчиненной сущности соответствует несколько записей главной сущности. 69
РЕЛЯЦИОННАЯ МОДЕЛЬ Связь типа многие-ко-многим Для формализации связи М-М создается дополнительная (ассоциативная) таблица, в которую помещают внешние ключи к связываемым таблицам и связывают новую таблицу с исходными связью 1 -М. Преподаватель Студент *Код_преп 1 1 *№_студенч ФИО Группа. . . ФИО Должность. . . Преподаватель у студента ∞ *Код_преп_у_студ Код_преп №_студенч. . . ∞ 70
НОРМАЛИЗАЦИЯ 71
Функциональная и многозначная зависимости Процесс нормализации — это разбиение таблицы на две или более с целью ликвидации дублирования данных и потенциальной их противоречивости Цель нормализации сводится к получению такого проекта базы данных, в котором «каждый факт появляется лишь в одном месте» 72
Функциональная и многозначная зависимости Функциональная зависимость связь типа «многие к одному» между множествами атрибутов (столбцов) рассматриваемого отношения Атрибут В сущности Е функционально зависит от атрибута А сущности Е тогда и только тогда, когда каждое значение А в Е связано точно с одним значением В в Е, т. е. А однозначно определяет В. * * * 73 Полная функциональная зависимость Неполная функциональная зависимость
Функциональная и многозначная зависимости Многозначная зависимость. Один атрибут таблицы многозначно определяет другой атрибут той же таблицы, если для каждого значения первого атрибута существует четко определенное множество соответствующих значений второго атрибута. М М Полная функциональная зависимость. Атрибут В сущности Е функционально зависит от ряда атрибутов А сущности Е тогда и только тогда, когда В функционально зависит от А и не зависит ни от какого подряда А. 74
Нормальные формы • первая нормальная форма (1 NF); • вторая нормальная форма (2 NF); • третья нормальная форма (3 NF); • нормальная форма Бойса Кодда (усиленная 3 NF); • четвертая нормальная форма (4 NF); • пятая нормальная форма (5 NF). На практике обычно ограничиваются приведением данных к третьей нормальной форме (полная атрибутивная модель) 75
Нормальные формы Первая нормальная форма (1 NF) Сущность находится в первой нормальной форме тогда и только тогда, когда все атрибуты содержат атомарные значения. Среди атрибутов не должно встречаться повторяющихся групп, т. е. несколько значений для каждого экземпляра. Нарушают требования 1 НФ (имеют множественные значения) хранение в одном атрибуте разных по смыслу значений 76
Нормальные формы Первая нормальная форма (1 NF) Для приведения сущности к первой нормальной форме следует: • • • разделить сложные атрибуты на атомарные; создать новую сущность; перенести в нее все «повторяющиеся» атрибуты; выбрать возможный ключ для новой сущности; установить связь от прежней сущности к новой, первичный ключ прежней сущности станет внешним ключом (FK) для новой сущности. Сотрудник *Табельный номер Фамилия Имя Отчество Должность Хобби Оклад Телефон Дата зачисления или увольнения Фамилия Имя Отчество Должность Оклад Дата зачисления Дата увольнения Хобби 1 *ID хобби 1 ∞ Хобби Табельный номер (FK) Телефон *ID телефон ∞ 77 Номер телефона Табельный номер (FK)
Нормальные формы Вторая нормальная форма (2 NF) Сущность находится во второй нормальной форме, если она находится в первой нормальной форме, и каждый неключевой атрибут полностью зависит от первичного ключа (не должно быть зависимости от части ключа). Вторая нормальная форма имеет смысл только для сущностей, имеющих составной первичный ключ. Нарушают требования 2 НФ (зависят от части составного первичного ключа) 78
Нормальные формы Вторая нормальная форма (2 NF) Для приведения сущности ко второй нормальной форме следует: • • • выделить атрибуты, которые зависят только от части первичного ключа, создать новую сущность; поместить атрибуты, зависящие от части ключа, в их собственную (новую) сущность; установить связь от прежней сущности к новой. Проект *Наименование проекта * Табельный номер руководителя *Наименование проекта Фамилия Имя Отчество Должность Дата начала Дата завершения Сотрудник 1 * Табельный номер руководителя Дата начала Дата завершения ∞ Фамилия Имя Отчество Должность Наименование проекта (FK) 79
Нормальные формы Третья нормальная форма (3 NF) Сущность находится в третьей нормальной форме, если она находится во второй нормальной форме и никакой неключевой атрибут не зависит от другого неключевого атрибута (не должно быть взаимозависимости между неключевыми атрибутами) Сотрудник *Табельный номер Фамилия Имя Отчество Должность Оклад Дата зачисления Дата увольнения Нарушает требования 3 НФ (значения атрибута зависят от неключевого атрибута) 80
Нормальные формы Третья нормальная форма (3 NF) Для приведения сущности к третьей нормальной форме следует: • • • создать новую сущность и перенести в нее атрибуты с одной и той же зависимостью от неключевого атрибута; использовать атрибут(ы), определяющий эту зависимость, в качестве первичного ключа новой сущности; установить неидентифицирующую связь от новой сущности к старой Сотрудник 1 Должность *Табельный номер *ID должность Фамилия Имя Отчество Должность Оклад Дата зачисления Дата увольнения Фамилия Имя Отчество ID должность (FK) Оклад Дата зачисления Дата увольнения Должность ∞ 81
Нормальные формы Нормальная форма Бойса-Кодда (NFВК) Сотрудник *Табельный номер Фамилия Имя Отчество Должность Оклад Дата зачисления Дата увольнения Нарушает требования 3 НФ (значения атрибута зависят от неключевого атрибута) 82
Нормальные формы Нормальная форма Бойса-Кодда (NFВК) Сущность находится в нормальной форме Бойса-Кодда тогда и только тогда, когда любая функциональная зависимость между атрибутами сводится к полной функциональной зависимости от возможного первичного ключа. Нарушают требования 3 НФ (значения атрибута зависят от неключевого атрибута) Альтернативный (возможный) ключ 83
Нормальные формы Четвертая и пятая нормальные формы (4 NF и 5 NF) Полной декомпозицией сущности (таблицы) называют такую совокупность произвольного числа ее проекций, соединение которых полностью совпадает с содержимым исходной сущности (таблицы). Универсальное отношение Полная декомпозиция универсального отношения 84
Нормальные формы Четвертая и пятая нормальные формы (4 NF и 5 NF) Таблица находится в пятой нормальной форме тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в 5 НФ. Четвертая нормальная форма является частным случаем 5 НФ, когда полная декомпозиция должна быть соединением ровно двух проекций. На практике непросто подобрать реальную таблицу, которая находилась бы в 4 НФ, но не была бы в 5 НФ. 85
Нормальные формы Четвертая и пятая нормальные формы (4 NF и 5 NF) Для приведения сущности к 4 НФ следует: • создать новую сущность; • перенести атрибуты с многозначной зависимостью в разные сущности; • связь между новыми сущностями при этом не устанавливают. Нарушают требования 4 НФ (многозначная зависимость между атрибутами) На практике обычно ограничиваются приведением данных к третьей нормальной форме (полная атрибутивная модель) 86
Процедура нормализации Нормализация — это процесс последовательной замены таблицы ее полными декомпозициями до тех пор, пока все они не будут находиться в третьей нормальной форме или нормальной форме Бойса-Кодда Единственными функциональными зависимостями в любой таблице должны быть зависимости вида А >К, где К — первичный ключ, а А — некоторый атрибут. 87
Процедура нормализации 1 -ый случай: таблица Т 1 имеет составной первичный ключ вида (К 1, К 2) и включает также атрибут А, который функционально зависит от части этого ключа (например, от К 2), но не от полного ключа. Решение: • сформировать другую таблицу Т 2, содержащую атрибуты К 2 и А (первичный ключ — К 2); • удалить атрибут А из первоначальной таблицы Т 1 *К 2 a) А В С Т 1 *К 1 В С Т 2 1 *К 2 ∞ А K 1(FK) 88
Процедура нормализации 1 -ый случай: таблица Т 1 имеет составной первичный ключ вида (К 1, К 2) и включает также атрибут А, который функционально зависит от части этого ключа (например, от К 2), но не от полного ключа. Решение: • сформировать другую таблицу Т 2, содержащую атрибуты К 2 и А (первичный ключ — К 2); • удалить атрибут А из первоначальной таблицы Т 1 *К 2 б) Т 1 *К 2 А В С Т 2 1 *К 2 ∞ А K 1(FK) 89
Процедура нормализации 2 -ой случай: таблица Т 1 имеет первичный (возможный) ключ К, атрибут А 1, который не является возможным ключом, но функционально зависит от К, и другой неключевой атрибут А 2, который функционально зависит от А 1. Решение: • сформировать другую таблицу, содержащую атрибуты А 1 и А 2 с первичным ключом А 1; • атрибут А 2 удалить из первоначальной таблицы. 90
Основы языка структурированных запросов SQL 91
Типы данных SQL Тип данных «строка символов» Стандарт поддерживает только один тип представления текста — CHARACTER (CHAR). Этот тип данных представляет собой символьные строки фиксированной длины. Его синтаксис имеет вид: CHARACTER [(длина)] или CHAR [(длина)] Текстовые значения поля таблицы, определенного как тип CHAR, имеют фиксированную длину, которая определяется параметром длина. Этот параметр может принимать значения от 1 до 255, то есть строка может содержать до 255 символов. 92
Типы данных SQL Тип данных «строка символов» Некоторые реализации языка SQL поддерживают в качестве типа данных строки переменной длины. Этот тип может обозначаться ключевыми словами VARCHAR ( ), CHARACTER VARYING или CHAR VARYING ( ). Он описывает текстовую строку, которая может иметь произвольную длину до определенного конкретной реализацией SQL максимума. В отличие от типа CHAR в этом случае при вводе текстовой константы, фактическая длина которой меньше заданной, не производится ее дополнение пробелами до заданного максимального значения. 93
Типы данных SQL Тип данных «строка символов» Константы, имеющие тип CHARACTER и VARCHAR, в выражениях SQL заключаются в одиночные кавычки, например, ' текст'. Следующие предложения эквивалентны: VARCHAR [(длина)], CHAR VARYING [(длина)], CHARACTER VARYING [(длина)]. Если длина строки не указана явно, она полагается равной одному символу во всех случаях. По сравнению с типом CHAR тип данных VARCHAR позволяет более экономно использовать память, выделяемую для хранения текстовых значений, и оказывается более удобным при выполнении операций, связанных со сравнением текстовых констант. 94
Типы данных SQL Числовые типы данных • INTEGER — используется для представления целых чисел в диапазоне от — 231 до +231. • SMOLLINT — используется для представления целых чисел в меньшем, чем для INTEGER, диапазоне, а именно — от 215 до +215. • DECIMAL (точность[, масштаб]) — десятичное число с фиксированной точкой, точность определяет количество значащих цифр в числе. Масштаб указывает максимальное число цифр справа от точки. • NUMERIC (точность[, масштаб]) — десятичное число с фиксированной точкой, такое же, как и DECIMAL. • FLOAT [(точность)] — число с плавающей точкой и указанной минимальной точностью. • REAL — число такое же, как при типе FLOAT, за исключением определения точности по умолчанию (в зависимости от конкретной реализации SQL). • DOUBLE PRECISION — число аналогично REAL, но точность в два раза выше точности REAL. 95
Типы данных SQL Дата и время Тип данных, предназначенный для представления даты и времени, также является нестандартным, хотя и чрезвычайно полезным. Наличие типа данных для хранения даты и времени позволяет поддерживать специальную арифметику дат и времен. Добавление к переменной типа DATE целого числа означает увеличение даты на соответствующее число дней, а вычитание соответствует определению более ранней даты. Константы типа DATE записываются в зависимости от формата, принятого в операционной системе. Например, '03. 05. 1999', или '12/06/1989', или '03 nov 1999', или '03 арr 99'. 96
Типы данных SQL Неопределенные или пропущенные данные (NULL) Для обозначения отсутствующих, пропущенных или неизвестных значений атрибута в SQL используется ключевое слово NULL. • В агрегирующих функциях, позволяющих получать сводную информацию по множеству значений атрибута, например суммарное или среднее значение, для обеспечения точности и однозначности толкования результатов отсутствующие или NULL значения атрибутов игнорируются. • Условные операторы от булевой двузначной логики TRUE/FALSE расширяются до трехзначной логики TRUE/FALSE/UNKNOWN. • Все операторы, за исключением оператора конкатенации строк «||» , возвращают пустое значение (NULL), если значение любого из операндов отсутствует (имеет «значение NULL» ). • Для проверки на пустое значение следует использовать операторы IS NULL и IS NOT NULL (использование с этой целью оператора сравнения «=» является ошибкой). • Функции преобразования типов, имеющие NULL в качестве аргумента, 97 возвращают пустое значение (NULL).
ВЫБОРКА ДАННЫХ Оператор select (выбрать) языка SQL является самым важным и самым часто используемым оператором. Он предназначен для выборки информации из таблиц базы данных. Синтаксис оператора SELECT [DISTINCT] < список атрибутов > FROM < список таблиц > [WHERE < условие выборки >] [ORDER BY < список атрибутов >] [GROUP BY < список атрибутов >] [HAVING < условие >] [UNION < выражение с оператором SELECT >]; 98
ВЫБОРКА ДАННЫХ Синтаксис оператора SELECT STUDENT_ID SURNAME 1 Иванов Иван 3 Петров 6 STIPEND KURS CITY BIRTHDAY 150 1 Орел 3/12/1982 10 Петр 200 3 Курск 1/12/1980 10 Сидоров Вадим 150 4 Москва 7/06/1979 22 10 Кузнецов Борис 0 2 Зайцева Ольга 250 2 8/12/1981 SURNAME 1/05/1981 Иванов 10 12 Брянск NAME Липецк Иван 265 Павлов Андрей 0 3 Котов Павел 150 5 5/11/1979 Петров NULL Сидоров 10 32 Воронеж Петр Белгород Вадим 654 Лукин Артем 200 3 Петров Антон 200 4 1/12/1981 Кузнецов 5/08/1981 Зайцева 10 276 Воронеж Борис NULL Ольга 55 Белкин Вадим 250 5 Воронеж Андрей 7/01/1980 Павлов 10 . . . . Павел. . . Котов Артем Лукин Антон Петров Вадим Белкин SELECT NAME, SURNAME FROM STUDENT; . . . Любой SQL запрос должен заканчиваться символом «; » (точка с запятой) . . . UNIV_ID 10 14 22 . . . 99
ВЫБОРКА ДАННЫХ Если необходимо вывести значения всех столбцов таблицы, то можно вместо перечисления их имен использовать символ «*» (звездочка). SELECT * FROM STUDENT; 100
ВЫБОРКА ДАННЫХ Пример. Получить список названий городов, где проживают студенты, сведения о которых находятся в таблице STUDENT. SELECT CITY FROM STUDENT; CITY Орел Курск Москва Брянск Липецк Воронеж Белгород Воронеж NULL Воронеж. . . 101
ВЫБОРКА ДАННЫХ Для исключения из результата SELECT запроса повторяющихся записей используется ключевое слово DISTINCT (отличный). Если запрос SELECT извлекает множество полей, то DISTINCT исключает дубликаты строк, в которых значения всех выбранных полей идентичны. CITY SELECT DISTINCT CITY FROM STUDENT; Орел Курск Москва Брянск Липецк Воронеж Белгород NULL. . . 102
ВЫБОРКА ДАННЫХ Пример. Написать запрос, выполняющий выборку имен (NAME) всех студентов с фамилией (SURNAME) Петров, сведения о которых находятся в таблице STUDENT. SELECT SURNAME, NAME FROM STUDENT WHERE SURNAME = 'Петров'; SURNAME Петров Антон 103
ВЫБОРКА ДАННЫХ В задаваемых в предложении WHERE условиях могут использоваться операции сравнения, определяемые операторами = (равно), > (больше), < (меньше), >= (больше или равно), <= (мень ше или равно), <> (не равно), а также логические операторы AND, OR И NOT. Пример: запрос для получения имен и фамилий студентов, обучающихся на третьем курсе и получающих стипендию (размер стипендии больше нуля): SELECT NAME, SURNAME FROM STUDENT WHERE KURS = 3 AND STIPEND > 0; SURNAME Петров NAME Петр Лукин Артем 104
Упражнения 1. Напишите запрос для вывода идентификатора (номера) предмета обучения, его наименования, семестра, в котором он читается, и количества отводимых на этот предмет часов для всех строк таблицы SUBJECT. 2. Напишите запрос, позволяющий вывести все строки таблицы exam_marks, в которых предмет обучения имеет номер (subj_id), равный 12. 3. Напишите запрос, выбирающий все данные из таблицы STUDENT, расположив столбцы таблицы в следующем порядке: kurs, surname, 4. NAME, STIPEND. 5. Напишите запрос SELECT, который выводит наименование предмета обучения (subj_name) и количество часов (hour) для каждого предмета (subject) в 4 -м семестре (semester). 6. Напишите запрос, позволяющий получить из таблицы exam_marks значения столбца mark (экзаменационная оценка) для всех студентов, исключив из списка повторение одинаковых строк. 7. Напишите запрос, который выводит список фамилий студентов, обучающихся на третьем и последующих курсах. 8. Напишите запрос, выбирающий данные о фамилии, имени и номере курса для студентов, получающих стипендию больше 140. 9. Напишите запрос, выполняющий выборку из таблицы subject названий всех предметов обучения, на которые отводится более 30 часов. 10. Напишите запрос, который выполняет вывод списка университетов, рейтинг которых превышает 300 баллов. 11. Напишите запрос к таблице student для вывода списка фамилий (surname), имен (name) и номера курса (kurs) всех студентов со стипендией, большей или равной 100, и живущих в Воронеже. 12. Какие данные будут получены в результате выполнения запроса? SELECT * FROM STUDENT WHERE (STIPEND < 100 OR NOT (BIRTHDAY >= '10/03/1980' AND STUDENT_ID > 1003» ; 1. FROM STUDENT 13. Какие данные будут получены в результате выполнения запроса? 105 SELECT * WHERE NOT ((BIRTHDAY = '10/03/1980' OR STIPEND > 100) AND STUDENT_ID >= 1003);
Агрегирование и групповые функции Агрегирующие функции позволяют получать из таблицы сводную (агрегированную) информацию, выполняя операции над группой строк таблицы. Для задания в SELECT запросе агрегирующих операций используются следующие ключевые слова: • COUNT определяет количество строк или значений поля, выбранных посредством запроса и не являющихся NULL значениями; • SUM вычисляет арифметическую сумму всех выбранных значений данного поля; • AVG вычисляет среднее значение для всех выбранных значений данного поля; • МАХ вычисляет наибольшее из всех выбранных значений данного поля; • MIN вычисляет наименьшее из всех выбранных значений данного поля. 106
Агрегирование и групповые функции Функция AVG предназначена для подсчета среднего значения поля на множестве записей таблицы. Пример. для определения среднего значения поля MARK (оценки) по всем записям таблицы EXAM_MARKS можно использовать запрос с функцией AVG следующего вида: SELECT AVERAGE (MARK) FROM EXAM_MARKS; Для подсчета общего количества строк в таблице следует использовать функцию COUNT со звездочкой. SELECT COONT(*) FROM EXAM_MARKS; 107
Агрегирование и групповые функции Аргументы DISTINCT и ALL позволяют, соответственно, исключать и включать дубликаты обрабатываемых функцией COUNT значений, при этом необходимо учитывать, что при использовании опции ALL значения NULL все равно не войдут в число подсчитываемых значений. Пример. SELECT COUNT(DISTINCT SUBJ_ID; FROM SUBJECT; 108
Агрегирование и групповые функции Предложение GROUP BY (группировать по) позволяет группировать записи в подмножества, определяемые значениями какого либо поля, и применять агрегирующие функции уже не ко всем записям таблицы, а раздельно к каждой сформированной группе. Пример. Требуется найти максимальное значение оцен ки, полученной каждым студентом. SELECT STUDENT_ID, MAX (MARK) FROM EXAM_MARKS GROUP BY STUDENT_ID; 109
Агрегирование и групповые функции В конструкции GROUP BY для группирования может быть использовано более одного столбца. Пример. SELECT STUDENT_ID, SUBJ_ID, MAX (MARK) FROM EXAM_MARKS GROUP BY STUDENT_ID, SUBJ_ID; При необходимости часть сформированных с помощью GROUP BY групп может быть исключена с помощью предложения HAVING. Предложение HAVING определяет критерий, по которому группы следует включать в выходные данные, по аналогии с предложением WHERE, которое осуществляет это для отдельных строк. Пример. SELECT SUBJ_NAME, MAX (HOUR) FROM SUBJECT GROUP BY'SUBJ_NAME HAVING MAX (HOUR) >= 72; 110
Упражнения 1. Предположим, что стипендия всем студентам увеличена на 20%. Напишите запрос к таблице STUDENT, выполняющий вывод номера студента, фамилию студента и величину увеличенной стипендии. Выходные данные упорядочить: а) по значению последнего столбца (величине стипендии); б) в алфавитном порядке фамилий студентов. 2. Напишите запрос, который по таблице exam_marks позволяет найти а) максимальные и б) минимальные оценки каждого студента и который выводит их вместе с идентификатором студента. 3. Напишите запрос, выполняющий вывод списка предметов обучения в порядке а) убывания семестров и б) возрастания отводимых на предмет часов. Поле семестра в выходных данных должно быть первым, за ним должны следовать имя предмета обучения и идентификатор предмета. 4. Напишите запрос, который выполняет вывод суммы баллов всех студентов для каждой даты сдачи экзаменов и представляет результаты в порядке убывания этих сумм. 5. Напишите запрос, который выполняет вывод а) среднего, б) минимального, в) максимального баллов всех студентов для каждой да 111 ты сдачи экзаменов и который представляет результаты в порядке убывания этих значений.
Создание таблиц базы данных Создание объектов базы данных осуществляется с помощью операторов языка определения данных (DDL). Таблицы базы данных создаются с помощью команды CREATE TABLE. Синтаксис команды CREATE TABLE имеет следующий вид: CREATE TABLE <имя таблицы> (<имя столбца> <тип данных> [(<размер>)]); 112
Создание таблиц базы данных Создание таблицы STUDENT. CREATE TABLE STUDENT (STUDENT_ID INTEGER, SURNAME VARCHAR(60, ), NAME VARCHAR (60), STIPEND DOUBLE, KURS INTEGER, CITY VARCHAR (60), BIRTHDAY DATE, UNIV_ID INTEGER); 113
Использование индексации для быстрого доступа к данным Индекс содержит упорядоченный (в алфавитном или числовом порядке) список содержимого столбцов или группы столбцов в индексируемой таблице с идентификаторами этих строк (ROWID). Индексирование таблицы по тем или иным столбцам представляет собой способ логического упорядочения значений индексированных столбцов, позволяющего существенно повысить скорость доступа к конкретным строкам таблицы при выборках, использующих значения этих столбцов. Индексация позволяет находить содержащий индексированную строку блок данных, выполняя небольшое число обращений к внешнему устройству. 114
Использование индексации для быстрого доступа к данным Синтаксис команды создания индекса имеет следующий вид: CREATE INDEX <имя индекса> ON <имя таблицы> (<имя столбца> [, <имя столбца>1); Пример. Если таблица EXAM_MARKS часто используется для поиска оценки конкретного студента по значению поля STUDENT_ID, то следует создать индекс по этому полю. CREATE INDEX STUDENT_ID_1 ON EXAM_MARKS (STUDENT_ID); 115
Использование индексации для быстрого доступа к данным Для удаления индекса (при этом обязательно требуется знать его имя) используется команда DROP INDEX, имеющая следующий синтаксис: DROP INDEX <имя индекса>; Удаление индекса не изменяет содержимого поля или полей, индекс которых удаляется. 116
Изменение существующей таблицы Для модификации структуры и параметров существующей таблицы используется команда ALTER TABLE. Синтаксис команды ALTER TABLE для добавления столбцов в таблицу имеет вид ALTER TABLE <имя таблицы> ADD (<имя столбца> <тип данных> <размер>); Удаление индекса не изменяет содержимого поля или полей, индекс которых удаляется. 117
Изменение существующей таблицы Возможно изменение описания столбцов. Часто это связано с изменением размеров столбцов, добавлением или удалением ограничений, накладываемых на их значения. Синтаксис команды в этом случае имеет вид ALTER TABLE <имя таблицы > MODIFY <имя столбца> <тип данных> < размер/точность >; Удаление индекса не изменяет содержимого поля или полей, индекс которых удаляется. 118
Изменение существующей таблицы Модификация характеристик столбца может осуществляться с учетом следующих ограничений: • изменение типа данных возможно только в том случае, если столбец пуст; • для незаполненного столбца можно изменять размер/точность. Для заполненного столбца размер/точность можно увеличить, но нельзя понизить; • ограничение NOT NULL может быть установлено, если ни одно значение в столбце не содержит NULL. ОПЦИЮ NOT NULL всегда можно отменить; • разрешается изменять значения, установленные по умолчанию. 119
Удаление таблицы Чтобы удалить существующую таблицу, необходимо предварительно удалить все данные из этой таблицы, то есть сделать ее пустой. Таблица, имеющая строки, не может быть удалена. Синтаксис команды, осуществляющей удаление пустой таблицы, имеет следующий вид: DROP TABLE <имя таблицы>; 120
Упражнения 1. Напишите команду CREATE TABLE для создания таблицы LECTURER. 2. Напишите команду CREATE TABLE для создания таблицы SUBJECT. 3. Напишите команду CREATE TABLE для создания таблицы UNIVERSITY. 4. Напишите команду CREATE TABLE для создания таблицы EXAM_MARKS. 5. Напишите команду CREATE TABLE для создания таблицы SUBJ_LECT. 6. Напишите команду, которая позволит быстро выбрать данные о студентах по курсам, на которых они учатся. 7. Создайте индекс, который позволит для каждого студента быстро осуществить поиск оценок, сгруппированных по датам. 121
Ограничения на множество допустимых значений данных Виды ограничений: • статические, ограничивающие значения или диапазон значений, вставляемых в столбец (CHECK, NOT NULL). Они могут иметь связь со всеми значениями столбца, ограничивая новые строки значениями, которые не содержатся в столбцах или их наборах (уникальные значения, первичные ключи); • динамические, определяются связью со значениями, находящимися в другой таблице, допуская, например, вставку в столбец только тех значений, которые в данный момент содержатся также в другом столбце другой или этой же таблицы (внешний ключ). 122
Ограничения на множество допустимых значений данных Типы ограничений: • ограничения на столбцы (COLUMN CONSTRAINTS) применимы только к отдельным столбцам, добавляются в конце определения столбца после указания типа данных и перед окончанием описания столбца (запятой); • ограничения на таблицу (TABLE CONSTRAINTS) применимы к группам, состоящим из одного или более столбцов, размещаются в конце определения таблицы после определения последнего столбца. 123
Ограничения на множество допустимых значений данных Команда CREATE TABLE имеет расширенный включением ограничений: следующий синтаксис, CREATE TABLE <имя таблицы> (<имя столбца > <тип данных> <ограничения на столбец>, <имя столбца> <тип данных> <ограничения на столбец>, <ограничения на таблицу> (<имя столбца>[, <имя столбца>])); Поля, заданные в круглых скобках после описания ограничений таблицы, — это поля, на которые эти ограничения распространяются. Ограничения на столбцы применяются к тем столбцам, в которых они описаны. 124
Ограничение NOT NULL применимо только к столбцам таблицы. Для того, чтобы в определении таблицы STUDENT запретить использование NULL значений для столбцов STUDENT_ID, SURNAME и NAME, можно записать следующее: CREATE TABLE STUDENT (STUDENT_ID INTEGER NOT NULL, SURNAME CHAR (25) NOT NULL, NAME CHAR (10) NOT NULL, STIPEND INTEGER, KURS INTEGER, CITY CHAR (15), BIRTHDAY DATE, UNIV_ID INTEGER); 125
Уникальность как ограничение на столбец Иногда требуется, чтобы все значения, введенные в столбец, отличались друг от друга. Например, этого требуют первичные ключи. Если при создании таблицы для столбца указывается ограничение UNIQUE, то база данных отвергает любую попытку ввести в это поле какой либо строки значение, уже содержащееся в том же поле другой строки. Это ограничение применимо только к тем полям, которые были объявлены NOT NULL. 126
Уникальность как ограничение на столбец МОЖНО предложить следующее определение таблицы STUDENT, использующее ограничение UNIQUE: CREATE TABLE STUDENT (STUDENT_ID INTEGER SURNAME NOT NULL UNIQUE, CHAR (25) NOT NULL, CHAR (10) STIPEND NOT NULL, INTEGER, KURS INTEGER, CITY CHAR (15), BIRTHDAY DATE, UNIV_ID INTEGER); 127
Уникальность как ограничение таблицы Можно сделать уникальными группу полей, указав UNIQUE в качестве ограничений таблицы. При объединении полей в группу важен порядок, в котором они указываются. Ограничение на таблицу UNIQUE является полезным, если требуется поддерживать уникальность группы полей. 128
Уникальность как ограничение таблицы Например, если в нашей базе данных не допускается, чтобы студент сдавал в один день больше одного экзамена, то можно в таблице объявить уникальной комбинацию значений полей STUDENT ID и EXAM_DATE. Для этого следует создать таблицу EXAM_MARKS следующим способом: CREATE TABLE EXAM_MARKS (EXAM_ID INTEGER NOT NULL, STUDENT_ID INTEGER NOT NULL, SUBJ_ID INTEGER NOT NULL, MARK CHAR (1), EXAM_DATE NOT NULL, UNIQUE (STUDENT_ID, EXAM_DATE)); 129
Ограничение первичных ключей Первичные ключи таблицы — это специальные случаи комбинирования ограничений UNIQUE И NOT NULL. Первичные ключи имеют следующие особенности: • таблица может содержать только один первичный ключ; • внешние ключи по умолчанию ссылаются на первичный ключ таблицы; • первичный ключ является идентификатором строк таблицы (строки, однако, могут идентифицироваться и другими способами). 130
Ограничение первичных ключей Улучшенный вариант создания таблицы STUDENT С объявленным первичным ключом имеет следующий вид: CREATE TABLE STUDENT (STUDENT_ID INTEGER PRIMARY KEY, SURNAME CHAR (25) NAME CHAR (10) STIPEND INTEGER, CITY CHAR (15), BIRTHDAY DATE, UNIV_ID NOT NULL, INTEGER, KURS NOT NULL, INTEGER); 131
Составные первичные ключи Ограничение PRIMARY KEY может также быть применено для нескольких полей, составляющих уникальную комбинацию значений — составной первичный ключ. Рассмотрим таблицу EXAM_MARKS. Очевидно, что ни к полю идентификатора студента (STUDENT_ID), НИ К ПОЛЮ идентификатора предмета обучения (EXAM_ID) по отдельности нельзя предъявить требование уникальности. Однако для того, чтобы в таблице не могли появиться разные записи для одинаковых комбинаций значений полей STUDENT_ID и EXAM_ID (конкретный студент на конкретном экзамене не может получить более одной оценки), имеет смысл объявить уникальной комбинацию этих полей. 132
Составные первичные ключи Для этого мы можем применить ограничение таблицы PRIMARY KEY, объявив пару EXAM_ID и STUDENT_ID первичным ключом таблицы. CREATE TABLE NEW_EXAM_MARKS (STUDENT_ID INTEGER NOT NULL, SUBJ_ID INTEGER NOT NULL, MARK INTEGER, DATA DATE, CONSTRAINT EX_PR_KEY PRIMARY KEY (EXAM_ID, STUDENT_ID)); CONSTRAINT EX_PR_KEY – это имя ограничения 133
Проверка значений полей Ограничение CHECK позволяет определять условие, которому должно удовлетворять вводимое в поле таблицы значение, прежде чем оно будет принято. Любая попытка обновить или заменить значение поля такими, для которых предикат, задаваемый ограничением CHECK, имеет значение ложь, будет отвергаться. 134
Проверка значений полей Рассмотрим таблицу STUDENT. Значение столбца STIPEND в этой таблице выражается десятичным числом. Наложим на значения этого столбца ограничение — величина размера стипендии должна быть меньше 200. Соответствующий запрос имеет следующий вид: CREATE TABLE STUDENT (STUDENT_ID INTEGER PRIMARY KEY, SURNAME CHAR (25) NOT NULL, NAME CHAR (10) NOT NULL, STIPEND INTEGER CHECK (STIPEND < 200), KURS INTEGER, CITY CHAR (15), BIRTHDAY DATE, UNIV_ID INTEGER); 135
Проверка значений полей Ограничение CHECK можно использовать в качестве табличного ограничения, то есть при необходимости включить более одного поля в ограничивающее условие. Предположим, что ограничение на размер стипендии (меньше 200) должно распространяться только на студентов, живущих в Воронеже: CREATE TABLE (STUDENT_ID STUDENT INTEGER PRIMARY KEY, SURNAME CHAR (25) NOT NULL, NAME CHAR (10) NOT NULL, STIPEND INTEGER KURS INTEGER, CITY CHAR (15), BIRTHDAY DATE, UNIV_ID INTEGER UNIQUE, CHECK (STIPEND < 200 AND CITY= ‘Воронеж’)); 136
Проверка значений полей Или: CREATE TABLE (STUDENT_ID STUDENT INTEGER SURNAME CHAR (25) NAME CHAR (10) STIPEND INTEGER KURS INTEGER, CITY CHAR (15), BIRTHDAY DATE, UNIV_ID INTEGER CONSTRAINT STUD_CHECK ‘Воронеж’)); PRIMARY KEY, NOT NULL, UNIQUE, (STIPEND < 200 AND CITY= 137
Установка значений по умолчанию В SQL имеется возможность при вставке в таблицу строки, не указывая значений некоторого поля, определять значение этого поля по умолчанию. Наиболее часто используемым значением по умолчанию является NULL. ЭТО значение принимается по умолчанию для любого столбца, для которого не было установлено ограничение NOT NULL. Значение поля по умолчанию указывается в команде CREATE TABLE тем же способом, что и ограничение столбца, с помощью ключевого слова DEFAULT <значение по умолчанию> 138
Установка значений по умолчанию Предположим, что основная масса студентов, информация о которых находится в таблице STUDENT, проживает в Воронеже. Чтобы при задании атрибутов не вводить для большинства студентов название города 'Воронеж', можно установить его как значение поля CITY ПО умолчанию, определив таблицу STUDENT следующим образом: CREATE TABLE STUDENT (STUDENT_ID INTEGER PRIMARY KEY, SURNAME CHAR (25) NOT NOLL, NAME CHAR (10) NOT NULL, STIPEND INTEGER CHECK (STIPEND < 200), KURS INTEGER, CITY CHAR (15) BIRTHDAY DATE, UNIV_ID INTEGER); DEFAULT 'Воронеж', 139
Упражнения 1. Создайте таблицу EXAM_MARKS так, чтобы не допускался ввод в таблицу двух записей об оценках одного студента по конкретным экзамену и предмету обучения и чтобы не допускалось проведение двух экзаменов по любым предметам в один день. 2. Создайте таблицу предметов обучения SUBJECT так, чтобы количество отводимых на предмет часов по умолчанию было равно 36, не допускались записи с отсутствующим количеством часов, поле SUBJ_ID являлось первичным ключом таблицы и значения семестров (поле SEMESTER) лежали в диапазоне от 1 до 12. 3. Создайте таблицу EXAM_MARKS таким образом, чтобы значения поля EXAM_ID были больше значений поля SUBJ_ID, а значения поля SUBJ_ID были больше значений поля STUDENT_ID; пусть также будут запрещены значения NULL в любом из этих трех полей. 140
Поддержка целостности данных Ограничения, накладываемые указанным типом связи, называются ограничениями ссылочной целостности. Они составляют важную часть описания характеристик предметной области, обеспечения корректности данных, хранящихся в таблицах. Команды описания таблиц DML имеют средства, позволяющие описывать ограничения ссылочной целостности и обеспечивать поддержание такой целостности при манипуляциях значениями полей базы данных. Когда каждое значение, присутствующее в одном поле таблицы, представлено в другом поле другой или этой же таблицы, говорят, что первое поле ссылается на второе. Это указывает на прямую связь между значениями двух полей. Поле, которое ссылается на другое поле, называется внешним ключом, а поле, на которое ссылается другое поле, называется родительским ключом. 141
Ограничение FOREIGN KEY (внешнего ключа) Для решения вопросов поддержания ссылочной целостности в SQL используется ограничение FOREIGN KEY. Назначение FOREIGN KEY — это ограничение допустимых значений поля множеством значений родительского ключа, ссылка на который указывается при описании данного ограничения FOREIGN KEY. Ограничение FOREIGN KEY используется в командах CREATE TABLE и ALTER TABLE при создании или модификации таблицы, содержащей поле, которое требуется объявить внешним ключом. В команде указывается имя родительского ключа, на который имеется ссылка в ограничении FOREIGN KEY. 142
Внешний ключ как ограничение таблицы Синтаксис ограничения FOREIGN KEY имеет следующий вид: FOREIGN KEY <список столбцов> REFERENCES <родительская таблица > [<родительский ключ>]; Создадим таблицу STUDENT с полем UNIV_ID, определенным в качестве внешнего ключа, ссылающегося на таблицу UNIVERSITY: CREATE TABLE STUDENT (STUDENT_ID INTEGER PRIMARY KEY, SURNAME CHAR (25), NAME CHAR (10), STIPEND INTEGER, KURS INTEGER, CITY CHAR (15), BIRTHDAY DATE, UNIV_ID INTEGER REFERENCES, CONSTRAINT UNIV_FOR_KEY FOREIGN KEY (UNIV_ID) REFERENCES UNIVERSITY (UNIV_ID)); 143
Внешний ключ как ограничение таблицы При применении команды ALTER TABLE К какой либо таблице для задания ограничения FOREIGN KEY значения внешнего ключа этой таблицы и родительского ключа соответствующей таблицы должны находиться в состоянии ссылочной целостности. В противном случае команда будет отклонена. ALTER TABLE <имя таблицы> ADD CONSTRAINT <имя ограничения> FOREIGN KEY (<список столбцов внешнего ключа > ) REFERENCES <имя родительской таблицы > [(<список столбцов родительского ключа >)]; 144
Внешний ключ как ограничение таблицы Пример. ALTER TABLE STUDENT ADD CONSTRAINT STUD_UNIV_FOR_KEY FOREIGN KEY (UNIV_ID) REFERENCES UNIVERSITY (UNIV_ID); Эта команда добавляет ограничение внешнего ключа для таблицы STUDENT. 145
Внешний ключ как ограничение столбца Ограничение внешнего ключа может указываться не для всей таблицы, как это было показано выше, а непосредственно ссылкой на соответствующий столбец таблицы. При таком варианте, называемом ссылочным ограничением столбца, ключевое слово FOREIGN KEY фактически не применяется. Просто используется ключевое слово REFERENCES И далее указывается имя родительского ключа. CREATE TABLE STUDENT (STUDENT_ID INTEGER SURNAME STIPEND KURS CITY BIRTHDAY UNIV_ID PRIMARY KEY, CHAR (25), CHAR (10), INTEGER, CHAR (15), DATE, INTEGER REFERENCES UNIVERSITY (UNIV_ID)); 146
Упражнения 1. Создайте таблицу с именем SUBJECT_1 с теми же полями, что в таблице subject (предмет обучения). Поле SUBJ_ID является первичным ключом. 2. Создайте таблицу с именем SUBJ_LECT_1 (учебные дисциплины преподавателей) с полями LECTURER_ID (идентификатор преподавателя) и SUBJ_ID (идентификатор преподаваемой дисциплины). Первичным ключом (составным) таблицы является пара атрибутов LECTURER_ID и SUBJ_ID, кроме того, поле LECTURER_ID является внешним ключом, ссылающимся на таблицу LECTURER_1, анало гичную аблице LECTURER (преподаватель), а т поле SUBJ_ID явля ется внешним ключом, ссылающимся на таблицу SUBJECT_1, ана логичную таблице SUBJECT. 3. Создайте таблицу с именем SUBJ_LECT_1 как в предыдущем задании, но добавьте для всех ее внешних ключей режим обеспечения ссылочной целостности, запрещающий обновление и удаление соответствующих родительских ключей. 4. Создайте таблицу с именем lecturer_1 с теми же полями, что в таблице LECTURER. Первичным ключом таблицы является атрибут LECTURER_ID, кроме того, поле UNIV_ID является внешним ключом, ссылающимся на таблицу UNIVERSITY_ID (аналог UNIVERSITY). Для этого поля установите каскадные режимы обеспечения целостности для команд UPDATE и DELETE. 5. Создайте таблицу с именем UNIVERSITY_1 с теми же полями, что в таблице UNIVERSITY (университеты). Поле UNIV_ID является первичным ключом. 147
Упражнения 6. Создайте таблицу с именем EXAM_MARKS_1. Она должна содержать такие же поля, что и таблица EXAM_MARKS (экзаменационные оценки). Комбинация полей EXAM_ID, STUDENT_ID и SUBJ_ID является первичным ключом. Кроме того, поля STUDENT_ID и SUBJ_ID являются внешним ключами, ссылающимися соответственно на таблицы STUDENT_1 и SUBJECT_1. Для этих полей установите режим кас кадного обеспечения ссылочной целостности при операции обнов ления соответствующих первичных ключей и режим блокировки при попытке удаления родительского ключа при наличии ссылки на него. 7. Создайте таблицу с именем STUDENT_1. Она должна содержать такие же поля, что и таблица student, и новое поле SENIOR_STUDENT (староста), значением которого должен быть идентификатор студента, являющегося старостой группы, в которой учится данный студент. Укажите необходимые для этого ограничения ссылочной целостности. 8. Создайте таблицу STUDENT_2, аналогичную таблице STUDENT, в которой поле UNIV_ID (идентификатор университета) является внешним ключом, ссылающимся на таблицу UNIVERSITY_1, и таким образом, чтобы при удалении из таблицы UNIVERSITY_1 строки с информацией о каком либо университете в соответствующих записях таблицы STUDENT_2 поле UNIV_ID очищалось (замещалось на NULL). 148
Упражнения 6. С помощью команды CREATE TABLE создайте запросы для формирования таблиц учебной базы данных, с указанием первичных ключей, но без указания ограничений внешних ключей. Затем с помощью команды ALTER TABLE укажите для сформированных таблиц все ограничения, в том числе и ограничения ссылочной целостности. 149
Представления (VIEW) Таблицы представления не содержат никаких собственных данных. Представление — это именованная таблица, содержимое которой является результатом запроса, заданного при описании представления. Причем данный запрос выполняется всякий раз, когда таблица представление становится объектом команды SQL. Вывод запроса при этом в каждый момент становится содержанием представления. Представления позволяют: • ограничивать число столбцов, из которых пользователь выбирает или в которые вводит данные; • ограничивать число строк, из которых пользователь выбирает или в которые вводит данные; • выводить дополнительные столбцы, других столбцов базовой таблицы; преобразованные из • выводить группы строк таблицы. 150
Представления (VIEW) Удаление представлений Синтаксис удаления представления из базы данных подобен синтаксису удаления базовых таблиц: DROP VIEW <имя представления>; 151
Упражнения 1. Создайте представление для получения сведений обо всех студентах, имеющих только отличные оценки. 2. Создайте представление для получения сведений о количестве студентов в каждом городе. 3. Создайте представление для получения сведений по каждому студенту: его идентификатор, фамилию, имя, средний и общий баллы. 4. Создайте представление для получения сведений о количестве экзаменов, которые сдавал каждый студент. 152
ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ БАЗ ДАННЫХ 153
Определение прав доступа пользователей к данным Каждый, кто имеет доступ к базе данных, называется пользователем. SQL обычно применяется в многопользовательских средах, которые требуют разграничения прав пользователей с точки зрения доступа к данным и прав на выполнение с ними тех или иных манипуляций. Для этих целей в SQL реализованы средства, позволяющие устанавливать и контролировать привилегии пользователей базы данных. Каждый пользователь в среде SQL имеет специальное имя (идентификатор), с помощью которого осуществляется идентификация пользователя с целью установки и определения его прав с точки зрения доступа к данным. Каждая посланная к СУБД команда SQL запроса ассоциируется СУБД с идентификатором доступа к данным конкретного пользователя. 154
Определение прав доступа пользователей к данным Пользователь определяется с помощью следующей команды: CREATE USER <имя_пользователя> IDENTIFIED BY <пароль> После выполнения этой команды пользователь становится известен базе данных, но не может выполнять никаких операций. Удаление пользователя производится командой DROP USER <имя_пользователя> Назначаемые пользователю привилегии — это разрешение на выполнение указанным пользователем данной команды над определенным объектом базы данных. Привилегии даются и отменяются двумя командами SQL, соответственно GRANT — установка привилегий, REVOKE — отмена привилегий. 155
Виды привилегий Пользователю могут быть назначены следующие стандартные привилегии: • SELECT — пользователь может выполнять запросы к таблице; • INSERT — пользователь может выполнять в таблице команду INSERT; • UPDATE — пользователь может выполнять в таблице команду UPDATE. Эта привилегия может быть ограничена определенными столбцами таблицы; • DELETE — пользователь может выполнять в таблице команду DELETE; • REFERENCES — пользователь может определить внешний ключ, который использует один или более столбцов этой таблицы в качестве родительского ключа. Возможно ограничение этой привилегии для определенных столбцов. 156
Виды привилегий Кроме того, могут быть нестандартные привилегии объекта, такие как: • INDEX — пользователь имеет право создавать индекс в таблице; • SYNONYM — пользователь имеет право создавать синоним для объекта; • ALTER — пользователь имеет право выполнять команду ALTER TABLE в таблице; • EXECUTE — позволяет выполнять процедуру. 157
Назначение привилегий Назначение пользователям этих привилегий осуществляется с помощью команды GRANT. Пользователь, являющийся владельцем таблицы STUDENT, может передать другому пользователю (пусть это будет пользователь с именем IVANOV) привилегию SELECT С ПОМОЩЬЮ следующей команды: GRANT SELECT ON STUDENT TO IVANOV; Команда GRANT INSERT ON EXAM_MARKS TO IVANOV; предоставляет пользователю IVANOV право вводить в таблицу EXAM_MARKS новые строки. 158
Назначение привилегий В команде GRANT допустимо указывать через запятые список предоставляемых привилегий и список пользователей, которым они предоставляются. Например: GRANT SELECT, INSERT ON SUBJECT TO IVANOV, PETROV; 159
Отмена привилегий Отмена привилегии осуществляется с помощью команды REVOKE, которая имеет синтаксис, аналогичный команде GRANT. Например, команда REVOKE INSERT ON STUDENT FROM PETROV; отменяет привилегию INSERT в таблице STUDENT ДЛЯ пользователя PETROV. Возможно использование в команде REVOKE списков привилегий и пользователей. Например: REVOKE SIDOROV; INSERT, DELETE ON STUDENT FROM PETROV, Привилегии отменяются тем пользователем, который их предоставил, при этом отмена автоматически распространяется на всех 160 пользователей, получивших от него эту привилегию.
Модели распределенной обработки 161
Классфикация режимов работы с БД В общем случае режимы работы с классифицировать по следующим признакам: 1. однопользовательский; многопользовательский; 2. Правило обслуживания запросов: • • последовательное; 3. Схема размещения данных: • • централизованная; распределенная БД. можно Многозадачность: • • БД параллельное; 162
Классфикация режимов работы с БД 1. Системы распределенной обработки данных отражают структуру и свойства многопользовательских операционных систем с базой данных, размещенной на большом центральном компьютере (мэйнфрейме). Клиентские места терминалы или мини ЭВМ, обеспечивающие ввод вывод данных и не имеющие собственных вычислительных ресурсов для функционально ориентированной обработки получаемых данных. 2. Системы распределенных баз данных обеспечивают обработку распределенных запросов, когда при обработке одного запроса используются ресурсы базы, размещенные на различных ЭВМ сети. Состоит из узлов, каждый из которых является СУБД, а узлы взаимодействуют между собой так, что база данных любого узла будет доступна 163 пользователю, как если бы она была локальной.
Определения Модели клиент-сервер это технология взаимодействия в информационной сети. Сервер обладает правом управления тем или иным ресурсом, а клиент – пользования им. Каждый конкретный сервер определяется видом того ресурса, которым он владеет. 164
Определения Функции стандартного интерактивного приложения : • Функции ввода и отображения данных. • Прикладные функции, характерные для данной предметной области. • Функции хранения и управления информационновычислительными ресурсами (базами данных, файловыми системами и т. д. ). • Служебные функции, осуществляющие связь между функциями первых трех групп. 165
Определения Логические компоненты приложения: • компонент представления (presentation), реализующий функции первой группы; • прикладной компонент (business application), поддерживающий функции второй группы; • компонент доступа к информационным ресурсам (resource manager), поддерживающий функции третьей группы, а также вводятся и уточняются соглашения о способах их взаимодействия (протокол взаимодействия). 166
Модели распределенной обработки • модель файлового сервера (File Server - FS); • модель доступа к удаленным данным (Remote Data Access - RDA); • модель сервера баз данных (Data Base Server - DBS); • модель сервера приложений (Application Server - AS). 167
Модели распределенной обработки Модель файлового сервера (FS) - является базовой для локальных сетей ПК Клиент Компонент представления Запросы Сервер Прикладной компонент Файлы Компонент доступа к ресурсам (файловая система ОС) Достоинства: • простота реализации • возможность обслуживания запросов нескольких клиентов Недостатки: • высокая загрузка сети и машин клиентов, • небольшое количество операций манипуляции с данными (файлами), • отсутствие адекватных средств безопасности доступа к (защита только на уровне файловой системы) данным 168
Модели распределенной обработки Модель доступа к удаленным данным (RDA) Клиент Компонент представления SQL Прикладной компонент Данные Сервер Компонент доступа к ресурсам (SQL – сервер, машина данных ) Достоинства: • унификация интерфейса клиент сервер в виде языка SQL • широкий выбор средств разработки приложений Недостатки: • существенная загрузка сети при взаимодействии клиента и сервера посредством SQL запросов; • невозможность администрирования приложений в RDA, т. к. в одной программе совмещаются различные по своей природе функции (представления и 169 прикладные).
Модели распределенной обработки Модель сервера баз данных (DBS) Клиент Компонент представления Вызов Результат Сервер Прикладной компонент SQL Компонент доступа к данным Достоинства: • возможность централизованного администрирования прикладных функций; • снижение трафика; • возможность разделения процедуры между несколькими приложениями; • экономия ресурсов компьютера. Недостатки: • ограниченность средств написания хранимых процедур 170
Модели распределенной обработки Модель сервера приложений (AS) Клиент Компонент представления API Результат Сервер приложений Прикладной компонент SQL Данные Сервер Компонент доступа к данным Достоинства: • возможность централизованного администрирования прикладных функций; • снижение трафика; • высокая производительность системы. Недостатки: • сложность реализации 171
Архитектура сервера баз данных Методы повышения эффективности и оперативности обслуживания большого числа клиентских запросов: • снижение суммарного расхода памяти и вычислительных ресурсов за счет буферизации (кэширования) и совместного использования (разделяемые ресурсы) наиболее часто запрашиваемых данных и процедур; • распараллеливание процесса обработки запроса — использованием разных процессоров для параллельной обработки изолированных подзапросов и/или для одновременного обращения к частям базы данных, размещенным на отдельных физических носителях. 172
1. Архитектура сервера «один к одному» Запрос 1 Серверный процесс 1 Процессор Запрос N БД Серверный процесс 1 173
2. Многопотоковая односерверная архитектура Серверный процесс Запрос 1 Поток 1 Процессор Запрос N БД Поток 2 174
3. Мультисерверная архитектура Запрос 2 Диспетчер Запрос 1 Серверный процесс Процессор БД Процессор Запрос N 175
4. Серверные архитектуры с параллельной обработкой запроса Подхоы к повышению оперативности за счет распараллеливания процесса обработки отдельного запроса: 1. Модель горизонтального параллелизма размещение хранимых данных БД на нескольких физических носителях (сегментирование базы). Для обработки запроса в этом случае запускаются несколько серверных процессов (использующих обычно отдельные процессоры), каждый из которых независимо от других выполняет одинаковую последовательность действий, определяемую существом запроса, но с данными, принадлежащими разным сегментам базы. Полученные таким образом результаты объединяются и передаются клиенту. 2. Модель вертикального параллелизма запрос обрабатывается по конвейерной технологии. Для этого запрос разбивается на взаимосвязанные по результатам подзапросы, каждый из которых может быть обслужен отдельным серверным процессом независимо от обработки других подзапросов. Получаемые результаты объединяются согласно схеме декомпозиции 176 запроса и передаются клиенту.
4. Серверные архитектуры с параллельной обработкой запроса Подзапрос 1 Запрос 1 Серверный процесс Процессор Сегмент БД Подзапрос 2 Подзапрос N 177


