Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009

.pdf
Скачиваний:
4975
Добавлен:
14.05.2016
Размер:
14.64 Mб
Скачать

H'DOCTVPE HTM PUBLIC •'-//W3C//DTD HTML 4 . в T r a n s i t i o n a l / / E N " > <HTML X M L H S : o - " u r n : s c h e r i a s - r d . c i * 0 5 o F t - c o n : o f F i c e : o f F i c e "

X M L N S : x = " u r n : s c h e n a s - i i i c i ' o s o F t - c o n : e F F i c e : e x c e l "

XliLNS : a = " u r n : s c h e m a s - n i c r o s o F t : - c o i n : o F F i c e : a c c e s s "

XMLNS:dt="uuid:C2FU101 e-A5B3-11d1-A29F-0QAA00C1JiB82, , ><HEAD><LINK

hreF =" . /CipdH»ii |a1 . F i l e s / f

i l e l i s t

. x n l " r e l = F i l e - L i s t

t y p e - t e x t / x n l X T I T L E > C n M C O K TOBapoB</TITLE>

СМЕТА

c o n t p n t - A c c e s s . A p p l i c a t i o n

name - Prog I d>

<HETfl nane =UBSForEupntHandlers UALUE="TRUE">

<META

c o n t e n t = " t e K t / h t i n l ;

c h a r s e t = u i n d o w s - 1 2 5 1 " h t t p - e q u i u = C o n t p n t - T y p p >

<STVLE

id=HSODAPDEFAULTS

t y p e = t e x t / e s s

