![](/user_photo/8997_nLds_.jpg)
Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009
.pdf714 |
Часть 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;
<источник> - имя существующей таблицы, из которой отбираются записи. Это может быть одна таблица, несколько таблиц или запрос.
Примеры.
Создать таблицу с именем «Стажеры» и скопировать в нее записи о всех сотрудниках, имеющих должность «Стажер».