Web-доступ к базам данных - (реферат)
p>Вопреки перечисленным различиям, в начале 90-х годов стали появляться коммерческие программы, реализующие переносимость приложений между различными СУБД. Однако в таких программах для каждой из поддерживаемых СУБД требуется специальный конвертер, который генерирует код в соответствии с определенным диалектом SQL, выполняет преобразование типов данных, транслирует коды ошибок и т. д. “Прозрачная” переносимость между различными СУБД, использующими SQL, является основной целью стандарта SQL2 и протокола ODBC. Однако повсеместный, “прозрачный” и унифицированный доступ к базам данных SQL остается делом будущего. Технологии, обеспечивающие сетевой доступ к базам данных

Всемирная Паутина недаром так быстро завоевала широкую популярность среди пользователей Internet, в мире бизнеса, науки, политики и т. д. Основные достижения Web – это простота опубликования информации в сети, удобство и сравнительная унифицированность доступа к документам, наличие на сегодняшний день достаточно развитых средств поиска. Однако в целом способы представления, хранения и поиска информации в WWW относятся к категории информационно-поисковых систем (ИПС). Хотя хранилища данных в узлах Web иногда называют базами данных, этот термин в данном случае можно использовать только в самом широком смысле. Исторически ИПС применялись для хранения слабоструктурированной и редко изменяемой информации. Базы данных в узком смысле – это хранилища структурированной, изменяемой информации, причем информация в базе данных должна всегда находиться в согласованном состоянии. С равным успехом можно хвалить и ругать Web. Можно хвалить Всемирную Паутину за то, что, не выходя из дома, вы можете побывать в любой точке земного шара и посмотреть, что же там происходит. Можно ругать Web за то, что трудно найти действительно актуальную информацию (обычно она устаревшая), за то, что хранилища информации содержат очень много “мусора”, опубликованного непонятно из каких соображений. Но в любом случае интерфейс действительно удобен. Ситуация с базами данных кардинально отличается. Именно базы данных содержат основные знания человечества. В конце двадцатого века с появлением технологии баз данных мы накопили больше информации, чем за всю предыдущую историю. Вся беда в том, что доступ к базам данных (даже к тем, которые содержат полностью открытую информацию) ограничен. Чтобы получить интересующую его информацию, пользователь должен иметь физический доступ к соответствующей СУБД, быть в курсе модели данных, знать схему базы данных и, наконец, уметь пользоваться соответствующим языком запросов. Что касается языка запросов, то проблему частично решает протокол ODBC, позволяющий направлять ограниченный набор операторов SQL (с промежуточной обработкой соответствующим драйвером ODBC) к произвольному серверу баз данных. Но это только частичное решение, поскольку оно никак не помогает пользователю понять схему базы данных (даже в терминах SQL) и, конечно, не способствует созданию унифицированного интерфейса конечного пользователя (нельзя же заставить всех работать в строчном режиме на языке SQL). Итак, мы имеем удобные средства разработки распределенных в Internet гипермедийных документов, простые, удобные, развитые и унифицированные интерфейсы для доступа к информации WWW. Кроме того, мы имеем большое количество ценных баз данных, управляемых разнородными СУБД, а также желание сделать эти базы доступными всем людям (в случае публичных баз данных) или членам территориально-распределенной корпорации (в случае корпоративных баз данных). Возникает естественное желание скрестить эти две технологии и обеспечить доступ к базам данных в интерфейсе Web. Еще два года назад существовали только идеи такого скрещивания и не очень тщательно разработанные подходы к реализации. На сегодняшний день такие механизмы уже существуют и используются. Принципы работы SQL-сервера

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

На рисунке 2. 1 изображена схема работы SQL. Согласно этой схеме, в вычислительной системе имеется база данных, в которой хранится важная информация. Если БД относится к сфере бизнеса, то в ней может храниться информация о материальных ценностях, выпускаемой продукции, объемах продаж и зарплате. В базе данных на персональном компьютере может храниться информация о выписанных чеках, телефонах и адресах или информация, извлеченная из более крупной вычислительной системы. Компьютерная программа, которая управляет базой данных, называется системой управления базой данных, или СУБД. Если пользователю необходимо прочитать данные из базы данных, он запрашивает их у SQL с помощью СУБД. SQL обрабатывает запрос, находит требуемые данные и посылает их пользователю. Процесс запрашивания данных и получения результата называется запросом к базе данных: отсюда и название — структурированный язык запросов. Однако это название не совсем соответствует действительности. Cегодня SQL представляет собой нечто гораздо большее, чем простой инструмент создания запросов, хотя именно для этого он и был первоначально предназначен. Несмотря на то, что чтение данных по-прежнему остается одной из наиболее важных функций SQL, сейчас этот язык используется для реализации всех функциональных возможностей, которые СУБД предоставляет пользователю, а именно: Организация данных. SQL дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между элементами базы данных. Чтение данных. SQL дает пользователю или приложению возможность читать из базы данных содержащиеся в ней данные и пользоваться ими. Обработка данных. SQL дает пользователю или приложению возможность изменять базу данных, т. е. добавлять в нее новые данные, а также удалять или обновлять уже имеющиеся в ней данные. Управление доступом. С помощью SQL можно ограничить возможности пользователя по чтению и изменению данных и защитить их от несанкционированного доступа. Совместное использование данных. SQL координирует совместное использование данных пользователями, работающими параллельно, чтобы они не мешали друг другу. Целостность данных. SQL позволяет обеспечить целостность базы данных, защищая ее от разрушения из-за несогласованных изменений или отказа системы. Таким образом, СУБД является достаточно мощным средством для взаимодействия с SQL.

    Основными объектами реляционной базы данных являются:
    (TABLE) Таблица