r e l = " s t j | l e 5 h e p t " > . n s t h e m p - l a b e l {

>

FOHT-FftlllLV: Tahoma; FONT-SIZE:

8 p t

 

 

 

 

ТЕЖАКЕЙ {

 

 

 

>

FOHT-FftMILV: Tahoma; FONT-SIZE:

8 p t

 

 

 

 

- ircoboundhtmi {

 

 

 

Рис. 18.19. Исходный код статической HTML-страницы отчета

Т а б л и ц а 18 . 1 .

Замена описателей шаблона

О п и с а т е л ь ш а б л о н а H T M L

<! — A c c e s s T e m p l a t e _ T i t l e — >

<! — A c e s s T e m p l a t e _ B o d y — >

<! — A c c e s s T e m p l a t e _ F i r s t P a g e — >

<! — A c c e s s T e m p l a t e _ P r e v i o u s P a g e

>

<! — A c c e s s T e m p l a t e _ N e x t P a g e — >

<! — A c c e s s T e m p l a t e _ L a s t P a g e — >

<! — A c c e s s T e m p l a t e _ P a g e N u m b e r

З а м е н а

И м я т а б л и ц ы , з а п р о с а , ф о р м ы и л и о т ч е т а , о т о - б р а ж а е м о е в с т р о к е з а г о л о в к а W e b - о б о з р е в а т е л я

В ы х о д н ы е д а н н ы е т а б л и ц ы , з а п р о с а , ф о р м ы и л и о т ч е т а

Т е г H T M L , с о д е р ж а щ и й с в я з ь с п е р в о й с т р а н и ц е й о т ч е т а

Т е г H T M L , с о д е р ж а щ и й с в я з ь с о с т р а н и ц е й о т ч е т а , п р е д ш е с т в у ю щ е й т е к у щ е й с т р а н и ц е

Т е г H T M L , с о д е р ж а щ и й с в я з ь с о с т р а н и ц е й о т ч е т а , с л е д у ю щ е й п о с л е т е к у щ е й с т р а н и ц ы

Т е г H T M L , с о д е р ж а щ и й с в я з ь с п о с л е д н е й с т р а - н и ц е й о т ч е т а

Н о м е р т е к у щ е й с т р а н и ц ы

714

Часть 4. Публикация баз данных в Интернете

Контрольные

вопросы и задания

1.Охарактеризуйте разновидности Web-страниц, которые можно создавать с помощью Microsoft Access.

2.Для выполнения каких действий могут использоваться страницы доступа к данным, создаваемые с помощью Microsoft Access?

3.Каково назначение сводных списков?

4.Какие типы разделов используются на страницах доступа к данным с группировкой?

5.Охарактеризуйте создание отчетов в интерактивном режиме.

6.Что нужно учитывать при создании страницы для ввода данных?

7.Укажите последовательность действий при создании сводного списка на странице доступа к данным.

8.Охарактеризуйте серверные страницы, создаваемые с помощью Microsoft Access.

9.Какую последовательность действий нужно выполнить, чтобы экспортированная в формат ASP или IDC/HTX таблица (запрос или форма) была доступна пользователям Интернета?

10.Дайте краткую характеристику IDC-технологии.

11.Каково назначение файлов .НТХ?

12.Укажите назначение обязательных и дополнительных директив файла .1 DC.

13.Поясните назначение строк кода на главной странице HTML в приведенном в главе примере публикации БД.

14.Как выполняется публикация содержимого БД Access с использованием статических HTML-страниц?

15.Поясните, как при выводе таблицы, запроса, формы или отчета с указанием файла шаблона HTML Microsoft Access выполняет замену описателей шаблона.

16.Выполните средствами СУБД Access создание базы данных и ее публикацию по технологии IDC/HTX.

Литература

1.Бекаревич Ю., Пушкина Н. Самоучитель Microsoft Access 2000. СПб.: БХВ — Санкт-Петербург, 1999.

2.Мещеряков Е. В., Хомоненко А. Д. Публикация баз данных в Интернете. СПб.: БХВ-Петербург, 2001.

3.Михеева В., Харитонова И. Microsoft Access 2000. СПб.: БХВ — Санкт-Петер- бург, 2000.

4.Михеева В., Харитонова И. Microsoft Access 2003. Наиболее полное руководство. - СПб.: БХВ-Петербург, 2004.

5.Фролов А. В., Фролов Г. В. Базы данных в Интернете: практическое руководство по созданию Web-приложений с базами данных. М.: Издательско-торго- ВэШ дом «Русская редакция», 2000.

715

Приложения

Приложение 1

 

Аксиомы вывода функциональных

зависимостей

Пусть отношение R имеет множество атрибутов М = {Al, А2, A3,..., AN} с заданным на нем множеством функциональных зависимостей F = {Fl, F2, F3,..., FK}. X, Y, W и Z - подмножества множества М, то есть атомарные или составные атрибуты.

Аксиома 1 (описывает свойство рефлексивности).

Если X £ М, Y С М и Y £ X, то функциональная зависимость X —»Y следует из F. Это правило позволяет строить тривиальные зависимости типа:

A i —> A i, A i Aj —> A i,..., A i A j A k А l A j А к АI и т. д.

Для их получения достаточно, чтобы множества атрибутов левой и правой частей совпадали, или правая часть была подмножеством левой части.

Пример.

Пусть имеется отношение R(A1, А2, A3, А4, А5), в котором F = {Al—» А2, А1—> A3, А1 —> А4, Al —> А5}. Отношение R имеет следующий вид:

А1

А2

A3

А4

А5

а

б

а

в

3

д

и

л

г

3

е

б

ш

н

ш

в

к

а

с

X

Образуем составные атрибуты X = {А2, А4, А5} и Y={A2, А5}. Теперь отношение R будет выглядеть следующим образом:

 

X

 

 

Y

б,

В,

3

б,

3

и,

Г,

3

И,

3

б,

Н,

ш

б,

ш

К,

С,

X

К,

X

Анализируя отношения R, а также атрибуты X и Y, видим, что в R существует функциональная зависимость X —> Y, поскольку одной совокупности значений атрибутов {А2, А4, А5} соответствует одна совокупность атрибутов {А2, А5}.

Аксиома 2 (описывает свойство пополнения).

Если X £ М, Y £ М, ZCXH задана зависимость X -> Y, которая принадлежит F либо получена из F с использованием правил вывода, то X u Z —> Y и Z.

Используя эту аксиому, можно любые атрибуты из множества М одновременно подставлять в левую и правую части выражения функциональной зависимости, сохраняя при этом саму зависимость.

716

 

Приложения

Пример.

 

 

Пусть X

= {Al}, Y = {A3}, Z = {А4, А5}, тогда X U Z - > Y U Z T O есть

{А1, А4, А5}

{A3, А4,А5}.

Аксиома

3 (описывает свойство транзитивности).

Если Х с М Д е М Д с Х и заданы зависимости X —> Y и Y —> Z, которые принадлежат F либо получены из F с использованием правил вывода, то X —> Z.

Доказательство. Предположим, что в R(X, Y, Z) имеются два кортежа t и s,

у которых совпадают значения по атрибутам из множества X (первые столбцы), но не совпадают по атрибутам из множества Z (третьи столбцы). Однако это невозможно, так как исходя из зависимости X —> Y должно быть совпадение значений во вторых столбцах (Y), а зависимость Y —> Z дает совпадение значений в третьем столбце.

Таким образом, если совпадают значения по атрибуту X, то совпадают значения и по атрибуту Z, а это и означает наличие функциональной зависимости X —> Z.

Аксиомы 1 - 3 позволяют построить из исходного множества F функциональных зависимостей полное множество F+. Из них можно вывести еще пять аксиом.

Аксиома 4 (описывает свойство расширения).

Если X £ М, Y £ М и задана функциональная зависимость X —> Y, то для любого Z £ М имеет место зависимость X u Z —» Y.

Доказательство. Из аксиомы 1 следует, что X и Z ^ X, т. к. X £ X £ Z.

Итак, мы имеем X u Z —> X и заданную из условия зависимость X —> Y. Теперь, если воспользоваться аксиомой 3 о транзитивности, получаем X u Z —> Y, что и требовглось доказать.

Аксиома 5 (описывает свойство продолжения).

Если X . £ M , Y £ M , W G M , Z Q M H задана функциональная зависимость X —> Y, то для любых W G Z имеет место зависимость X u Z ^ Y u W .

Доказательство. Так как X —» Y, то по аксиоме 2 получаем X и Z -> Y и Z.

С другой стороны, условие W £ Z по аксиоме 1 означает, что существует зависимость Z —> W. Из последнего вновь по аксиоме 2 выводится зависимость Z u Y - ^ W u Y , которую лучше записать как Y u Z - ^ Y u W . Теперь по аксиоме 3 ИЗ зависимостей X U Z - ) Y U Z H Y U Z - 4 Y U W непосредственно следует, что X u Z - ) Y u W .

Аксиома 6 (описывает свойство псевдотранзитивности).

Если X C M , Y C M , W C M , Z C M H заданы функциональные зависимости X —»Y 'я Y и W —»Z, то имеет место функциональная зависимость X u W —»Z.

Доказательство. Так как X —» Y, то по аксиоме 2 (дополняя по W ) можно

записать: X U W - ) Y U W . Но так как задано, что Y U W ^ Z , воспользовавшись аксиомой 3, сразу получим зависимость X u W —» Z.

