Главная » Просмотр файлов » Диго С.М. Базы данных проектирование и использование

Диго С.М. Базы данных проектирование и использование (1084447), страница 45

Файл №1084447 Диго С.М. Базы данных проектирование и использование (Диго С.М. Базы данных проектирование и использование) 45 страницаДиго С.М. Базы данных проектирование и использование (1084447) страница 452018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 45)

Таблица описывается с помощью оператора CREATE TABLE. Таблица определяется путем задания содержащихся в ней столбцов. Все значения в столбце имеют один и тот же тип данных. При описа­нии таблиц могут задаваться ограничения целостности данных.

В стандарте SQL-92 было определено семь типов данных. Одна­ко большинство из них имеют подтипы с собственными именами, используемыми для задания типа данных при определении таблицы. В SQL-99 введено четыре новых типа данных, причем два из них -составные.

Конкретные реализации СУБД работают с различными типами данных. Причем наблюдаются случаи, когда СУБД не поддерживает некоторые из типов данных, определенных в стандарте SQL, и когда, напротив, содержит типы, которые в стандарт не включены. Исполь­зуемые типы данных и форматы их представления особенно важны при обработке распределенных запросов в гетерогенной среде.

Другая важная характеристика языка - это поддержка неопреде­ленных значений. Некоторые системы позволяют работать с неопре­деленными значениями, другие — нет. Эта характеристика является более значимой, чем может показаться на первый взгляд, поскольку поддержка неопределенных значений означает, кроме прочего, ис­пользование трехзначной логики при обработке значений вместо двузначной.

Структуру существующей таблицы можно изменять с помощью оператора ALTER TABLE.

Таблицы могут быть удалены с помощью оператора DROP TABLE.

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

Метаинформация в SQL-системах хранится также в виде реляци­онных таблиц (базы данных, основанные на таком принципе, называ­ют самоописываемыми).

7.2.2. Ограничения целостности

Декларативное задание ограничений целостности. Ограниче­ния целостности определяют допустимые значения базы данных пу-тем ограничения значений в базовых таблицах. В SQL большая часть ограничений целостности задается при описании таблицы. Возмож­ность декларативного задания ограничений целостности является одним из существенных отличий стандарта SQL-89 и последующих от стандарта SQL-86.

При описании базы данных может быть задан ряд ограничений целостности.

  1. Спецификация уникальности:

  • определение первичного ключа;

  • задание признака уникальности поля/совокупности полей.

  1. Ограничение на столбец:

    • ограничение на неопределенное значение;

    • задание проверочных ограничений на строки таблицы (ограни­чения контроля).

  2. Определение ограничений целостности связей (ссылки между
    таблицами);

К этому типу ограничений примыкает возможность задания зна­чений столбца по умолчанию при занесении строки в таблицу.

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

Определение ограничения уникальности (unique constraint definition) требует, чтобы никакие две строки в таблице не имели оди­наковых значений в указанном столбце или совокупности столбцов.

Это ограничение позволяет определить вероятные ключи табли­цы. Тот из вероятных ключей, который выбран в качестве первично­го, описывается как PRIMARY KEY. Ограничение PRIMARY KEY может использоваться только один раз для каждой таблицы. Осталь­ные вероятные ключи могут быть определены путем использования ограничения UNIQUE.

Спецификация NOT NULL требует, чтобы никакие значения в столбце не были неопределенными значениями.

Для определения ограничения ссылок (referential constraint definition) используются ограничения FOREIGN KEY и REFERENCES. После ключевых слов FOREIGN KEY в круглых скоб­ках указывается список имен описываемой таблицы (ссылающейся таблицы, • порожденной таблицы). После ключевого слова REFERENCES указывается имя таблицы, которая содержит родитель­ский ключ, и далее в круглых скобках - список столбцов, составляю­щих этот первичный ключ. В принципе ссылающаяся таблица может быть той же самой таблицей, что и целевая таблица.

Определение проверочного ограничения (check constraint definition) требует, чтобы указанное в нем условие (search condition) было ис­тинным для каждой строки таблицы.