Прямоугольная таблица, состоящая из СТРОК и СТОЛБЦОВ. Задать таблицу – значит указать, из каких столбцов она состоит. (ROW) Строка

Запись, состоящая из полей – столбцов. В каждом поле содержится его значение, либо значение NULL – “пусто”. Строк в таблице может быть сколько угодно. Физический порядок их расположения друг относительно друга неопределен. (COLUMN) Столбец

    Каждый столбец в таблице имеет собственные имя и тип.
    Таблицы SQL

В реляционной базе данных информация организована в виде таблиц, разделённых на строки и столбцы, на пересечении которых содержатся значения данных. Используемые в языке SQL для запросов сочетания ключей (CREATE TABLE my_table – создание таблицы с названием my_table) получили название “предложение”. Таблицы создаются в SLQ с помощью предложения CREATE TABLE. Предложение CREAT TABLE специфицирует имя базовой таблицы, которая должна быть создана, имена ее столбцов и типы данных для этих столбцов. CREAT TABLE – выполняемое предложение. Если SQL-серверу дать запрос CREATE TABLE, система построит таблицу, которая сначала будет пустой: она будет содержать только строку заголовков столбцов, но не будет еще содержать никаких строк с данными. Информация в таблицу вставляется при помощи предложения команды INSERT Структура запросов SQL.

Все запросы на получение практически любых данных из одной или нескольких таблиц выполняются с помощью единственного предложения SELECT. В синтаксических конструкциях для обращения к БД используются следующие обозначения: звездочка (*) для обозначения “все” – употребляется в обычном для программирования смысле, т. е. “все случаи, удовлетворяющие определению”; квадратные скобки ([]) – означают, что конструкции, заключенные в эти скобки, являются необязательными (т. е. могут быть опущены); фигурные скобки ({}) – означают, что конструкции, заключенные в эти скобки, должны рассматриваться как целые синтаксические единицы, т. е. они позволяют уточнить порядок разбора синтаксических конструкций, заменяя обычные скобки, используемые в синтаксисе SQL; многоточие (…) – указывает на то, что непосредственно предшествующая ему синтаксическая единица факультативно может повторяться один или более раз; прямая черта (|) – означает наличие выбора из двух или более возможностей. Например, обозначение ASC|DESC указывает, можно выбрать один из терминов ASC или DESC; когда же один из элементов выбора заключен в квадратные скобки, то это означает, что он выбирается по умолчанию (так, [ASC]|DESC означает, что отсутствие всей этой конструкции будет восприниматься как выбор ASC); точка с запятой (; ) – завершающий элемент предложений SQL;

запятая (, ) – используется для разделения элементов списков; пробелы ( ) – могут вводиться для повышения наглядности между любыми синтаксическими конструкциями предложений SQL; жирные прописные латинские буквы и символы – используются для написания конструкций языка SQL и должны (если это специально не оговорено) записываться в точности так, как показано-……...; строчные буквы используются для написания конструкций, которые должны заменяться конкретными значениями, выбранными пользователем, причем для определенности отдельные слова этих конструкций связываются между собой символом подчеркивания (_); термины “таблица” и “столбец” заменяют (с целью сокращения текста синтаксических конструкций) термины “имя_таблицы”, “имя_столбца”, …, соответственно; термин “таблица” - используется для обобщения таких видов таблиц, как базовая_таблица, представление или псевдоним; здесь псевдоним служит для временного (на момент выполнения запроса) переименования и (или) создания рабочей копии базовой_таблицы (представления). Предложение SELECT (выбрать) имеет следующий формат:

    подзапрос [UNION [ALL] подзапрос] …

