Автор: Пользователь скрыл имя, 01 Ноября 2011 в 15:23, курсовая работа
В последие годы наблюдается значительный рост объемов и усложнение структурной сложности данных, также диверсификация в сфере пользователей БД (баз данных) и постоянное улучшение производительности технической базы. Так как база данных это по сути хранилище различных объектов (данных), возникла необходимость в структуризации и систематизации хранящейся в БД информации, а также возможности создания взаимосвязей между объктами.
Введение...................................................................................................................2
1.Типы данных языка SQL......................................................................................6
1.1. Идентификаторы языка SQL...........................................................................6
1.2. Точные числовые данные................................................................................6
1.3. Скалярные типы данных языка SQL..............................................................9
1.4 Средства поддержки целостности данных....................................................10
1.5. Обязательные данные.....................................................................................10
1.6. Ограничения……………................................................................................10
2. Определение данных.........................................................................................12
2.1. Создание баз данных......................................................................................13
2.2. Изменение содержимого базы данных.........................................................14
2.3. Создание таблиц.............................................................................................15
2.4. Модификация определения таблицы............................................................18
2.5. Удаление таблиц……………………………….............................................19
3. Запросы и права доступа...................................................................................21
3.1 Представления……………………………………………………................21
3.2. Транзакций в SQL..........................................................................................22
3.3. Управление доступом к данным…………………........................................24
3.4. Идентификаторы пользователей и права владения.....................................24
3.5. Привилегии…………………………………………………………………..24
Заключение.............................................................................................................26 Глоссарий…………………...................................................................................28
Список использованных источников...................................................................29
Приложения…………………………………………………………...…..……..31
1.5 Обязательные данные
Предположим, что в некоторых столбцах наличие соответствющего и удовлетворяющего всем условиям заполнения и отличного от неопределенного значения, обязательно для каждой строки. В таком случае используется значение NULL, не являющееся ни пустым строковым значениям, ни нулевым числовым значениями; оно служит для замещения данных, которые определенный момент отсутствуют в таблицы, но чье наличие обязательно. Чтобы задавать ограничения подобного рода стандарт ISO также допускает использоваание идентификатора NOT NULL, (задается в указанных выше операторах). В таком случае , система не позволяет поместить в данный столбец пустое значение. По умолчанию применяется спецификатор NULL.
1.6 Ограничения
Каждый столбец имеет
CHECK {search Condition}
В случае применения этой конструкции для отдельного столбца позволяется ссылаться только на определяемый столбец.
Впрочем, стандарт ISO дает возможность определять и немного более сложные домены. Для этого используется альтернативный механизм — применяется оператор CREATE DOMAIN.
Каждый домен, который был создан, получает уникальное имя, которое задается параметром domain Name, тип данных, задаваемый параметром dataType, а также необязательные атрибуты - характеристики по умолчанию, определяемые параметром defaulCOption, и набор допустимых значений, который, как было указано выше, декларируется в конструкции CHECK. Нужно заметить, что описанный формат оператора CREATE DOMAIN не является полным, но в достаточной степени демонстрирует базовые возможности.
Для удаления доменов из базы данных применяется оператор DROP DOMAIN.
Для
однозначного задания способа удаления
домена используются отдельные спецификаторы
(RESTRICT или CASCADE) определяющие, какие действия
должны выполнятся в базе данных, если
домен используется в момент удаления.
В случае задания спецификатора RESTRICT,
домен, задействованный в существующей
таблице (в представлении или определении
проверки), то в таком случае операция
удаления оканчивается неудачей. Если
применен спецификатор CASCADE, то изменнения
автоматически вносятся в любой столбец
таблицы, основанный на определении домена,
таким способом, чтобы в нем использоваался
базовый тип данных домена, а любые ограничения
или применяемые по умолчанию конструкции
операторов для этого домена заменяются
в случае необходимости ограничениями
самого столбца.
Язык
определения данных SQL DDL (Data Definition Language)
позволяет создавать и
CREATE SCHEMA
CREATE DOMAIN
CREATE TABLE
CREATE VIEW
ALTER DOMAIN
ALTER TABLE
DROP SCHEMA
DROP DOMAIN
DROP TABLE
DROP VIEW
Данные транзакции применяются для создания, изменнеия и удаления структур, которые входят в состав оригинальной схемы. Во некоторых СУБД зарезервированы также дополнительные операторы, не предусмотренные стандартом ISO - CREATE INDEX и DROP INDEX.
Помимо этого, администратор базы данных имеет возможность воспользоваться и другими дополнительными командами для более точного уточнения характеристик хранимых данных.
2.1 Создание баз данных
За счет широкого спектра форматов СУБД процедура создания в них баз данных может существенно отличаться. В многопользовательских системах возможность создания баз данных делегируется исключитьльно администратору БД. В системах однопользовательского режима база данных, предусмотренная по умолчанию, может быть создана прямо непосредственно в процессе установки и настройки параметров самой СУБД. Все другие базы данных могут создаваться пользователем по мере возниконовения необходимости2. Стандарт ISO не задает строгих рамок, как нужно создавать БД, поэтому в каждом из диалектов языка SQL может применяться индивидуальный подход. Согласно стандарту ISO, все таблицы и прочие объекты базы данных организованы в определенной среде (environment). Каждая среда обязательно имеет структуру, представленную наличием каталогов (catalog), каждый из которых состоит из набора схем (schema). Схема представляет собой полный поименованный список объектов базы данных, связанных друг с другом определенным образом (т.е. все объекты в базе данных должны быть задекларированы в какой-нибудь схеме). Объектами схемы могут являться домены, представления, таблицы, утверждения, сопоставления, толкования и наборы символов. Все объекты схемы принадлежат одному и тому же владельцу и обладают множеством общих значений.
Этот стандарт оставляет право выбора конкретного способа написания и удаления каталогов за разработчиком СУБД, но регламентирует механизм создания и удаления схем. Оператор определения схемы представлен следующим форматом:
CREATE. SCHEMA [nаmе | AUTHORIZATION Creator-Identifier]
В стандарте ISO также указано, что должна существовать возможность наделения строго определяемым диапазоном средств в рамках данного оператора каждого пользователя разрабатываемой схемы. Разумеется, конкретные способы задания этих привилегий в разных СУБД различаются. Схема должна удаляться с помощью оператора DROP SCHEMA, который имеет следующий формат:
DROP SCHEMA Name [ RESTRICT | CASCADE]
В случае, если указано ключевое слово RESTRICT, то схема должна быть пустой, в противном случае выполнение операции будет отменено. Если же указано ключевое слово CASCADE, то при выполнении оператора автоматически будут удаляться все связанные с удаляемой схемой объекты. Если одна из этих операций удаления завершится неудачно (вне зависимости от ключевого слова), выполнение всего оператора будет отменено. Суммарный эффект от выполнения оператора с параметром CASCADE может затронуть значительную часть базы данных, поэтому подобные операторы следует использовать с особой осторожностью.
В настоящее время операторы CREATE SCHEMA и DROP SCHEMA реализованы в весьма узком кругу СУБД.
2.2
Изменение содержимого
базы данных
SQL является многофункциональным языком работы с данными, который может использоваться не только для выборки данных из базы, так и для модификации ее содержимого. В операции манипулирования данными входят три операции:
-
операция удаления записей,
-
операция добавления новых
- операция обновления (изменения записей) — ей соответствует оператор UPDATE.
Для всех операторов манипулирования данными допустимо изменения данных только в одной таблице.
2.3 Создание таблиц
Вторым этапом после создания общей структуры базы данных является создание таблиц, которые будут представлять отношения, связываающие входящюю в базу информацию. Для этого применяется оператор CREATE TABLE, имеющий следующий общий формат:
CREATE TABLED TableName
{ (Colum Name data Type [NOT NULL] [UNIQUE]
[DEFAULT default option] [CHSCK (search Condition}:] [, …] }
[PRIMARY KEY (List Of Columns) ]
{ [UNIQUE {list Of Columns) ] [,. . .] }
{ [FOREIGN KEY ( list Of Fdreign Key Columns)
REFERENCES Parent Table Name [(list Of Candidate Key Coluims) ],
[MATCH {PARTIAL | FULL}
[ON UPDATE. Referential Action]
[ON DELETE referential Action] } [, , .-.] }
{[CHECK (search Condition)] [, . , , ] } )
В данном случае оператор CREATE TABLE включает в себя средства описания ограничений (например, ссылочной целостности). Функциональность самого оператора и степень затребованности тех или иных ограничений в значительной степени зависят от использованного администратором диалекта языка SQL. По «правилам хорошего тона» в базе данных надлежит использовать все поддерживаемые ограничения, без исключения, так как это позволяет повысить качество создаваемой БД.
Результатом работы декларированного выше оператора будет таблица, ее имя будет определяется параметром Table Name, а структура будет состоять из столбцов типа data Type. Для определения значения, которое будет применятся по умолчанию при вставке данных в соответствующий столбец, дополнительно введена необязательная конструкция DEFAULT. В базе данных это значение применяется по умолчанию в случаях, когда в операторе INSERT не задано значение для такого столбца. Помимо других значений, функция определения применяемого по умолчанию значения default option может включать литеры. Другие подобные конструкции называются ограничениями таблицы и могут быть ввведены в качестве дополнения с помощью следующей конструкции:
CONSTRAINT Constraint Name
Данная конструкция позволяет удалить ограничение в процессе дальнейшего использования таблицы, указав его имя в операторе ALTER TABLE. Транзакция PRIMARY KEY дефинирует один или несколько столбцов, образующих первичный ключ таблицы. В случае, когда данная конструкция включается в диалект SQL, реализованный в конкретной базе данных, то она обязана применяться при создании каждой из таблиц. По умолчанию, для всех столбцов, образующих первичный ключ, предусмотрено применение ограничения NOT NULL. При создании таблицы позволяется использование строго только одной конструкции PRIMARY KEY. База данных пресекает все попытки запуска транзакций UPDATE или INSERT, так как они могут повлечь за собой появление строк с задвоенной информацией в столбце (нескольких столбцах) PRIMARY KEY. Таким образом, в базе данных обеспечивается уникальность значений для первичного ключа. В конструкции FOREIGN KEY дефинируется внешний ключ одной таблицы и ее связь с другой (родительской) таблицей. Эта конструкция позволяет осуществлять ограничения ссылочной целостности и структурирована на несколько частей:
- Список ListOfForeignKeyColumns, содержащий имена одного или нескольких столбцов создаваемой таблицы из числа тех, которые образуют внешний ключ.
- Необязательная функция обновления ON UPDATE, служащая для определения взаимосвязи между таблицами, которая управляет порядком выполнения действий (referential Action) при обновлении в родительской таблице некоторого потенциального ключа определенного отношения, являющегося внешним ключом дочерней таблицы. В качестве характеристики referential Action можно указать CASCADE или NO ACTION. Если вышеописанная не использована, то по умолчанию подразумевается, что никакие действия выполнятся не будут в соответствии со значением NO ACTION.
- Так же необязательное правило удаления ON DELETE, определяющее взаимосвязи между таблицами, которое управляет порядком выполнения действий (referential Action) при удалении в родительской таблице некоторого потенциального ключа определенного отношения, являющегося внешним ключом дочерней таблицы. Определение параметра referential Action аналогично заданию этого параметра для функцииы ON UPDATE.
- По умолчанию ограничение ссылочной целостности выполянется, если какой-либо компонент внешнего ключа содержит значение NULL или в родительской таблице присустствует соответствующая строка. Функция MATCH позволяет ввести опциональные ограничения, касающиеся применения значений NULL во внешнем ключе. Если был задан параметр MATCH FULL, то возможны два варианта: либо все составляющие внешнего ключа должны быть пусты (NULL), либо все должны иметь непустые значения. А если был задан параметр MATCH PARTIAL, тогда ситуация следующая: либо все составляющие внешнего ключа должны быть пусты (NULL), либо же в родительской таблице существует хотя бы одна строка, удовлетворяющая этому ограничению, если все остальные значения NULL были подставлены правильно.
Оператор создания таблицы может содержать любое количество конструкций FOREIGN KEY. Функции CHECK и CONSTRAINT дают возможность вводить дополнительные ограничения. Если конструкция CHECK применяется как ограничение столбца, то она может ссылаться только на определяемый столбец. В действительности ограничения контролируются после применения любого оператора SQL к таблице, для которой они заданы, но эта проверка может быть отсрочена до окончания выполнения той транзакции, в состав которой входит данный оператор SQL.