Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
CREATE INDEX имя_индекса
ON иия_таблицы (имя_поля_1, имя_поля_2. ...)
БИЛЕТ 4
1. . Постреляционная и объектно-ориентированная модели;
2. Язык SQL Работа с представлениями
1. Постреляционная и объектно-ориентированная модели.
Постреляционная модель данных представляет собой расширенную реляционную модель, снимающую ограничение неделимости данных, хранящихся в записях таблиц. Постреляционная модель данных допускает многозначные поля — поля, значения которых состоят из подзначений. Набор значений многозначных полей считается самостоятельной таблицей, встроенной в основную таблицу.
По сравнению с реляционной моделью в постреляционной модели данные хранятся более эффективно, а при обработке не требуется выполнять операцию соединения данных из двух таблиц.
Помимо обеспечения вложенности полей постреляционная модель поддерживает ассоциированные многозначные поля (множественные группы). Совокупность ассоциированных полей называется ассоциацией. При этом в строке первое значение одного столбца ассоциации соответствует первым значениям всех других столбцов ассоциации.
На длину полей и количество полей в записях таблицы не накладывается требование постоянства. Это означает, что структура данных и таблиц имеют большую гибкость.
Поскольку постреляционная модель допускает хранение в таблицах ненормализованных данных, возникает проблема обеспечения целостности и непротиворечивости данных. Эта проблема решается включением в СУБД механизмов, подобных хранимым процедурам в клиент-серверных системах.
Для описания функций контроля значений в полях имеется возможность создавать процедуры (коды конверсии и коды корреляции), автоматически вызываемые до или после обращения к данным. Коды корреляции выполняются сразу после чтения данных, перед их обработкой. Коды конверсии, наоборот, выполняются после обработки данных.
Достоинством постреляционной модели является возможность представления совокупности связанных реляционных таблиц одной постреляционной таблицей. Это обеспечивает высокую наглядность представления информации и повышение эффективности ее обработки.
Недостатком постреляционной модели является сложность решения проблемы обеспечения целостности и непротиворечивости хранимых данных.
Объектно-ориентированная модель
В объектно-ориентированной модели при представлении данных имеется возможность идентифицировать отдельные записи базы. Между записями базы данных и функциями их обработки устанавливаются взаимосвязи с помощью механизмов, подобных соответствующим средствам в объектно-ориентированных языках программирования.
Структура объектно-ориентированной БД графически представима в виде дерева, узлами которого являются объекты. Свойства объектов описываются некоторым стандартным типом (например, строковым — string) или типом, конструируемым пользователем (определяется как class).
Значением свойства типа string является строка символов. Значение свойства типа class есть объект, являющийся экземпляром соответствующего класса. Каждый объект-экземпляр класса считается потомком объекта, в котором он определен как свойство. Объект-экземпляр класса принадлежит своему классу и имеет одного родителя. Родовые отношения в БД образуют связную иерархию объектов.
Логическая структура объектно-ориентированной БД внешне похожа на структуру иерархической БД. Основное отличие между ними состоит в методах манипулирования данными.
Для выполнения действий над данными в рассматриваемой модели БД применяются логические операции, усиленные объектно-ориентированными механизмами инкапсуляции, наследования и полиморфизма. Ограниченно могут применяться операции, подобные командам SQL (например, для создания БД).
Создание и модификация БД сопровождается автоматическим формированием и последующей корректировкой индексов (индексных таблиц), содержащих информацию для быстрого поиска данных.
Рассмотрим кратко понятия инкапсуляции, наследования и полиморфизма применительно к объектно-ориентированной модели БД.
Инкапсуляция ограничивает область видимости имени свойства пределами того объекта, в котором оно определено.
Наследование, наоборот, распространяет область видимости свойства на всех потомков объекта.
Полиморфизм в объектно-ориентированных языках программирования означает способность одного и того же программного кода работать с разнотипными данными. Другими словами, он означает допустимость в объектах разных типов иметь методы (процедуры или функции) с одинаковыми именами, Во время выполнения объектной программы одни и те же методы оперируют с разными объектами в зависимости от типа аргумента.
Поиск в объектно-ориентированной БД состоит в выяснении сходства между объектом, задаваемым пользователем, и объектами, хранящимися в БД. Определяемый пользователем объект, называемый объектом-целью (свойство объекта имеет тип goal), в общем случае может представлять собой подмножество всей хранимой в БД иерархии объектов. Объект-цель, а также результат выполнения запроса могут храниться в самой базе.
Основным достоинством объектно-ориентированной модели данных в сравнении с реляционной является возможность отображения информации о сложныхсвязях объектов. Объектно-ориентированная модель данных позволяет идентифицировать отдельную запись базы данных и определять функции их обработки.
Недостатками объектно-ориентированной модели являются высокая понятийная сложность, неудобство обработки данных и низкая скорость выполнения запросов.
2. Работа с представлениями.
Представление (View) является объектом базы данных, работа с которым ничем не отличается от работы с обычной таблицей. Отличие представлений от таблиц заключается в следующем. Обычные таблицы баз данных содержат данные. Представления же данных не содержат, а их содержимое выбирается из других таблиц (или других представлений). Таблицы (или представления), на основе которых формируются представления, принято называть базовыми таблицами (или базовыми представлениями).
Фактически представление является запросом, который выполняется всякий раз, когда происходит обращение к представлению. Результат выполнения этого запроса в каждый момент времени является содержанием представления. При изменении данных в базовых таблицах представления изменяется и содержание представления. Изменение данных в представлении также приводит к изменению данных в таблицах, на основе которых это представление создано. Использование представлений незначительно отличается от использования таблиц. Выборка данных из представления выполняется точно так же, как и из обычной таблицы. Допускаются также операции манипулирования данными представления, хотя здесь имеются некоторые ограничения.
Представления в отличие от таблиц не занимают дискового пространства (или, точнее, дисковое пространство, занимаемое представлениями, очень мало — только то, что требуется для хранения запроса).
Области применения представлений
Представления в основном применяются в двух случаях:
□ с целью защиты данных;
□ для формирования итоговых данных.
В первом случае представления применяются для того, чтобы предоставить пользователю информацию не из всей таблицы, а лишь из некоторых ее полей.
Представления также используются для формирования итоговых результатов при формировании отчетов. В том случае, когда требуется часто распечатывать отчет, формируемый на основе таблиц с часто изменяемой информацией, удобно использовать представления. Так как представление может быть создано на основе запроса, содержащего предложения группировки, то можно создать представление, получающее информацию из ряда базовых таблиц и группирующих ее необходимым образом, а при выводе отчета обращаться к этому представлению как к обычной таблице. В этом случае не нужно будет каждый раз при выводе отчета формировать сложный SQL-запрос. Кроме того, в этом случае часть логики окажется вынесенной на сторону сервера базы данных, так как формирование отчета не будет зависеть от клиентского приложения.
Создание представлений
Для создания представлений используется оператор CREATE VIEW. Представление может быть создано на основе одной или нескольких таблиц и/или других представлений. Наиболее типичный синтаксис оператора создания представлений имеет следующий вид:
CREATE VIEW имя_представления AS {оператор выборки данных}
Оператор выборки может быть любой сложности, он может содержать любые условия отбора и предложения группировки.
После создание представления с ним можно работать как с обычной таблицей, имеющей имя, заданное в качестве имени представления. Некоторым исключением являются представления, содержащие предложения группировки. Для таких представлений нет никаких ограничений по выборке данных, но применение к ним операторов манипулирования данными (подмножества команд DDL) недопустимо.
Удаление представлений
Удаление представлений выполняется с помощью оператора DROP VIEW, при вызове которого могут указываться параметры RESTRICT или CASCADE. Данные параметры определяют действия при удалении представления, на которое ссылаются другие представления и/или ограничения. При использовании варианта RESTRICT в этом случае будет выдано сообщение об ошибке, и удаление не будет выполнено. Если же используется режим CASCADE, то выполнение оператора DROP VIEW приведет к удалению всех базовых представлений и ограничений.
Типовой синтаксис оператора DROP VIEW имеет следующий вид:
DROP VIEW имя_предстаеления [RESTRICT | CASCADE].
БИЛЕТ 5
1. Реляционная модель данных, основные понятия, определения.
2. Язык SQL Хранимые процедуры
1. Реляционная модель данных, основные понятия, определения.
Реляционная модель
Реляционная модель данных основывается на понятии отношение (relation).
Отношение представляет собой множество элементов, называемых кортежами. Подробно теоретическая основа реляционной модели данных рассматривается в следующем разделе. Наглядной формой представления отношения является привычная для человеческого восприятия двумерная таблица.
Таблица имеет строки (записи) и столбцы (колонки). Каждая строка таблицы имеет одинаковую структуру и состоит из полей. Строкам таблицы соответствуют кортежи, а столбцам — атрибуты отношения.
С помощью одной таблицы удобно описывать простейший вид связей между данными, а именно: деление одного объекта (явления, сущности, системы и проч.), информация о котором хранится в таблице, на множество подобъектов, каждому из которых соответствует строка или запись таблицы. При этом каждый из подобъектов имеет одинаковую структуру или свойства, описываемые соответствующими значениями полей записей. Например, таблица может содержать сведения о группе обучаемых, о каждом из которых известны следующие характеристики: фамилия, имя и отчество, пол, возраст и образование.
Поскольку в рамках одной таблицы не удается описать более сложные логические структуры данных из предметной области, применяют связывание таблиц.
Физическое размещение данных в реляционных базах на внешних носителях легко осуществляется с помощью обычных файлов.
Достоинство реляционной модели данных заключается в простоте, понятности и удобстве физической реализации на ЭВМ. Именно простота и понятность для пользователя явились основной причиной их широкого использования. Проблемы же эффективности обработки данных этого типа оказались технически вполне разрешимыми.
Основными недостатками реляционной модели являются следующие: отсутствие стандартных средств идентификации отдельных записей и сложность описания иерархических и сетевых связей.
2. Хранимые процедуры.
Хранимые процедуры
Хранимые процедуры (Stored Procedure) представляют собой группы связанных операторов SQL. Использование хранимых процедур обеспечивает дополнительную гибкость при работе с базой данных, так как выполнить хранимую процедуру обычно гораздо проще, чем последовательность отдельных операторов SQL.
Хранимые процедуры хранятся в базе данных в откомпилированном виде, что обеспечивает более высокую скорость их выполнения.
Хранимые процедуры могут получать входные параметры, возвращать значения приложению и могут быть вызваны явно из приложения или подстановкой вместо имени таблицы в инструкции SELECT.
Основные преимущества, которые дает использование хранимых процедур, заключаются в следующем:
□ хранимые процедуры позволяют вынести часть логики на сервер базы данных. Это ослабляет зависимость базы данных информационной системы от клиентской части;
□ хранимые процедуры обеспечивают модульность проекта: они могут быть общими для клиентских приложений, которые обращаются к одной и той же базе данных, что позволяет избегать повторяющегося кода и уменьшает размер приложений;
□ хранимые процедуры упрощают сопровождение приложений: при обновлении процедур изменения автоматически отражаются во всех приложениях, которые их используют, без необходимости повторной компиляции и сборки;
□ хранимые процедуры повышают эффективность работы информационной системы: они выполняются сервером, а не клиентом, что снижает сетевой трафик;
□ скорость выполнения хранимых процедур выше, чем для последовательности отдельных операторов SQL. Это связано с тем, что хранимые процедуры хранятся на сервере в откомпилированном виде.
Различают два вида хранимых процедур:
□ процедуры выбора, которые приложения могут использовать вместо таблиц или представлений в операторе выборки данных. Процедура выбора должна возвращать одно или несколько значений, иначе результатом выполнения процедуры будет ошибка;
□ выполняемые процедуры, которые вызываются явно с использованием специального оператора. Выполняемая процедура может не возвращать результата вызываемой программе.
БИЛЕТ 6
1. Индексирование; связывание таблиц;
2. Язык SQL Триггеры
1. Индексирование. Связывание таблиц.
Индексирование
Как отмечалось выше, определение ключа для таблицы означает автоматическую сортировку записей, контроль отсутствия повторений значений в ключевых полях записей и повышение скорости выполнения операций поиска в таблице. Для реализации этих функций в СУБД применяют индексирование.
Термин «индекс» тесно связан с понятием «ключ», хотя между ними есть и некоторое отличие.
Под индексом понимают средство ускорения операции поиска записей в таблице, а следовательно, и других операций, использующих поиск: извлечение, модификация, сортировка и т. д. Таблицу, для которой используется индекс, называют индексированной.
Индекс выполняет роль оглавления таблицы, просмотр которого предшествует обращению к записям таблицы. В некоторых системах, например Paradox, индексы хранятся в индексных файлах, хранимых отдельно от табличных файлов.
Варианты решения проблемы организации физического доступа к информации зависят в основном от следующих факторов:
· вида содержимого в поле ключа записей индексного файла;
· типа используемых ссылок (указателей) на запись основной таблицы;
· метода поиска нужных записей.
В поле ключа индексного файла можно хранить значения ключевых полей индексируемой таблицы либо свертку ключа (так называемый хеш-код). Преимущество хранения хеш-кода вместо значения состоит в том, что длина свертки независимо от длины исходного значения ключевого поля всегда имеет некоторую постоянную и достаточно малую величину (например, 4 байта), что существенно снижает время поисковых операций. Недостатком хеширования является необходимость выполнения операции свертки (требует определенного времени), а также борьба с возникновением коллизий (свертка различных значений может дать одинаковый хеш-код).
Для организации ссылки на запись таблицы могут использоваться три типа адресов:
абсолютный (действительный), относительный и символический (идентификатор).
На практике чаще всего используются два метода поиска: последовательный и бинарный (основан на делении интервала поиска пополам).
Проиллюстрируем организацию индексирования таблиц двумя схемами: одноуровневой и двухуровневой. При этом примем ряд предположений, обычно выполняемых в современных вычислительных системах Пусть ОС поддерживает прямую организацию данных на магнитных дисках, основные таблицы и индексные файлы хранятся в отдельных файлах. Информация файлов хранится в виде совокупности блоков фиксированного размера, например, целого числа кластеров.
При одноуровневой схеме в индексном файле хранятся короткие записи, имеющие два поля: поле содержимого старшего ключа (хеш-кода ключа) адресуемого блока и поле адреса начала этого блока. В каждом блоке записи располагаются в порядке возрастания значения ключа или свертки. Старшим ключом каждого блока является ключ его последней записи.
Если в индексном файле хранятся хеш-коды ключевых полей индексированной таблицы, то алгоритм поиска нужной записи (с указанным ключом) в таблице включает в себя следующие три этапа.
1. Образование свертки значения ключевого поля искомой записи.
2. Поиск в индексном файле записи о блоке, значение первого поля которого больше полученной свертки (это гарантирует нахождение искомой свертки в этом блоке).
3. Последовательный просмотр записей блока до совпадения сверток искомой записи и записи блока файла. В случае коллизий сверток ищется запись, значение ключа которой совпадает со значением ключа искомой записи.
Основным недостатком одноуровневой схемы является то, что ключи (свертки) записей хранятся вместе с записями. Это приводит к увеличению времени поиска записей из-за большой длины просмотра (значения данных в записях приходится пропускать).
Двухуровневая схема в ряде случаев оказывается более рациональной, в ней ключи (свертки) записей отделены от содержимого записей. В этой схеме индекс основной таблицы распределен по совокупности файлов: одному файлу главного индекса и множеству файлов с блоками ключей.
На практике для создания индекса для некоторой таблицы БД пользователь указывает поле таблицы, которое требует индексации. Ключевые поля таблицы во многих СУБД как правило индексируются автоматически. Индексные файлы, создаваемые по ключевым полям таблицы, часто называются файлами первичных индексов.
Индексы, создаваемые пользователем для не ключевых полей, иногда называют вторичными (пользовательскими) индексами. Введение таких индексов не изменяет физического расположения записей таблицы, но влияет на последовательность просмотра записей. Индексные файлы, создаваемые для поддержания вторичных индексов таблицы, обычно называются файлами вторичных индексов.
Связь вторичного индекса с элементами данных базы может быть установлена различными способами. Один из них — использование вторичного индекса как входа для получения первичного ключа, по которому затем с использованием первичного индекса производится поиск необходимых записей.
Некоторыми СУБД, например Access, деление индексов на первичные и вторичные не производится. В этом случае используются автоматически создаваемые индексы и индексы, определяемые пользователем по любому из не ключевых полей.
Главная причина повышения скорости выполнения различных операций в индексированных таблицах состоит в том, что основная часть работы производится с небольшими индексными файлами, а не с самими таблицами. Наибольший эффект повышения производительности работы с индексированными таблицами достигается для значительных по объему таблиц. Индексирование требует небольшого дополнительного места на диске и незначительных затрат процессора на изменение индексов в процессе работы. Индексы в общем случае могут изменяться перед выполнением запросов к БД, после выполнения запросов к БД, по специальным командам пользователя или программным вызовам приложений.
Связывание таблиц
При проектировании реальных БД информацию обычно размещают в нескольких таблицах. Таблицы при этом связаны семантикой информации. В реляционных СУБД для указания связей таблиц производят операцию их связывания.
Укажем выигрыш, обеспечиваемый в результате связывания таблиц. Многие СУБД при связывании таблиц автоматически выполняют контроль целостности вводимых в базу данных в соответствии с установленными связями. В конечном итоге это повышает достоверность хранимой в БД информации.
Кроме того, установление связи между таблицами облегчает доступ к данным. Связывание таблиц при выполнении таких операций как поиск, просмотр, редактирование, выборка и подготовка отчетов обычно обеспечивает возможность обращения к, произвольным полям связанных записей. Это уменьшает количество явных обращений к таблицам данных и число манипуляций в каждой из них.
Основные виды связи таблиц
Между таблицами могут устанавливаться бинарные (между двумя таблицами), тернарные (между тремя таблицами) и, в общем случае, n-арные связи. Рассмотрим наиболее часто встречающиеся бинарные связи.
При связывании двух таблиц выделяют основную и дополнительную (подчиненную) таблицы. Логическое связывание таблиц производится с помощью ключа связи.
Ключ связи, по аналогии с обычным ключом таблицы, состоит из одного или нескольких полей, которые в данном случае называют полями связи (ПС).
Суть связывания состоит в установлении соответствия полей связи основной и дополнительной таблиц. Поля связи основной таблицы могут быть обычными и ключевыми. В качестве полей связи подчиненной таблицы чаще всего используют ключевые поля.
В зависимости от того, как определены поля связи основной и дополнительной таблиц (как соотносятся ключевые поля с полями связи), между двумя таблицами в общем случае могут устанавливаться следующие четыре основные вида связи (табл. 3.2):
· один — один (1:1);
· один — много (1:М);
· много — один (М:1);
· много — много (М:М или M:N).
Связь вида 1:1
Связь вида 1:1 образуется в случае, когда все поля связи основной и дополнительной таблиц являются ключевыми. Поскольку значения в ключевых полях обеих таблиц не повторяются, обеспечивается взаимнооднозначное соответствие записей из этих таблиц. Сами таблицы, по сути, здесь становятся равноправными.
Связь вида 1:М
Связь 1:М имеет место в случае, когда одной записи основной таблицы соответствует несколько записей вспомогательной таблицы.
Связь вида М:1
Связь М:1 имеет место в случае, когда одной или нескольким записям основной таблицы ставится в соответствие одна запись дополнительной таблицы.
Связь вида М:М
Самый общий вид связи М:М возникает в случаях, когда нескольким записям основной таблицы соответствует несколько записей дополнительной таблицы.
2. Триггеры
Триггеры
Триггеры представляют собой разновидность хранимых процедур. Однако в отличие от хранимых процедур выполнение триггера происходит не в результате явного вызова некоторого оператора SQL, а при выполнении одного из операторов манипулирования данными, вносящими изменения в базу данных. При этом триггеры могут исполняться как до, так и после выполнения оператора манипулирования данными.
Триггеры используются для обеспечения ссылочной целостности данных в базе. Они предоставляют следующие возможности:
□ возможность контроля вводимых данных, чтобы гарантировать, что пользователь ввел в поля таблицы только допустимые значения;
□ упрощение сопровождения приложений, так как изменение в триггере автоматически отражается во всех приложениях, которые используют таблицы со связанными с ними триггерами;
□ автоматическое документирование изменений таблицы. Приложение может управлять журналом изменений с помощью триггеров, которые выполняются всякий раз, когда происходит изменение таблицы.
Создание триггера
Для создания триггера используется оператор CREATE TRIGGER. Синтаксис этого оператора существенно зависит от используемой реализации SQL, поэтому мы не будем рассматривать его подробно и поговорим лишь об общих особенностях создания триггеров.
Так же как и хранимые процедуры, триггеры состоят из заголовка и тела. Заголовок триггера содержит:
□ имя триггера, уникальное внутри базы данных;
□ имя таблицы, с которой связан триггер;
□ инструкции, которые определяют, когда триггер будет выполняться (при выполнении какого оператора манипулирования данными и в какой момент времени — до или после выполнения оператора).
Тело триггера содержит:
□ список локальных переменных и их типов данных (если они используются в коде триггера);
□ блок инструкций на языке процедур и триггеров, заключенный между ключевыми словами BEGIN и END. Блок может содержать в себе другой блок, реализуя несколько уровней вложенности.
Таким образом, отличие триггера от хранимой процедуры заключается только в
заголовке.
Триггер связан с таблицей. Владелец таблицы и любой пользователь, наделенный
привилегиями на таблицу, автоматически имеют права выполнять связанные с ней
триггеры.
Удаление триггера
Для удаления триггера используется оператор DROP TRIGGER. Синтаксис этого оператора является достаточно общим для различных реализаций SQL и имеет следующий вид:
DROP TRIGGER имя_триггера.
БИЛЕТ 7
1. Теоретические языки запросов
2. Язык SQL. Манипулирование данными. Язык манипулирования данными - DML. Добавление в таблицу новой информации. Ввод данных в отдельные поля таблицы Изменение данных, хранящихся в таблице. Модификация данных в одном поле таблицы Изменение значений в нескольких полях таблицы
1. Теоретические языки запросов.
Операций, выполняемые над отношениями, можно разделить на две группы. Первую группу составляют операции над множествами, к которым относятся операции:
объединения, пересечения, разности, деления и декартова произведения. Вторую группу составляют специальные операции над отношениями, к которым, в частности, относятся операции: проекции, соединения, выбора.
В различных СУБД реализована некоторая часть операций над отношениями, определяющая в какой-то мере возможности данной СУБД и сложность реализации запросов к БД.
В реляционных СУБД для выполнения операций над отношениями используются две группы языков, имеющие в качестве своей математической основы теоретические языки запросов, предложенные Э. Коддом:
· реляционная алгебра;
· реляционное исчисление.
Эти языки представляют минимальные возможности реальных языков манипулирования данными в соответствии с реляционной моделью и эквивалентны друг другу по своим выразительным возможностям. Существуют не очень сложные правила преобразования запросов между ними.
В реляционной алгебре операнды и результаты всех действий являются отношениями. Языки реляционной алгебры являются процедурными, так как отношение, являющееся результатом запроса к реляционной БД, вычисляется при выполнении последовательности реляционных операторов, применяемым к отношениям. Операторы состоят из операндов, в роли которых выступают отношения, и реляционных операций. Результатом реляционной операции является отношение.
Языки исчислений, в отличие от реляционной алгебры, являются непроцедурными (описательными, или декларативными) и позволяют выражать запросы с помощью предиката первого порядка (высказывания в виде функции), которому должны удовлетворять кортежи или домены отношений. Запрос к БД, выполненный с использованием подобного языка, содержит лишь информацию о желаемом результате. Для этих языков характерно наличие наборов правил для записи запросов. В частности, к языкам этой группы относится SQL.
2. Язык SQL. Манипулирование данными. Язык манипулирования данными - DML. Добавление в таблицу новой информации. Ввод данных в отдельные поля таблицы Изменение данных, хранящихся в таблице. Модификация данных в одном поле таблицы Изменение значений в нескольких полях таблицы.
Язык SQL предназначен для выполнения операций над таблицами (создание, удаление, изменение структуры) и над данными таблиц (выборка, изменение, добавление и удаление), а также некоторых сопутствующих операций. SQL является непроцедурным языком и не содержит операторов управления, организации подпрограмм, ввода-вывода и т. п. В связи с этим SQL автономно не используется, обычно он погружен в среду встроенного языка программирования СУБД (например, FoxPro СУБД Visual FoxPro, ObjectPAL СУБД Paradox, Visual Basic for Applications СУБД Access).
Операторы языка SQL можно условно разделить на два подъязыка: язык определения данных (Data Definition Language — DDL) и язык манипулирования данными (Data Manipulation Language — DML).
Ввод данных: INSERT INTO <table> VALUES («value1», 1234, «value3», «value4»);
Ввод данных в отдельные поля: INSERT INTO <имя таблицы> [(<список столбцов>)] VALUES (<список значений>);
Изменение данных в таблице: UPDATE <table> SET <column_name1> = <value1> WHERE <column_name1> =<> <value2>.
Модификация данных в одном поле таблицы – тоже самое, но выбор строки по первичному ключу.
БИЛЕТ 8
1.Проблемы проектирования БД.
2. Язык SQL Управление безопасностью базы данных.. Системные и объектные привилегии пользователей. Управление доступом к базе данных. Операторы GRANT и REVOKE.
1. Проблемы проектирования БД.
Избыточное дублирование данных и аномалии.
Следует различать простое (не избыточное) и избыточное дублирование данных. Наличие первого из них допускается в базах данных, а избыточное дублирование данных может приводить к проблемам при обработке данных. Приведем примеры обоих вариантов дублирования.
Описывать слишком нудно, см. Проектирование БД/Нормальные формы
2. Язык SQL. Управление безопасностью базы данных. Системные и объектные привилегии пользователей. Управление доступом к базе данных. Операторы GRANT и REVOKE.
Управление безопасностью базы данных
Одной из важнейших задач управления базами данных является обеспечение безопасности данных, то есть защиты данных от их несанкционированного использования.
Обеспечение безопасности данных является очень серьезным вопросом, детальное рассмотрение которого требует отдельной объемной книги. Поэтому здесь мы обсудим лишь один из аспектов обеспечения безопасности, а именно — управление доступом к базе данных.
Привилегии пользователей
Привилегиями называются уровни полномочий пользователей. Разграничение доступа к информации, хранящейся в базе данных, регулируется с помощью привилегий.
Различают привилегии двух типов:
□ системные привилегии;
□ объектные привилегии.
Рассмотрим каждый из типов более подробно.
Системные привилегии
Системные привилегии дают пользователям базы данных возможность выполнять действия, связанные с ее администрированием: создавать, удалять и изменять структуру как самой базы данных, так и отдельных ее объектов. Кроме того, системные привилегии дают право на изменение состояния базы данных и ее отдельных объектов.
Возможные системные привилегии существенно зависят от используемой СУБД. Но в любом случае они включают такие привилегии, как право на:
□ создание таблицы;
□ создание представления;
□ создание хранимой процедуры;
□ удаление таблицы;
□ удаление представления;
□ удаление хранимой процедуры.
Этот список может быть расширен. Кроме того, каждая из привилегий имеет свои особенности в различных СУБД.
Объектные привилегии
Объектные привилегии представляют собой уровни полномочий пользователей, распространяемые на объекты базы данных. Это означает, что для того, чтобы выполнять определенные действия над объектами базы данных, пользователь должен иметь соответствующие права.
Стандартом ANSI предусмотрены следующие объектные привилегии:
□ SELECT — разрешает производить выборку данных из указанной таблицы (представления);
□ INSERTимя_поля) — разрешает выполнять добавление данных в определенное поле указанной таблицы (представления);
□ INSERT — разрешает добавление данных во все поля указанной таблицы (представления);
□ UPDАТЕ(имя_поля) — разрешает модифицировать данные в заданном поле указанной таблицы (представления);
□ UPDATE — разрешает модифицировать данные во всех полях указанной таблицы (представления);
□ REFERENCE (имя_поля) — разрешает ссылаться на заданное поле указанной таблицы (эта привилегия требуется при установке любых ограничений целостности);
□ REFERENCE — позволяет ссылаться на все поля указанной таблицы.
Управление доступом к базе данных
Для управления доступом пользователей к базе данных в языке SQL существуют два оператора:
□ GRANT;
□ REVOKE.
Как правило, эти операторы используются администратором базы данных или его помощником по безопасности.
Оператор GRANT
Оператор GRANT используется для предоставления пользователю как системных, так и объектных привилегий. Синтаксис данного оператора имеет следующий
вид:
GRANT привилегия_1 [. привилегия_2]
ON имя_объекта
ТО имя_пользователя [WITH GRANT OPTION]
Предоставление пользователю с именем USER права на выбор данных из таблицы СОТРУДНИКИ выполняется с помощью следующего оператора:
GRANT SELECT ON Сотрудники ТО USER
С помощью одного оператора GRANT можно задавать сразу несколько привилегий. Например, следующий оператор предоставит пользователю USER право как просматривать, так и добавлять данные в таблицу СОТРУДНИКИ:
GRANT SELECT. INSERT ON Сотрудники TO USER
При вызове оператора GRANT может использоваться необязательное предложение WITH GRANT OPTION. Данное предложение означает, что пользователь, для которого предоставляются привилегии, также получает право предоставлять привилегии на данный объект. Например, если вызвать рассмотренный выше оператор с предложением WITH GRANT OPTION, то пользователь с1 именем USER, кроме права просматривать и добавлять данные в таблицу СОТРУДНИКИ, получит также право предоставлять эти привилегии другим пользователям:
GRANT SELECT. INSERT
ON Сотрудники
TO USER
WITH GRANT OPTION
Оператор REVOKE
Оператор REVOKE используется для отмены предоставленных пользователю привилегий. Данный оператор может вызываться с одним из двух параметров — RESTRICT или CASCADE. При использовании варианта RESTRICT оператор REVOKE будет успешно выполнен только в том случае, если его выполнение не приведет к появлению так называемых оставленных привилегий.
При использовании режима CASCADE удаляются все привилегии, которые могли бы остаться у других пользователей. Это означает, что если пользователю USER1 были предоставлены привилегии с помощью параметра WITH GRANT OPTION, а он, в свою очередь, предоставил эти привилегии пользователю USER2, то отмена привилегий пользователю USER1 в режиме CASCADE приведет к отмене привилегий и для пользователя USER2.
Синтаксис оператора REVOKE имеет следующий вид:
REVOKE привилегия_1 [. привилегия_2]
ON имя_объекта
FROM имя_пользователя [RESTRICT | CASCADE]
Например, для отмены права добавления данных в таблицу СОТРУДНИКИ для пользователя USER следует использовать следующий оператор:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 |