[ORDER BY [таблица. ]столбец [[ASC] | DESC] [, номер_элемента_SELECT [[ASC] | DESC]] …;

и позволяет объединить (UNION) а затем упорядочить (ORDER BY) результаты выбора данных, полученных с помощью нескольких “подзапросов”. При этом упорядочение можно производить в порядке возрастания – ASC (ASCending) или убывания DESC (DESCending), а по умолчанию принимается ASC. В этом предложении подзапрос позволяет указать условия для выбора нужных данных и (если требуется) их обработки SELECT

(выбрать) данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствии с указанными выражениями и (или) функциями FROM

(из) перечисленных таблиц, в которых расположены эти столбцы WHERE

(где) строки из указанных таблиц должны удовлетворять указанному перечню условий отбора строк GROUP BY

(группируя по) указанному перечню столбцов с тем, чтобы получить для каждой группы единственное агрегированное значение, используя во фразе SELECT SQL-функции SUM (сумма), COUNT (количество), MIN (минимальное значение), MAX (максимальное значение) или AVG (среднее значение) HAVING

(имея) в результате лишь те группы, которые удовлетворяют указанному перечню условий отбора групп и имеет формат

SELECT [[ALL] | DISTINCT] элемент_SELECT [, элемент_SELECT] … FROM представление [псевдоним]

    [, представление [псевдоним]] …
    [WHERE фраза]
    [GROUP BY фраза [HAVING фраза]];
    Элемент_SELECT – это одна из следующих конструкций:

[таблица. ]* | значение | SQL_функция | системная_переменная где значение – это:

    [таблица. ]столбец | (выражение) | константа | переменная
    Синтаксис выражений имеет вид

( * … )

    а синтаксис SQL_функций – одна из следующих конструкций:

COUNT ( [[ALL]|DISTINCT][таблица. ]столбец )

    SUM ( [ALL] выражение )
    COUNT(*)
    Фраза WHERE включает набор условий для отбора строк:
    WHERE [NOT] WHERE_условие [[AND|OR][NOT] WHERE_условие]…
    где WHERE_условие – одна из следующих конструкций:

значение < значение

    значение_1 [NOT] BETWEEN значение_2 AND значение_3

значение [NOT] IN ( константа [, константа]… )

    значение IS [NOT] NULL

[таблица. ]столбец [NOT] LIKE 'строка_символов' [ESCAPE 'символ']

    EXISTS ( подзапрос )

Кроме традиционных операторов сравнения (= | <> | < | | >=) в WHERE фразе используются условия BETWEEN (между), LIKE (похоже на), IN (принадлежит), IS NULL (не определено) и EXISTS (существует), которые могут предваряться оператором NOT (не). Критерий отбора строк формируется из одного или нескольких условий, соединенных логическими операторами: AND

когда должны удовлетворяться оба разделяемых с помощью AND условия; OR

когда должно удовлетворяться одно из разделяемых с помощью OR условий; AND NOT

когда должно удовлетворяться первое условие и не должно второе; OR NOT

когда или должно удовлетворяться первое условие или не должно удовлетворяться второе, причем существует приоритет AND над OR (сначала выполняются все операции AND и только после этого операции OR). Для получения желаемого результата WHERE условия должны быть введены в правильном порядке, который можно организовать введением скобок. При обработке условия числа сравниваются алгебраически – отрицательные числа считаются меньшими, чем положительные, независимо от их абсолютной величины. Строки символов сравниваются в соответствии с их представлением в коде, используемом в конкретной СУБД, например, в коде ASCII. Если сравниваются две строки символов, имеющих разные длины, более короткая строка дополняется справа пробелами для того, чтобы они имели одинаковую длину перед осуществлением сравнения. Наконец, синтаксис фразы GROUP BY имеет вид

GROUP BY [таблица. ]столбец [, [таблица. ]столбец] … [HAVING фраза]

GROUP BY инициирует перекомпоновку формируемой таблицы по группам, каждая из которых имеет одинаковое значение в столб-цах, включенных в перечень GROUP BY. Далее к этим группам применяются агрегирующие функции, указанные во фразе SELECT, что приводит к замене всех значений группы на единственное значение (сумма, количество и т. п. ). С помощью фразы HAVING (синтаксис которой почти не отличается от синтаксиса фразы WHERE)

    HAVING [NOT] HAVING_условие [[AND|OR][NOT] HAVING_условие]…

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

значение = ( подзапрос )

     SQL_функция_1 [NOT] BETWEEN

значение_2 AND значение_3

SQL_функция [NOT] IN ( подзапрос )

     SQL_функция IS [NOT] NULL

[таблица. ]столбец [NOT] LIKE 'строка_символов' [ESCAPE 'символ']

    EXISTS ( подзапрос )
    2. 2. 2. Запросы с использованием единственной таблицы.
    Выборка без использования фразы WHERE
    Простая выборка
    Запрос выдать название, статус и адрес поставщиков
    SELECT Название, Статус, Адрес
    FROM Поставщики;
    дает результат, приведенный на рис. 2. 2, а.

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

    SELECT ПС, Название, Статус, Город, Адрес, Телефон
    FROM Поставщики;
    или использовать его более короткую нотацию:
    SELECT *
    FROM Поставщики;

Здесь “звездочка” (*) служит кратким обозначением всех имен полей в таблице, указанной во фразе FROM. При этом порядок вывода полей соответствует порядку, в котором эти поля определялись при создании таблицы. Еще один пример. Выдать основу всех блюд:

    SELECT Основа
    FROM Блюда;
    дает результат, показанный на рис. 2. 2, б.
    а)
    б)
    в)
    Название
    Статус
    Адрес
    Основа
    Основа
    Овощи
    Кофе
    Мясо
    Крупа
    СЫТНЫЙ
    Рынок
    Сытнинская, 3
    Овощи
    Молоко
    ПОРТОС
    Кооператив
    Садовая, 27
    Рыба
    Мясо
    ШУШАРЫ
    Совхоз
    Новая, 17
    Рыба
    Овощи
    ТУЛЬСКИЙ
    Универсам
    Тульская, 3
    Мясо
    Рыба
    УРОЖАЙ
    Коопторг
    Песчаная, 19
    Молоко
    Фрукты
    ЛЕТО
    Агрофирма
    Пулковское ш. ,8
    Молоко
    Яйца
    ОГУРЕЧИК
    Ферма
    Укмерге, 15
    …
    КОРЮШКА
    Кооператив
    Нарвское ш. , 64
    Кофе
    Рисунок 1. 2
    Исключение дубликатов