Аксиома 7 (описывает свойство аддитивности или объединения).

Если X C M , Y £ M , Z £ M H заданы функциональные зависимости X -» Y и X —» Z, го имеет место функциональная зависимость X —> Y u Z.

Приложение 2. Краткое описание языка SQL в MS Access

717

Доказательство. Так как X —> Y, то по аксиоме 2 (дополняя по X ) получаем:

X u X - > Y u X , или X - »Y u X. Из заданной зависимости X -> Z аналогичным

образом (дополняя по Y) получим X u Y ^ Z u Y ,

которое лучше переписать

так: Y u X

— » Y и Z. Из полученных зависимостей

X — > Y U X H Y U X — » Y U Z

по аксиоме 3 следует искомая зависимость X —» Y u Z.

Аксиома

8 (описывает свойство декомпозиции).

Если X c M , Y e M , Z c M H при этом Z С Y, а также задана функциональная зависимость X —> Y , то будет иметь место зависимость X —> Z.

Доказательство. Так как Z с Y, то по аксиоме 1 можно получить Y —> Z.

Далее из известной зависимости X —> Y и только что полученной зависимости Y —> Z по аксиоме 3 получаем X Z.

718

Приложения

Приложение

2

Краткое описание языка

SQL в MS Access

Операторы (инструкции) языка SQL в СУБД MS Access используются при разработке форм, отчетов, а также написании макрокоманд и программ. Программы в Access хранятся в модулях, написанных на языке программирования Access Basic (в ранних версиях MS Access) либо Visual Basic для приложений, который поглощает язык Access Basic.

