Главная страница
Навигация по странице:

  • Рис. 1.11. Связь отношений с помощью внешнего ключа

  • Язык запросов по образцу

  • Структурированный язык запросов

  • Компьютерная безопасность. Тема 3и. Основы построения баз данных Базы данных и информационные системы


    Скачать 250 Kb.
    НазваниеОсновы построения баз данных Базы данных и информационные системы
    АнкорКомпьютерная безопасность
    Дата20.12.2019
    Размер250 Kb.
    Формат файлаdoc
    Имя файлаТема 3и.doc
    ТипДокументы
    #101282
    страница5 из 5
    1   2   3   4   5

    1.5.Обеспечение целостности БД


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

    Первый тип ограничений целостности предполагает контроль значений атрибутов отношений Например, значения атрибута Дата_рождения не могут превышать значений атрибута Дата_приема в записях отношений о кадрах.

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

    Формулировка второго требования тесно связана с понятием внешнего ключа. Напомним, что внешние ключи служат для связи отношений (таблиц БД) между собой. При этом атрибут одной таблицы, назовем ее родительской, служащий для связи ее с другой таблицей - дочерней, в которой он является первичным ключом, называется внешним ключом данного отношения (таблицы). Говорят, что отношение, в котором определен внешний ключ, ссылается на отношение, в котором этот же атрибут является первичным ключом.

    Требование целостности по ссылкам, состоит в том, что для каждого значения внешнего ключа родительской таблицы должна найтись строка в дочерней таблице с таким же значением первичного ключа. Например, если в отношении О1 (Рис. 1.11) содержатся сведения о сотрудниках кафедры, а атрибут этого отношения Должн является первичным ключом отношения О2, то в этом отношении для каждой должности из О1 должна быть строка с соответствующим ей окладом.
    Родительская таблица Дочерняя таблица

    R1 R2

    ФИО

    Должн

    Каф

    Стаж




    Должн

    Оклад

    Иванов И.М.

    преп

    25

    5




    Преп

    500

    Петров М.И.

    ст.преп

    25

    7




    ст.преп

    800

    Сидоров Н.Г.

    преп

    25

    10




    Ключ




    Егоров В.В.

    Преп

    24

    5










    Ключ Внешний

    ключ

    Рис. 1.11. Связь отношений с помощью внешнего ключа

    1.6. Языки запросов QBE и SQL


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

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

    Для подготовки запросов с помощью различных СУБД, как правило, используются два основных языка описания запросов:

    • язык QBE (Query By Example) - язык запросов по образцу;

    • SQL (Structured Query Language) - структурированный язык запросов.

    По возможностям манипулирования данными при описании запросов указанные языки практически эквивалентны. Главное отличие между нии, по-видимому, заключается в способе формирования запросов: язык QBE предполагает ручное или визуальное формирование запроса, в то время как использование SQL означает программирование запроса.

    Язык запросов по образцу

    Язык QBE позволяет задавать сложные запросы к БД путем заполнения предлагаемой СУБД запросной формы. Такой способ задания запросов обеспечивает высокую наглядность и не требует указания алгоритма выполнения операции - достаточно описать образец ожидаемого результата. В каждой из современных реляционных СУБД имеется свой вариант языка QBE.

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

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

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

    Во многих современных СУБД, например, в Access и Visual FoxPro, многие действия по подготовке запросов с помощью языка QBE выполняются визуально с помощью мыши. В частности, визуальное связывание таблиц при подготовке запроса выполняется не элементами примеров, а просто "протаскиванием" мышью поля одной таблицы к полю другой.

    Структурированный язык запросов

    Структурированный язык запросов SQL основан на реляционном исчислении с переменными кортежами. Язык имеет несколько стандартов, наиболее распространенными из которых являются SQL-89 и SQL-92.

    SQL предназначен для выполнения операций над таблицами (создание, удаление, изменение структуры) и над данными таблиц (выборка, изменение, добавление и удаление), а также некоторых сопутствующих операций. SQL является непроцедурным языком и не содержит имеющихся в обычных языках программирования операторов управления, организации подпрограмм, ввода-вывода и т.п. В связи с этим SQL автономно не используется, а обычно погружен в в среду встроенного языка программирования СУБД (например, языка FoxPro СУБД Visual FoxPro) или даже процедурного языка типа С++ или Pascal.

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

    К числу основных операторов усеченного подмножества SQL относятся следующие:

    CREATE TABLE - создание таблицы;

    DROP TABLE - удаление таблицы;

    CREATE INDEX - создание индекса;

    DROP INDEX - удаление индекса;

    ALTER TABLE - изменение структуры таблицы;

    SELECT, UPDATE, INSERT, DELETE - выборка, изменение, вставка и удаление записей.

    К дополнительным операторам SQL относятся следующие:

    CREATE DATABASE, SHOW DATABASE, START DATABASE, STOP DATABASE, DROP DATABASE - создание, просмотр, активизация, закрытие, удаление БД;

    CREATE VIEW, DROP VIEW - создание, удаление выборки (представления);

    CREATE SYNONYM - создание синонима;

    GRANT, REVOKE - назначение, удаление привилегии для работы с выборками и таблицами.

    Рассмотрим подробнее важнейший из перечисленных операторов - оператор SELECT. В упрощенном виде оператор имеет следующий формат:

    SELECT [ALL|DISTINCT]

    <список данных>

    FROM <список таблиц>

    [WHERE <условие выборки>]

    [GROUP BY <имя столбца> [, <имя столбца>]...]

    [HAVING <условие поиска>]

    [ORDER BY <спецификация сортировки>[,<спецификация сортировки>]...]

    Оператор SELECT позволяет выполнять выборку и вычисления над данными одной или нескольких таблиц. Результатом выполнения оператора является ответная таблица, которая может иметь (ALL) или не иметь (DISTINCT) повторяющиеся строки.

    В списке данных можно задавать имена столбцов и выражения над ними, к примеру арифметические. Если записи отбираются из нескольких таблиц, то используют составные имена <имя таблицы>.<имя столбца>.

    Пример. Имеется таблица Goods (товары) с полями: Code (код), Name (наименование) и Cost (стоимость). Требуется вывести стоимости и коды товаров, стоимость которых не превышает 500 единиц.

    Для решения поставленной задачи можно записать оператор SELECT следующим образом:

    SELECT Code, Cost

    FROM Goods

    WHERE Cost <=500

    В различных СУБД состав операторов SQL может несколько отличаться от рассмотренного нами.
    1   2   3   4   5


    написать администратору сайта