Язык определения данных

Автор работы: Пользователь скрыл имя, 27 Ноября 2013 в 10:41, курсовая работа

Краткое описание

Для создания и изменения структуры БД предназначены SQL-запросы, называемые языком определения данных, или DDL (Data Definition Language). С помощью DDL-запросов можно выполнить следующее:
• определить структуру нового домена и создать его;
• определить структуру новой таблицы и создать ее;
• изменить определение существующей таблицы;

Вложенные файлы: 1 файл

sql_Язык определения данных.docx

— 72.86 Кб (Скачать файл)

Рис. 4.7. Результат выполнения запроса к представлению Abonent_Phone

Смешанное представление представляет собой подмножество строк и столбцов одиночной таблицы. Оно является представлением, разделяющим исходную таблицу как в горизонтальном, так и в вертикальном направлениях.

Пусть необходимо создать  представление Nachisl_Service, отображающее номера лицевых счетов абонентов  и начисленные им суммы за услугу газоснабжения с кодом, равным 2. Для решения этой задачи следует  выполнить следующий запрос:

CREATE VIEW Nachisl_Service AS SELECT AccountCD, GazServiceCD, NachislSum FROM NachislSumma WHERE GazServiceCD = 2;.

Сгруппированное представление основано на запросе, содержащем предложение GROUP BY и, как следствие, использующем агрегатные функции. Оно выполняет ту же функцию, что и запросы с группировкой определенных столбцов. В них родственные строки данных объединяются в группы, и для каждой группы в таблице результатов запроса создается одна строка, содержащая итоговые данные по этой группе. С помощью сгруппированного представления запрос с группировкой превращается в виртуальную таблицу, к которой в дальнейшем можно обращаться.

В отличие от горизонтальных и вертикальных представлений, каждой строке сгруппированного представления  не соответствует какая-то одна строка исходной таблицы. Сгруппированное  представление не является просто фильтром исходной таблицы. Оно, в силу использования  агрегатных функций, отображает исходную таблицу в виде суммарной информации и требует от СУБД значительного  объема вычислений.

Например, если необходимо создать  представление Abonent_All_Pay с полями AccountCD и All_Pay, показывающее общую сумму  оплат для каждого абонента, то следует выполнить следующий  запрос:

CREATE VIEW Abonent_All_Pay (AccountCD, All_Pay) AS SELECT AccountCD, Sum (PaySum) FROM PaySumma GROUP BY AccountCD;.

Результат выполнения следующего запроса:

SELECT * FROM Abonent_All_Pay;

представлен на рис. 4.8.

ACCOUNTCD

ALL_PAY

005488

222,83

015527

84,96

080047

256,88

080270

221,30

080613

114,66

115705

747,95

126112

40,60

136159

16,60

136160

112,60

136169

160,66

443069

195,10

443690

39,47


Рис. 4.8. Результат выполнения запроса к представлению Abonent_All_Pay

Соединенное представление - это подмножество строк и столбцов из нескольких таблиц. Задавая в определении представления, например, двух- или многотабличный запрос, можно создать виртуальную таблицу, данные в которую считываются соответственно из двух или трех различных таблиц. После создания такого представления к нему можно обращаться с помощью однотабличного запроса.

Например, необходимо создать  представление с именем Abonent_Executor, в котором будут содержаться  ФИО абонентов и назначенных  по их ремонтным заявкам исполнителей. Для решения данной задачи подойдет следующий запрос:

CREATE VIEW Abonent_Executor (Abonent_Name, Executor_Name) AS SELECT A. Fio, E. Fio FROM Abonent A, Executor E, Request R WHERE R. AccountCD = A.AccountCD AND R.ExecutorCD = E. ExecutorCD;.

Результат выполнения следующего запроса:

SELECT * FROM Abonent_Executor;

представлен на рис. 4.9.

ABONENT_NAME

EXECUTOR_NAME

АКСЕНОВ С.А.

СТАРОДУБЦЕВ Е.М.

КОНЮХОВ В.С.

СТАРОДУБЦЕВ Е.М.

ЛУКАШИНА Р.М.

СТАРОДУБЦЕВ Е.М.

ШМАКОВ С.В.

СТАРОДУБЦЕВ Е.М.

МИЩЕНКО Е.В.

СТАРОДУБЦЕВ Е.М.

СТАРОДУБЦЕВ Е.М.

СТАРОДУБЦЕВ Е.М.

ШМАКОВ С.В.

СТАРОДУБЦЕВ Е.М.

ДЕНИСОВА Е.К.

БУЛГАКОВ Т.И.

МИЩЕНКО Е.В.

БУЛГАКОВ Т.И.

МИЩЕНКО Е.В.

БУЛГАКОВ Т.И.

МИЩЕНКО Е.В.

ШУБИН В.Г.

ШУБИНА Т.П.

ШУБИН В.Г.

СВИРИНА З.А.

ШУБИН В.Г.

ШУБИНА Т.П.

ШУБИН В.Г.

ТИМОШКИНА Н.Г.

ШЛЮКОВ М.К.

АКСЕНОВ С.А.

ШЛЮКОВ М.К.

МИЩЕНКО Е.В.