К числу основных операторов языка SQL, реализованного в Access, относятся следующие: ALTER TABLE, CREATE INDEX, CREATE TABLE, DELETE, DROP, INSERT INTO, SELECT, TRANSFORM и UPDATE.

Приведем описание инструкций, которое составлено по сведениям справочной системы MS Access.

1. Инструкция ALTER TABLE

Назначение: изменение структуры таблицы, созданной с помощью инст-

рукции CREATE TABLE.

Синтаксис:

ALTER TABLE <таблица>

{ADD {COLUMN <поле> <тип>[(<размер>)] [CONSTRAINT <индекс>] | CONSTRAINT <составной_индекс>} |

DROP {COLUMN <поле> | CONSTRAINT <имя_индекса>}}

Аргументы:

<таблица> - имя изменяемой таблицы; <поле> - имя поля, добавляемого в таблицу или удаляемого из нее; <тип> - тип данных поля;

<размер> - размер поля в символах (для текстовых и двоичных полей); <ивдекс> - индекс для поля. Для получения более подробных сведений о созда-

нии индекса смотрите описание предложения CONSTRAINT (п. 11 приложения); <составной_индекс> - описание составного индекса, добавляемого к таблице; <имя_индекса> - имя составного индекса, который следует удалить.

Пример.

Удалить поле «Оклад» из таблицы «Сотрудники», которая создана ранее с помощью инструкции CREATE TABLE.

ALTER TABLE Сотрудники DROP COLUMN Оклад;

2. Инструкция CREATE INDEX

Назначение: создание нового индекса для существующей таблицы.

Синтаксис:

CRE1ATE [ UNIQUE ] INDEX <индекс>

ON <таблица> (<поле> [ASC|DESC][, <поле> [ASC|DESC], ...]) [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL}]

Приложение 2. Краткое описание языка SQL в MS Access

719

Аргументы:

<индекс> - имя создаваемого индекса; <таблица> - имя существующей таблицы, для которой создается индекс;

<поле> - имена одного или нескольких полей, включаемых в индекс. Для создания простого индекса (состоящего из одного поля) введите имя поля в круглых скобках сразу после имени таблицы. Для создания составного индекса (состоящий из нескольких полей) перечислите имена всех этих полей. Для расположения элементов индекса в убывающем порядке используйте зарезервированное слово DESC; в противном случае будет принят возрастающий порядок.

Пример.

Создать в таблице «Клиенты» индекс по полю «КодКлиента». В этом поле исключить повторяющиеся и пустые значения.

CREATE UNIQUE INDEX ИндексКлиента ON Клиенты (КодКлиента) WITH DISALLOW NULL;

3. Инструкция CREATE TABLE Назначение: создание новой таблицы.

Синтаксис:

CREATE TABLE <таблица> (

<поле1> < т и п > [(<размер>)] [<индекс1>] [, <поле2> < т и п > [(<размер>)] [<индекс2>] [, ...]] [, <составной_индекс>[, ...]])