В предыдущем примере был выдан правильный, но не совсем удачный перечень основных продуктов: из него не были исключены дубликаты. Для исключения дубликатов и одновременного упорядочения перечня необходимо дополнить запрос ключевым словом DISTINCT (различный, различные), как показано в следующем примере:

    SELECT DISTINCT Основа
    FROM Блюда;
    Результат приведен на рис. 2. 2, в.
    Выборка вычисляемых значений

Из синтаксиса фразы SELECT видно, что в ней может содержаться не только перечень столбцов таблицы или символ *, но и выражения. Например, если нужно получить значение калорийности всех продуктов, то можно учесть, что при окислении 1 г углеводов или белков в организме освобождается в среднем 4. 1 ккал, а при окислении 1 г жиров – 9. 3 ккал, и выдать запрос:

    SELECT Продукт, ((Белки+Углев)*4. 1+Жиры*9. 3)
    FROM Продукты;
    результат которого приведен на рис. 2. 3, а.
    а)
    Б)
    в)
    Продукт
    Продукт
    Продукт
    Говядина
    1928. 1
    Говядина
    Калорий =
    1928. 1
    Зелень
    118. 9
    Судак
    1523.
    Судак
    Калорий =
    1523.
    Помидоры
    196. 8
    Масло
    8287. 5
    Масло
    Калорий =
    8287. 5
    Морковь
    349. 6
    Майонез
    6464. 7
    Майонез
    Калорий =
    6464. 7
    Лук
    459. 2
    Яйца
    1618. 9
    Яйца
    Калорий =
    1618. 9
    Яблоки
    479. 7
    Сметана
    3011. 4
    Сметана
    Калорий =
    3011. 4
    Молоко
    605. 1
    Молоко
    605. 1
    Молоко
    Калорий =
    605. 1
    Кофе
    892. 4
    Творог
    1575.
    Творог
    Калорий =
    1575.
    Судак
    1523.
    Морковь
    349. 6
    Морковь
    Калорий =
    349. 6
    Творог
    1575.
    Лук
    459. 2
    Лук
    Калорий =
    459. 2
    Яйца
    1618. 9
    Помидоры
    196. 8
    Помидоры
    Калорий =
    196. 8
    Говядина
    1928. 1
    Зелень
    118. 9
    Зелень
    Калорий =
    118. 9
    Сметана
    3011. 4
    Рис
    3512. 1
    Рис
    Калорий =
    3512. 1
    Рис
    3512. 1
    Мука
    3556. 7
    Мука
    Калорий =
    3556. 7
    Мука
    3556. 7
    Яблоки
    479. 7
    Яблоки
    Калорий =
    479. 7
    Сахар
    4091. 8
    Сахар
    4091. 8
    Сахар
    Калорий =
    4091. 8
    Майонез
    6464. 7
    Кофе
    892. 4
    Кофе
    Калорий =
    892. 4
    Масло
    8287. 5
    Рисунок 2. 2

Страницы: 1, 2, 3, 4, 5



Реклама
В соцсетях
рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать