SELECT orderid, SUM(quanitty*unitperice)
FROM item. Stock
WHERE item.stockid=stock.id
GROUP BY orderid
ORDER BY orderid
ORDERID SUM(QUANTITY*UNITPRICE)
------------- ---------------------------------------
1 265.87
2 82.14
.
.
.
Как можно видеть, второй запрос намного эффективнее, чем первый, так как для вычислений на сервере и передачи данных по сети он использует комбинацию операторов SQL, SQL- функции Oracle7(SUM) и оператора GROUP BY.
Этот простой пример показывает, как в среде клиент/сервер для уменьшения сетевого трафика можно использовать SQL и SQL-функцки, что для создания хорошего клиентного приложения базы данных разработчики должны быть знакомы с SQL. (Подробнее о SLQ и SQL-функциях рассказывается в главе 5 и приложении А.)
Что такое сервер базы данных?
Каждая версия сервера базы данных Oracle поддерживает связь по сети с клиентами с помощью SQL*Net. Однако Oracle7 —это первая версия сервера Oracle. имеющая собственные средства для обеспечения работы клиент/сервер, уменьшающие сетевой ввод-вывод между клиентными приложениями и серверами. В следующих разделах рассматриваются средства Oracle7, которые разработчики могут с успехом использовать в системах клиент/сервер.
Ограничения целостности
Все клиентные приложения должны придерживаться совокупности заранее определенных правил целостности данных и правил функционирования, обеспечивающих допустимость данных базы. (Эти вопросы подробнее рассматриваются в главе 2.) Разработчики приложений могут ввести простое правило обеспечения целостности двумя способами:
· Позволяя приложению выполнять проверку целостности
· Используя ограничения целостности Oracle7.
Выполнение проверки целостности приложением Предположим, например, что вы хотите, чтобы все транзакции вставляли новые заказы таким образом, чтобы идентификатор заказчика в каждом заказе совпадал с допустимым идентификатором заказчика в таблице CUSTOMER. Это называется простой ссылочной целостностью. Один из способов введения правила ссылочной целостности состоит в том. что приложение само должно выполнять проверку целостности. Во-первых. транзакции приложения могут опрашивать базу данных, чтобы убедиться в наличии заказчика в таблице CUSTOMER. Если запрос находит заказчика, он должен затем на время выполнения транзакции блокировать соответствующую строку. обеспечивая тем самым сохранение заказчика до включение нового заказа. Наконец. транзакция может благополучно вставлять новую строку, используя проверенный идентификатор заказчика и завершая транзакцию для снятия с таблицы CUSTOMER блокировки. Приведем анонимный блок PL/SQL, демонстрирующий код клиентной стороны с обеспечением ссылочной целостности:
DECLARE
flag INTEGER;
BEGIN
SELECT id INTO flag
FROM customer
WHERE id = 3
FOR UPDATE OF id;
IF SQL%FOUND THEN
INSERT INTO orders
VALUES (5, 3, SYSDATE, null, null, ‘F');
-другие операции приложения
COMMIT;
END IF;
END;
Этот процесс — лишь один из методов, который вы можете использовать для задания в приложении ссылочной целостности. Как можно видеть, причем в любом случае затрачивается много времени на передачу данных по сети.
Использование ограничений целостности Oracle7По нескольким причинам лучшим способом задания правил ссылочной целостности является использование ограничений ссылочной целостности 0гас1е7. С этой целью вы можете легко задать ограничения целостности вместе с определением таблицы. Так как для задания правил ссылочной целостности разработчикам ненужно создавать, тестировать и отлаживать сложную логику целостности данных, они смогут работать более продуктивно. Во-вторых, ограничение ссылочной целостности — это централизованный метод задания правила ссылочной целостности. Таким образом, Oracle7 вынуждает все приложения придерживаться одного и того же правила целостности. (Если проверку целостности выполняет приложение, разработчикам в каждом приложении приходится создавать, тестировать и отлаживать одну и ту же логику целостности, данных.) Наконец, так как Oracle7 вводит ограничения целостности без создания сетевого ввода-вывода, производительность системы клиент/сервер не страдает из-за дополнительного сетевого доступа. Подробнее обограничениях целостности и целостности данных рассказывается в главе 2. которая знакомит вас с некоторыми типами ограничений, и главе 15, где поясняется, как задавать ограничения ссылочной целостности для таблиц базы данных 0гас1е7.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.