Аргументы:

<таблица> - имя создаваемой таблицы; <поле1>, <поле2> - имена одного или нескольких полей, создаваемых в

новой таблице. Таблица должна содержать хотя бы одно поле; <тип> - тип данных поля в новой таблице;

<размер> - размер поля в символах (для текстовых и двоичных полей); <индекс1>, <индекс2> - предложение CONSTRAINT, предназначенное для

создания простого индекса (см. п. 11 приложения);

<составной_индекс> - предложение CONSTRAINT, предназначенное для создания составного индекса (см. п. 11 приложения);

Пример.

Создать новую таблицу «Таблица1» с двумя текстовыми полями и одним целочисленным полем. Поле «Страховка» сделать ключевым.

CREATE TABLE Таблица1 (Имя TEXT, Ф а м и л и я TEXT, С т р а х о в к а INTEGER CONSTRAINT Индекс1 PRIMARY KEY);

4. Инструкция DELETE

Назначение: создание запроса на удаление записей из одной или нескольких таблиц, перечисленных в предложении FROM, которые удовлетворяют

предложению WHERE.

720

Приложения

Синтаксис:

DELEETE [<таблица>.*] FRO VI <таблица>

WHERE < у с л о в и е _ о т б о р а >

Аргументы:

<таблица> - необязательное имя таблицы, из которой удаляются записи; <таблица> - имя таблицы, из которой удаляются записи; <усл овие_отбора> - выражение, определяющее удаляемые записи.

Пример.

Удалить записи о всех сотрудниках, которые занимают должность «Стажер» и имеют запись в таблице «Оплата». Между таблицами «Сотрудники» и «Опл ата» установлена связь 1:1.

D E L E T E С о т р у д н и к и . * F R O M С о т р у д н и к и I N N E R J O I N О п л а т а

O N С о т р у д н и к и . К о д С о т р у д н и к а = О п л а т а . К о д С о т р у д н и к а W H E R E С о т р у д н и к и . Д о л ж н о с т ь = 'Стажер';

5. Инструкция DROP

Назначение: удаление таблицы из базы данных или индекса из таблицы.

Синтаксис:

DROP {TABLE <таблица> | INDEX <индекс> ON <таблица>}

Аргументы:

<таблица> - имя таблицы, которую следует удалить или из которой следует удалить индекс;

<индекс> - имя индекса, удаляемого из таблицы.

Прилер.

Удал ить «Индекс1» из таблицы «Стажеры».

D R O P I N D E X Индекс 1 O N С т а ж е р ы ;

6. Инструкция INSERT INTO

Назначение: добавить запись или записи в таблицу. Эта инструкция обра-

зует запрос на добавление.

Синтаксис:

Запрос на добавление нескольких записей:

INSERT INTO <назначение>

