[МУЗЫКА] [МУЗЫКА] Здравствуйте! В прошлый раз мы рассмотрели с вами, как данные представляются с помощью отношений и изучили операции реляционной алгебры, которые позволяют этими отношениями манипулировать. Сейчас мы рассмотрим, какие есть объекты в современных СУБД, в которых мы можем представить наши данные, и изучим операции языка SQL, который позволят нам эти объекты создавать. В конце нашего модуля мы представим вам демонстрационную базу, которую вы сможете воссоздать на своем компьютере. Скрипт для создания этой базы будет храниться в заданиях. И вы сможете проверить все команды, о которых мы сегодня будем говорить. Для того чтобы начать создавать объекты базы данных, мы в начале должны зарезервировать некое пространство, в котором будут эти объекты храниться. Это пространство создается командой CREATE DATABASE, которую мы должны, конечно, поименовать. Или в некоторых СУБД это может быть исполнено при помощи команды CREATE SCHEMA, и также мы должны дать имя нашей базе данных. Какими могут быть объекты базы данных? Основные объекты — это таблицы, индексы, правила целостности, представление, процедуры, функции и триггеры. Поговорим об этих объектах подробнее. Начнем с таблиц. Как сказал код, все данные, которые может видеть пользователь, должны быть представлены в таблицах. Это основная единица хранения в базе данных. Какие есть принципы для организации таблиц? Во-первых, каждое значение любого атрибута атомарно. Это соответствует первой нормальной форме для организации таблиц. Значение данных каждого столбца должно быть определенного типа, и каждое поле должно быть поименовано: имя столбца должно быть уникально в рамках одной таблицы, иначе мы не сможем отличать эти столбца. Последовательность записи в таблице и последовательность полей несущественны. Правило целостности — что это такое? Мы хотим предотвратить появление некорректных данных в нашей базе данных. Конечно, мы можем делать это при помощи функции, которая будет реализовывать логику предметной области, но мы хотим иметь возможность записать как можно больше правил, которые мы знаем о наших данных, непосредственно в саму базу данных. Для этого и существуют правила целостности, которые могут помочь нам организовать связь между сущностями и задать ограничения, которые могут принимать значения конкретных атрибутов. Какие ограничения мы можем задавать на значение атрибута? Например, что какие-то поля должны иметь уникальные значения, в номерах паспорта не может быть букв, в фамилии не бывает цифр и так далее. Следующая структура, которую мы рассмотрим — это индексы. Что такое индекс? Это упорядоченная структура, связанная с таблицей. Она не содержит никакой новой информации, а лишь помогает организовать быстрый поиск в данных внутри таблицы. Какие цели преследует создание индексов? Это ускорение доступа к записям, это ускорение операций соединения таблиц, которые мы будем производить, и автоматическое упорядочение записей при выборке таблицы. Следующий объект — представление. Его можно назвать именованным правилом выборки данных. Они предназначены для извлечения данных из одной или нескольких таблиц, для которых они создаются. Зачем нам понадобится представление? Во-первых, они позволяют нам обеспечить логическую независимость данных, для того чтобы у нас при изменении структуры или названия таблиц не изменялось представление конкретных пользователей. Это дает также возможность различным пользователям по-разному видеть одни и те же данные. Представление можно назвать дополнительным механизмом для управления санкционированным доступом, потому что часть данных может быть не видна определенным пользователям. И также представления помогут нам для повторного использования единожды написанных и исполненных запросов. Для реализации функций предметной области часто нужно сделать с данными одни и те же операции. И СУБД предоставляет возможность заключить это в блок операторов, написанных на процедурном расширении язык SQL. Конечно, это пишется в контексте конкретной СУБД, потому что процедурные расширения могут несколько различаться. Такие блоки операторов называются процедурами, или функциями. В общем случае процедуры не выдают какого-то результата, а функции имеет определенный фиксированный результат. Эти программные блоки хранятся непосредственно вместе с базой данных в специальных, приспособленных для этого таблицах. Они могут быть вызваны из внутри базы данных, а также из каких-то функций предметной области или с клиентского приложения. Последний объект, который мы рассмотрим сейчас, называется триггером. Триггер — это процедура, которая отличается от обычной процедуры тем, что она вызывается автоматически в ответ на наступление некоторого события. Давайте представим, что в нашей базе данных записывается измерение пульса какого-нибудь пациента. И если пульс стал равен 0, то нужно прекратить его мерять, а например, вызвать врача. Триггеры срабатывают автоматически в ответ на наступление определенного событие. Конечно, при создании триггера мы прописываем, на какие события они будут вызываться. Эти события делятся на системные и объектные. Триггеры нам нужны для гарантированного выполнения определенных действий при возникновении определенных событий. Триггеры носят глобальный характер и не зависят от причин и способов появления событий, на которые они срабатывают. Теперь поговорим про язык, на который мы будем описывать объекты в нашей базе данных. Язык SQL поддерживается практически любой реляционной СУБД. Это широко распространенный и стандартизованный язык, первые разработки, которого появились в конце 70-х годов. В 1983 году был создан первый стандарт этого языка. И в дальнейшем стандарты выходили в 86-м, 89-м и 92-м, 99-м году. Все операторы языка SQL можно разделить на три большие группы. Первая группа — это DDL (Data Definition Language), это те операторы, которые позволяют нам создавать объекты базы данных. Следующая группа операторов — DML (Data Manipulation Languge). Он включает в себя операторы, которые позволяют нам манипулировать данными, производить с ними определенные действия. И последняя группа, очень малочисленная, включает в себя операторы, которые позволяют контролировать данные — это Data Control Language («язык управления данными»). Какие операторы мы будем с вами изучать? Операторы, которые позволяют нам определять данные — это оператор CREATE, после него указывается тип объекта, который будет создаваться. Оператор ALTER, который позволяет нам изменить уже созданный объект. И оператор DROP, который позволяет нам удалить объект, если он стал нам не нужен. Конечно, кроме названия объекта, мы можем указывать некие опции, которые существенным образом определяются контекстом выбранной СУБД. Язык манипулирования данными. Он включается в себя операторы выборки, операторы, которые позволяют вставлять данные в наши таблицы, оператор UPDATE для изменения данных в таблице, оператор DELETE и TRUCATE, которые позволяют удалить данные, и операторы COMMIT и ROLLBACK, который связаны с выполнением транзакций и позволяют либо зафиксировать транзакцию, либо вернуть базу данных в исходное состояние. Язык управления данными состоит из операторов, которые управляют правами пользователя в базе данных, например разрешить пользователю прочитать данные из таблицы или изменять их. Эти операторы GRAND и REVOKE.