Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Ограничение целостности в БД



Целостность (от англ. integrity - нетронутость, неприкосновенность, сохранность, целостность) - понимается как правильность данных в любой момент времени. Но эта цель может быть достигнута лишь в определенных пределах: СУБД не может контролировать правильность каждого отдельного значения, вводимого в базу данных (хотя каждое значение можно проверить на правдоподобность). Например, нельзя обнаружить, что вводимое значение 5 (представляющее номер дня недели) в действительности должно быть равно 3. С другой стороны, значение 9 явно будет ошибочным и СУБД должна его отвергнуть. Однако для этого ей следует сообщить, что номера дней недели должны принадлежать набору (1, 2, 3, 4, 5, 6, 7).

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

Выделяют три группы правил целостности:

1. Целостность по сущностям.

2. Целостность по ссылкам.

3. Целостность, определяемая пользователем.

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

1. Не допускается, чтобы какой-либо атрибут, участвующий в первичном ключе, принимал неопределенное значение.

2. Значение внешнего ключа должно либо:

1. быть равным значению первичного ключа цели;

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

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

уникальность тех или иных атрибутов,
диапазон значений (экзаменационная оценка от 2 до 5),
принадлежность набору значений (пол " М" или " Ж" ).

Разработка форм, запросов, отчетов.

Создание запросов

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

В данной курсовой работе созданы 2 запроса на выборку.

Запрос 1 дает сведения о цене товаров, он изображён на рисунке 6. Он позволяет упростить поиск товара по его коду.

Рисунок 6 - Запрос по цене товара

В запросе 2 отражены сведения о покупателях, можно увидеть на рисунке 7.

Запрос позволяет узнать информацию о покупателях, его адрес, телефон, а также код.

Рисунок 7 - Запрос " Сведения о покупателе"

Создание отчетов

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

Отчет " Сведения о покупателях" содержит информацию о покупателях: код, наименование, адрес, город, страну и телефон.

 

Таблица: Сведения о покупке

Отчет " Товары" дает наиболее полную информацию о данных товарах, содержит информацию: код поставщика, наименование, код товара, единица измерения, цена и количество товаров на складе.

Таблица: Товары

Создание форм

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

Формы созданы с помощью мастера создания форм.

Форма " Заказы" содержит сведения о коде товара, покупателя, количестве заказанных товаров и цене товара, она изображена на рисунке 8 и на рисунке 9.

Рисунок 8 - Форма " Заказы"


Рисунок 9 - Форма " Заказы"

 


 

3.Разработка SQL – запросов

3.1 Общая характеристика языка SQL

Язык запросов SQL основан на операциях реляционной алгебры и, таким образом ориентирован на работу с множествами (отношениями), а не с отдельными записями. Как и в реляционной алгебре, операндами языка являются отношения (таблицы), результатами выполнения операции также являются отношения (таблицы). Таким образом, язык SQL предназначен для выполнения операций над таблицами, причем как над таблицами в целом (создание, удаление, изменение структуры), так и над данными таблиц (выборка, изменение, добавление и удаление). Отметим, что в явном виде язык SQL не является универсальным языком программирования в обычном понимании. В нем отсутствуют операторы условного перехода, организации циклов, позволяющие управлять ходом выполнения программы. Поэтому язык SQLотносится к классу непроцедурных языков программирования. Это именно язык запросов к базе данных, который служит исключительно для организации базы данных и работы с ней. Как уже отмечалось выше, для разработки прикладных программ необходимо использовать другие базовые средства программирования, в который операторы языка SQL будут встраиваться. Языку SQL посвящено большое количество литературы, в том числе и учебников. Подробное изучение языка SQL не входит в задачи настоящего курса, это может занимать отдельный курс. Заметим, что этому языку посвящено большое количество литературы, в том числе и учебников. В связи с этим, здесь будут изложены только общие сведения о языке, как фундаментальном инструменте работы с базами данных.

3.2 Обзор основных операторов языка SQL

Операторы SQL делятся на:

операторы определения данных (Data Definition Language, DDL):

CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.),

ALTER изменяет объект,

DROP удаляет объект;

операторы манипуляции данными (Data Manipulation Language, DML):

SELECT выбирает данные, удовлетворяющие заданным условиям,

INSERT добавляет новые данные,

UPDATE изменяет существующие данные,

DELETE удаляет данные;

