Автор работы: Пользователь скрыл имя, 19 Мая 2013 в 07:10, шпаргалка
Базы данных и файловые системы
СУБД определение, функции
СУБД определение, классификация
БД основные определения, классификация
Объекты базы данных
Физическая структура БД в SQL Server
Структурная часть реляционной модели
Фундаментальные свойства отношений
Реляционная алгебра Кодда
Целостность реляционных данных, стратегии поддержания ссылочной целостности
Этапы разработки баз данных
Нормальные формы отношений
Модель сущность-связь.
ALTER TABLE имя_таблицы
{[ALTER COLUMN имя_столбца
{новый_тип_данных [(точность[,масштаб])] [ NULL | NOT NULL ]}]
| ADD { [имя_столбца тип_данных]
| имя_столбца AS выражение } [,...n]
| DROP {COLUMN имя_столбца}[,...n] }
Команда позволяет добавлять и удалять столбцы, изменять их определения.
При изменении определений столбцов следует принимать во внимание некоторые общепринятые правила:
Удаление таблицы
DROP TABLE имя_таблицы [RESTRICT | CASCADE]
Следует отметить, что эта команда удалит не только указанную таблицу, но и все входящие в нее строки данных.
Если в операторе указано ключевое слово RESTRICT, то при наличии в базе данных хотя бы одного объекта, существование которого зависит от удаляемой таблицы, выполнение оператора DROP TABLE будет отменено.
Если указано ключевое слово CASCADE, автоматически удаляются и все прочие объекты базы данных, чье существование зависит от удаляемой таблицы, а также другие объекты, зависящие от удаляемых объектов.
Чаще всего оператор DROP TABLE используется для исправления ошибок, допущенных при создании таблицы.
22) Индексы в среде MS SQL Server
Индекс представляет собой средство, помогающее ускорить поиск необходимых данных за счет физического или логического их упорядочивания.
Индекс представляет собой набор ссылок, упорядоченных по определенному столбцу таблицы, который в данном случае будет называться индексированным столбцом.
Индексы это наборы уникальных значений для некоторой таблицы с соответствующими ссылками на данные.
Расположенные в самой таблице, они являются удобным внутренним механизмом системы SQL-сервера, с помощью которого осуществляется доступ к данным наиболее оптимальным способом.
В среде SQL Server реализованы эффективные алгоритмы поиска нужного значения в строго определенной последовательности данных.
Когда нужно создавать индексы
Если выборка данных из таблицы требует значительного времени, это означает, что для нее необходимо создать индекс.
Индексы могут существенно повысить производительность выполнения операций поиска и выборки данных.
При выборе столбца
для индекса следует
Типы индексов
При определении такого индекса в таблице физическое расположение данных перестраивается в соответствии со структурой индекса.
– наиболее типичные представители семейства индексов.
В отличие от кластерных, они не перестраивают физическую структуру таблицы, а лишь организуют ссылки на соответствующие строки.
Кластерные индексы
Кластерные индексы могут дать существенное увеличение производительности поиска данных даже по сравнению с обычными индексами.
При определении такого индекса в таблице физическое расположение данных перестраивается в соответствии со структурой индекса.
В таблице может быть определен только один кластерный индекс.
В качестве такового следует выбирать наиболее часто используемые столбцы. При этом стоит следовать общим рекомендациям создания индексов и не индексировать слишком длинные столбцы.
Кластерный индекс может включать несколько столбцов. Однако количество таких столбцов рекомендуется по возможности свести к минимуму.
Необходимо избегать создания кластерного индекса для часто изменяемых столбцов, поскольку сервер должен будет выполнять физическое перемещение всех данных в таблице, чтобы они находились в упорядоченном состоянии, как того требует кластерный индекс.
Для интенсивно изменяемых столбцов лучше подходит некластерный индекс.
При создании в таблице первичного ключа (PRIMARY KEY) сервер автоматически создает для него кластерный индекс, если его не существовало ранее или если при определении ключа не был явно указан другой тип индекса.
Когда же в таблице определен еще и некластерный индекс, то его указатель ссылается не на физическое положение строки в базе данных, а на соответствующий элемент кластерного индекса, описывающего эту строку, что позволяет не перестраивать структуру некластерных индексов всякий раз, когда кластерный индекс меняет физический порядок строк в таблице.
Некластерные индексы
Для идентификации нужной строки в таблице некластерный индекс организует специальные указатели, включающие в себя:
•информацию об идентификационном номере файла, в котором хранится строка;
•идентификационный номер страницы соответствующих данных;
•номер искомой строки на соответствующей странице;
•содержимое столбца.
В большинстве случаев следует ограничиваться 4-5 индексами.
Создание индекса
Индекс создается в случаях:
•автоматическое создание индекса при создании первичного ключа;
•автоматическое создание индекса при определении ограничения целостности UNIQUE;
•создание индекса с помощью команды CREATE INDEX.
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ]
INDEX имя_индекса ON имя_таблицы(имя_столбца
[ASC|DESC][,...n])
[[,] DROP_EXISTING]
[ON имя_группы_файлов ]
Параметр UNIQUE используется при необходимости ввода в определенное поле только уникальных значений.
При указании этого ключевого слова будет создан уникальный индекс.
В индексируемом
столбце желательно запретить хранение
значений NULL, чтобы избежать проблем,
связанных с уникальностью
Параметр DROP_EXISTING при использовании кластерного индекса определяет его повторное создание, что позволяет предотвратить нежелательное обновление кластерных индексов.
Параметр STATISTICS_
Параметр имя_группы_файлов позволяет осуществить выбор файловой группы, в которой будет находиться создаваемый индекс.
Использование индекса из другой файловой группы повышает производительность некластерных индексов в связи с параллельностью выполнения процессов ввода/вывода и работы с самим индексом.
Удаление индекса
DROP INDEX 'имя_индекса'[,...n]
23) Представления
Представления, или просмотры (VIEW), представляют собой временные, производные (иначе - виртуальные) таблицы и являются объектами базы данных, информация в которых не хранится постоянно, как в базовых таблицах, а формируется динамически при обращении к ним.
Обычные таблицы относятся к базовым, т.е. содержащим данные и постоянно находящимся на устройстве хранения информации.
Представление не может существовать само по себе, а определяется только в терминах одной или нескольких таблиц.
Представление - это предопределенный запрос, хранящийся в базе данных, который выглядит подобно обычной таблице и не требует для своего хранения дисковой памяти.
Для хранения представления используется только оперативная память.
В отличие от других объектов базы данных представление не занимает дисковой памяти за исключением памяти, необходимой для хранения определения самого представления.
Создание представлений (просмотров)
<определение_просмотра> ::=
{ CREATE| ALTER} VIEW имя_просмотра
[(имя_столбца [,...n])]
[WITH ENCRYPTION]
AS SELECT_оператор
[WITH CHECK OPTION]
Параметры оператора CREATE
Это означает, что не допускается выполнение изменений, которые приведут к исчезновению строки из представления.
Такое случается, если для представления установлен горизонтальный фильтр и изменение данных приводит к несоответствию строки установленным фильтрам.
Использование
аргумента WITH CHECK OPTION гарантирует, что
сделанные изменения будут
Использование представлений
Обращение к представлению осуществляется с помощью оператора SELECT как к обычной таблице.
Представление можно использовать в команде так же, как и любую другую таблицу.
К представлению можно строить запрос, модифицировать его (если оно отвечает определенным требованиям), соединять с другими таблицами.
Содержание представления не фиксировано и обновляется каждый раз, когда на него ссылаются в команде.
Представления
значительно расширяют
Модифицируемые представления
•основывается только на одной базовой таблице;
•содержит первичный ключ этой таблицы;
•не содержит DISTINCT в своем определении;
•не использует GROUP BY или HAVING в своем определении;
•по возможности не применяет в своем определении подзапросы;
•не использует константы или выражения значений среди выбранных полей вывода;
•в просмотр должен быть включен каждый столбец таблицы, имеющий атрибут NOT NULL;
•оператор SELECT просмотра не использует агрегирующие (итоговые) функции, соединения таблиц, хранимые процедуры и функции, определенные пользователем;
•основывается на одиночном запросе, поэтому объединение UNION не разрешено.
Если просмотр удовлетворяет этим условиям, к нему могут применяться операторы INSERT, UPDATE, DELETE.
Преимущества и недостатки представлений
Механизм представления - мощное средство СУБД, позволяющее скрыть реальную структуру БД от некоторых пользователей за счет определения представлений.
Наличие представлений в БД необходимо для обеспечения логической независимости данных ( при изменении логической структуры данных не должно оказываться влияние на пользовательские программы).
С увеличением количества данных, хранимых в БД, возникает необходимость ее расширения за счет добавления новых атрибутов или отношений - это называется ростом БД.
Реструктуризация данных подразумевает сохранение той же самой информации, но изменяется ее расположение, например, за счет перегруппировки атрибутов в отношениях.
Предположим, некоторое отношение в силу каких-либо причин необходимо разделить на два. Соединение полученных отношений в представлении воссоздает исходное отношение, а у пользователя складывается впечатление, что никакой реструктуризации не производилось.