ШЛЮКОВ М.К.

ТИМОШКИНА Н.Г.

ШЛЮКОВ М.К.

СТАРОДУБЦЕВ Е.М.

ШКОЛЬНИКОВ С.М.

АКСЕНОВ С.А.

ШКОЛЬНИКОВ С.М.

ДЕНИСОВА Е.К.

ШКОЛЬНИКОВ С.М.


Рис. 4.9. Результат выполнения запроса к представлению Abonent_Executor

Если представление не используется другими объектами  БД, то его можно удалить запросом DROP VIEW, который имеет следующий  формат:

DROP VIEW представление;.

Если требуется заново создать представление со старым именем, то используется запрос RECREATE VIEW. Синтаксис этого запроса такой  же, как и запроса CREATE VIEW. Если представление  не существует перед использованием запроса, то его использование эквивалентно использованию CREATE VIEW. Если представление  уже существует, то запрос RECREATE VIEW пытается удалить его и создать полностью  новый объект (не будет выполнено, если представление используется другим объектом).

Например, создадим заново горизонтальное представление Failure_Req так, чтобы оно  содержало только погашенные заявки по неисправности с кодом, равным 1, с помощью следующего запроса:

RECREATE VIEW Failure_Req AS SELECT * FROM Request WHERE FailureCD = 1 AND Executed = 1;.

Результат выполнения следующего запроса:

SELECT * FROM Failure_Req;

представлен на рис. 4.10.

REQUESTCD

ACCOUNTCD

EXECUTORCD

FAILURECD

INCOMINGDATE

EXECUTIONDATE

EXECUTED

1

005488

1

1

17.12.2001

20.12.2001

1

2

115705

3

1

07.08.2001

12.08.2001

1

9

136169

2

1

06.11.2001

08.11.2001

1


Рис. 4.10. Результат выполнения запроса к представлению Failure_Req

Преимуществами использования  представлений являются следующие:

•  обеспечение логической независимости. Одна из основных задач, которую позволяют решать представления, - обеспечение логической независимости прикладных программ от изменений в структуре базы данных. При изменении структуры изменяются запросы в определениях соответствующих представлений. При этом никаких изменений в программы, работающие с такими представлениями, вносить не нужно;

•  прикладной взгляд на данные. Представления дают возможность различным пользователям по-разному видеть одни и те же данные. Это особенно ценно при работе различных категорий пользователей с единой интегрированной базой данных. Пользователям предоставляются только интересующие их данные в наиболее удобной для них форме или формате;

•  защита данных. Представления предоставляют дополнительный уровень защиты данных в таблицах. От определенных пользователей могут быть скрыты некоторые данные, невидимые через предложенное им представление;

• скрытие сложности данных. Пользователь работает с представлением как с обычной таблицей, обращаясь к нему по имени, хотя на самом деле представление может представлять собой сложный запрос.

Таким образом, представление  предоставляет множество преимуществ, однако имеются и недостатки [25]. Представление - это виртуальная  таблица, и, следовательно, при каждом обращении к представлению происходит обработка запроса, затем возврат  результата. Выполнение сложных вычислений или наличие множества соединений может приводить к снижению скорости работы.

4.6. Комментарии  к объектам базы данных

Для сохранения в БД пояснений, относящихся к объектам БД, используются комментарии на объект базы данных. Для создания такого комментария  используется запрос COMMENT ON, который  имеет следующий формат:

COMMENT ON {DATABASE IS {'текст' | NULL} | <базовый_объект> имя_объекта IS {'текст' | NULL} | COLUMN {базовая_таблица  | представление}. столбец IS {'текст' | NULL} | PARAMETER имя_процедуры.имя_параметра IS {'текст' | NULL}},

где

<базовый_объект> ::= {DOMAIN | TABLE | VIEW | PROCEDURE | TRIGGER | EXCEPTION | GENERATOR | SEQUENCE | INDEX | ROLE};

'текст' - пояснения к объекту  БД. Указание пустой строки '' в  качестве текста эквивалентно  использованию NULL.

В результате действия запроса COMMENT ON в системном каталоге появится комментарий к описанию объекта  БД. Комментарий на саму БД хранится в поле RDB$DESCRIPTION системной таблицы RDB$DATABASE. Например, можно добавить комментарий  к учебной БД с помощью следующего запроса:

COMMENT ON DATABASE IS 'Учебная база данных Абонент';.

Следующий запрос добавляет  комментарий к домену PKField:

COMMENT ON DOMAIN PKField IS 'Домен предназначен  для определения первичных ключей  таблиц';.

Этот комментарий хранится в поле RDB$DESCRIPTION системной таблицы RDB$FIELDS .

Точно так же можно создать  комментарии и для других объектов БД и просмотреть их, извлекая нужное поле из системной таблицы с помощью  запроса SELECT или открывая необходимую  системную таблицу в IBExpert и закладку «Данные» в ней. Так же, открыв эту  закладку, можно изменить созданный  комментарий непосредственно в RDB$DESCRIPTION (при щелчке в области данных этого  поля) в выпадающем поле для ввода. Для подтверждения изменений  следует нажать «ОК» и поставить  галочку.


Информация о работе Язык определения данных