Момент проверки ограничения целостности зависит от конкрет­ной реализации. Стандарт SQL-92 позволяет определить ограниче­ния таким образом, чтобы они не проверялись до завершения теку­щей транзакции. Вводятся понятия неотложенное и отложенное ограничение целостности. По умолчанию ограничения определяют­ся как неотложенные. Неотложенные ограничения проверяются при выполнении каждого оператора SQL (SQL statement). Если базовая таблица, ассоциированная с ограничением целостности, не удовлет­воряет его условию, то оператор SQL не выполняется.

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

Триггеры обычно ассоциируют с операциями обновления (UPDATE), вставки (INSERT) и удаления (DELETE) в таблице. Триг­геры часто используются для задания различных проверок целост­ности данных при выполнении упомянутых выше операций.

Триггеры не определены в стандарте SQL, но поддерживаются практически во всех SQL-серверах и даже во многих настольных СУБД. Типы возможных триггеров и их синтаксис сильно различа­ются от системы к системе.

7.3. Запросы на выборку

Основным оператором языка SQL, позволяющим осуществлять отбор информации из базы данных, является оператор SELECT, кото­рый в простейшем виде может быть задан следующим образом:

SELECT <список колонок, включаемых в ответ>

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

WHERE <условие>.

Предложения SELECT (отобрать) и FROM (из) должны присут­ствовать обязательно. Условие WHERE (где) может быть опущено. Тогда в ответ войдут все строки, имеющиеся в таблице (если быть точным, то надо иметь в виду, что такой оператор должен соответ­ствовать реляционной операции «проекция», и если в результате про­екции на выбранные столбцы будут появляться дублирующие стро­ки, то они должны быть удалены из ответа; однако SQL позволяет управлять выводом в ответ повторяющихся строк, и можно добиться как вывода только уникальных строк, так и включения в ответ повто­ряющихся строк).

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

Если в ответ должны войти все колонки, имеющиеся в исходной таблице, то вместо их перечисления в SELECT можно поставить знак «*».

Так, например, запрос «Выдать всю информацию из таблицы «Kadr» по сотрудникам, чей возраст (vozr) равен 40 годам» {см. рис.6.1) может быть представлен на SQL следующим образом:

SELECT * FROM kadr WHERE vozr=40;

Условие, задаваемое в предложении WHERE, может быть про­стым и сложным. Для формулирования сложного условия могут быть использованы логические операторы AND и OR. Так, например, зап­рос «Выдать всю информацию из таблицы «Kadr» по мужчинам, чей возраст равен 40 годам» (т.е. пол=«мужской » И «возраст=40 лет ») может быть представлен на SQL следующим образом:

SELECT * FROM kadr WHERE vozr = 40 AND pol = "м";

Оператор SELECT оперирует над множествами и результатом обработки в общем случае является множество строк. К этим множе­ствам могут быть применены теоретико-множественные операции объединение (UNION), пересечение (INTERSECTION), разность (DIFFERENCE, MINUS, EXCEPT) и др. В разных реализациях языка SQL наборы теоретико-множественных операций различаются.

Язык SQL позволяет запрашивать вычисляемые значения. В этом случае в предложении SELECT указывается выражение для вычисле­ния значения колонки. Например, в приведенном ниже предложении запрашивается вывод стоимости поставленных товаров путем ее вы­числения на основе хранящихся в таблице «Postypl» данных о коли­честве (kolv) поставленных товаров и их цены {репа):

SELECT naimprod, datapost, kolv*cena

FROM postypl;

Запрос может быть простым, состоящим из одного оператора SELECT, и вложенным, когда один оператор SELECT включается в состав другого оператора. Этот включенный оператор называется подзапросом (subselect) или подчиненным запросом. Существуют два типа вложенных подзапросов: обычный и коррелированный. В обычном подзапросе внутренний запрос выполняется первым, и его результат используется для выполнения основного запроса. В коррелирован­ном подзапросе внешний запрос выполняется первым, и его резуль­тат используется для выполнения внутреннего запроса. Внутренний запрос выполняется для каждой строки, возвращенной внешним зап­росом.