[IN <внешняя_база_данных>] [(<поле1 >[,<поле2>[, ...]])] SELECT [<источник>]<поле1 >[,<поле2>[, ...]

F R O M < в ы р а ж е н и е >

Запрос на добавление одной записи:

INSEIRT INTO <назначение> [(<поле1 >[,<поле2>[, ...]])]

VALUES (<значение1>[, <значение2>[, ...])

Приложение 2. Краткое описание языка SQL в MS Access

721

Аргументы:

<назначение> - имя таблицы или запроса, в которые добавляются записи;

<внешняя_база_данных> - путь к внешней базе данных. Более подробные сведения об этом аргументе находятся в описании предложения IN;

<источник> - имя таблицы или запроса, откуда копируются записи; <поле1>, <поле2> - имена полей для добавления данных, если они следу-

ют за аргументом <назначение>; имена полей, из которых берутся данные, если они следуют за аргументом источник;

<выражение> - имена таблицы или таблиц, откуда вставляются данные. Выражение может быть именем отдельной таблицы или результатом операции I N N E R J O I N , LEFT J O I N или R I G H T J O I N или сохраненным запросом;

<значение1>, <значение2> - значения, добавляемые в указанные поля новой записи. Каждое значение вставляется в поле, занимающее то же положение в списке: <значение1> будет вставлено в <поле1>, <значение2> - в <поле2> и т. п. Каждое значение заключается в кавычки (""); для разделения значений используются запятые.

Пример.

Отобрать все записи из таблицы «Стажеры» для стажеров, принятых на работу более 30 дней назад, и добавить их в таблицу «Сотрудники».

I N S E R T I N T O С о т р у д н и к и S E L E C T С т а ж е р ы . * F R O M С т а ж е р ы W H E R E Д а т а Н а й м а < N o w ( ) - 3 0 ;

7. Инструкция SELECT

Назначение: представить данные из базы данных в виде набора записей.

Синтаксис:

SELECT [<предикат>] {* | <таблица>.* | [<таблица.>]<поле 1>

[AS <псевдоним1>] [, [<таблица>.]<поле2> [AS <псевдоним2>] [, ...]]} FROM <выражение> [, ...] [IN <внешняя_база_данных>]

[WHERE... ]

[ G R O U P B Y . . . ] [ H A V I N G . . . ]

[ O R D E R B Y . . . ]

[ W I T H O W N E R A C C E S S O P T I O N ]

Аргументы:

<предикат> - один из следующих предикатов отбора: A L L , D I S T I N C T , D I S T I N C T R O W или Т О Р . Предикаты используются для ограничения числа возвращаемых записей. Если они отсутствуют, по умолчанию используется предикат ALL.

* - указывает, что выбраны все поля заданной таблицы или таблиц; <таблица> - имя таблицы, из которой должны отбирать записи; <поле1>, <поле2> - имена полей, из которых должны отбирать данные.

722

Приложения

Если включить несколько полей, они будут извлекаться в указанном порядке; <псевдоним1>, <псевдоним2> - имена, которые станут заголовками стол-

бцов вместо исходных названий столбцов в таблице; <выражение> - имена одной или нескольких таблиц, которые содержат

отбираемые данные; <вне шняя_база_данных> - имя базы данных, которая содержит таблицы,

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

Примеры.

Отобрать все поля из таблицы «Сотрудники».

S E L E C T С о т р у д н и к и . * F R O M С о т р у д н и к и ;

Подсчитать число записей, которые содержат непустое значение в поле «Индекс», и присвоить заголовок «Итого» полю, в которое возвращается результат.

S E L E C T С о и n t ( И н д е к с ) A S И т о г о F R O M К л и е н т ы ;

Вывести число сотрудников и их среднюю и максимальную зарплату.

S E L E C T C o u n t ( * ) A S Ч и с л о С о т р у д н и к о в , А у д ( О к л а д ) A S С р е д н и й о к л а д , М а х ( О к л а д ) A S М а к с и м а л ь н ы й о к л а д F R O M С о т р у д н и к и ;

8. Инструкция SELECT...INTO

Назначение: подготовка запроса на создание таблицы. Запрос на создание

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

Синтаксис:

SELECT <поле1>[,<поле2>[, ...]]

I N T O <новая_таблица> [ I N <внешняя_база_данных>] FROM <исгочник>

Аргументы:

<поле1>, <поле2> - имена полей, которые следует скопировать в новую таблицу;

<новая_таблица> - имя создаваемой таблицы. Должно удовлетворять стандартным правилам именования. Если <новая_таблица> совпадает с именем существующей таблицы, возникает устранимая ошибка;

<внешняя_база_данных> - путь к внешней базе данных. Более подробные сведения об этом аргументе приведены в описании предложения IN;

<источник> - имя существующей таблицы, из которой отбираются записи. Это может быть одна таблица, несколько таблиц или запрос.

Примеры.

Создать таблицу с именем «Стажеры» и скопировать в нее записи о всех сотрудниках, имеющих должность «Стажер».