операторы определения доступа к данным (Data Control Language, DCL):

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

REVOKE отзывает ранее выданные разрешения,

DENY задает запрет, имеющий приоритет над разрешением;

операторы управления транзакциями (Transaction Control Language, TCL):

COMMIT применяет транзакцию,

ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,

SAVEPOINT делит транзакцию на более мелкие участки.

Создание SQL – запросов и запросы на выборку данных.

3.3 Создание SQL – запросов

Пусть у нас имеется некая база данных bd.mdb имеющая три таблицы products, ed_izmer, storage.


И мне необходимо составить запрос к базе на выборку всех продуктов из таблицы storage с подстановкой наименования продукта, единицы измерения, количества, цены и суммы.
Открываем базу в MS Access 2003 – 2007, переходим на вкладку Создание-> Конструктор запросов


и видим следующее окно.


В этом окне необходимо выбрать таблицы, которые будут использоваться в запросе. В нашем случае добавляем все три таблицы и закрываем окно.


Теперь создаем связи между таблицами, делается это перетаскивание соответствующего пункта из одной таблицы на соответствующий пункт другой таблицы. В нашем случае мы перетаскиваем поле id из ed_izmer на поле id_ed_izmer таблицы storage. Аналогично поле id из products на поле id_product таблицы storage.


Далее жмем правую кнопку мыши на полученной связи, и выбираем пункт « Параметры объединения».


 

Устанавливаем нужный вариант объединения и жмем OK. Делаем аналогичную операцию с другой связью.

 


Теперь переходим к нижней части конструктора запросов


И заполняем, как показано на рисунке


В первый столбец вводим имя таблицы -> products, поле product_name.
Во второй имя таблицы -> ed_izmer, поле ed_name.
В третий имя таблицы -> storage, поле quantity.
В четвертый имя таблицы -> storage, поле price.
В пятый столбец вводим формулу для вычисления суммы.
Формулы вводятся следующим образом: в начале идет имя поля (придумываем сами), затем двоеточие, а затем формула в виде [имя таблицы1].[имя поля]знак операции[имя таблицы2].[имя поля].

В нашем случае вводим следующую формулу:

сумма: [storage].[quantity]*[storage].[price]

на этом запрос готов жмем на крестик и сохраняем запрос.


Жмем на созданном запросе и проверяем работоспособность.


Если все работает, переходим в режим SQL, для этого нажимаем правой кнопкой мыши на вкладке Запрос1 и выбираем Режим SQL.


Копируем полученный запрос и вставляем его в поле SQL -> TStrings компонента ADOQuery в Delphi. Или используем программно:

ADOQuery.Active: =false;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT products.product_name, ed_izmer.ed_name, storage.quantity, storage.price, [storage].[quantity]*[storage].[price] AS сумма
FROM ed_izmer RIGHT JOIN (products RIGHT JOIN storage ON products.id=storage.id_product) ON ed_izmer.id=storage.id_ed_izmer; ');
ADOQuery.Active: =True;

Если запрос очень длинный то его можно разбить, например, так:

ADOQuery.SQL.Add('SELECT products.product_name, '+
' ed_izmer.ed_name, storage.quantity, storage.price, '+
' [storage].[quantity]*[storage].[price] AS сумма'+
' FROM ed_izmer RIGHT JOIN (products RIGHT JOIN storage ON products.id=storage.id_product)'+
' ON ed_izmer.id=storage.id_ed_izmer; ');
Либо использовать ADOQuery.SQL.Add('части запроса') несколько раз.

Можно делать и обратное преобразование запроса SQL. Берем готовый SQL запрос, копируем его в конструктор запросов MS Access в режиме SQL, затем переключаемся в режим конструктора и изучаем какие таблицы, поля, связи, выражения входят в запрос. Если надо, то вносим изменения.

Ну и на последок немножко о синтаксисе запроса:

Слово select в запросе означает создание выборки. Эта команда имеет вот такой синтаксис:
select [список полей] from [список таблиц и их соединения]
Поля в списке полей перечисляются через запятую.
Синтаксис описания поля такой:
[Имя таблицы].[Имя поля] AS [Имя поля в выборке]
После последнего поля из списка запятая не ставиться.

 

3.3.1. Запросы на выборку данных


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-06-05; Просмотров: 934; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.036 с.)
Главная | Случайная страница | Обратная связь