В запросе можно указать упорядоченность ответа по определен­ному признаку (полю, совокупности полей, выражению).

Возможна подгруппировка данных в целях получения подытогов или других обобщающих величин (среднее, минимум, максимум и др.). Набор агрегатных функций отличается в разных системах. В стан­дарт SQL-92 включены следующие агрегатные функции: Count - под­счет, Avg - среднее, Sum - сумма, Мах - максимум, Min - минимум.

В запросе допускается только один уровень группировки. Груп­пировка может осуществляться как по одному полю, так и по сово­купности полей.

При выполнении запроса может возникнуть необходимость со­единения двух или более таблиц. Возможны разные способы задания условия соединения (вложенные запросы, задание условия соедине­ния в предложении WHERE, операция JOIN в предложении FROM). Более подробно эти вопросы будут рассмотрены ниже.

В некоторых реализациях языка SQL отобранные оператором SELECT данные могут быть сохранены в виде таблицы базы данных.

7.4. Возможности корректировки хранимых данных

Хотя SQL первоначально создавался как язык запросов, в настоя­щее время он является комплексным языком запросов-обновлений. Кроме оператора SELECT, позволяющего проводить отбор данных, SQL включает в себя операторы корректировки БД: включение новой записи (INSERT), обновление отдельных полей (UPDATE), удаление записи или группы записей (DELETE).

Операторы языка манипулирования данными SQL могут исполь­зоваться как самостоятельно, так и совместно с операторами других языков манипулирования данными.

7.5. Создание представлений (VIEW)

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

Представление можно рассматривать как хранимый запрос (оно и выражается с помощью запроса). Представление может использо­ваться в запросах наряду с реальными таблицами. Оно упрощает со­здание сложных запросов.

Синтаксис оператора CREATE VIEW различается в реализациях конкретных систем.

7.6. Создание и использование курсоров

Курсор похож на представление в том, что при его определении используется запрос. Когда курсор открыт, он содержит результат этого запроса. Но назначение представления и курсора различно. Курсоры используются только во встроенном SQL.

Курсор создается с помощью команды

DECLARE имя_курсора CURSOR

FOR подзапрос;

Курсоры используются для согласования теоретико-множествен­ного языка SQL и включающих языков, которые являются языками позаписной обработки. Для выборки текущей записи активного мно­жества используется оператор FETCH.

    1. Управление транзакциями

Транзакция представляет собой группу последовательных SQL-операторов, которые переводят базу данных из одного целостного состояния в другое. В случае возникновения какого-либо сбоя (ошиб­ки) результаты аннулируются и обеспечивается «откат» базы данных в исходное состояние.

Способ, каким осуществляется требование начать выполнение транзакции, зависит от конкретной реализации SQL. В стандарте ANSI средств для явной активизации начала работы транзакций не предус­мотрено.

К операторам, позволяющим управлять транзакциями, относятся:

  • COMMIT - завершает выполнение транзакции и пытается за­фиксировать все изменения, вносимые транзакцией;

  • ROLLBACK - используется для того, чтобы отменить все изме­нения, вносимые транзакцией.

В SQL-92 есть еще оператор SET TRANSACTION, который по­зволяет назначить транзакции имя и задать дополнительные свойства транзакции.

Конкретные СУБД иногда включают команды управления тран­закциями, которые не предусмотрены в стандарте.

7.8. Стандартный SQL-92

7.8.1. Создание объектов

Виды объектов

В стандарте SQL-92 определяются следующие виды объектов:

  • Table - таблица;

  • View - представление;

  • Schema ~ схема;

  • Domain - домен;

  • Assertion - утверждение;

  • Character set - набор символов;

  • Collation - последовательность сортировки;

  • Translation - преобразование одного набора символов в другой.

Рассмотрим здесь вопросы создания таблиц и доменов. Создание

Характеристики

Тип файла
Документ
Размер
11,48 Mb
Тип материала
Предмет
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее