Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Топ:
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Интересное:
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
2019-07-12 | 329 |
5.00
из
|
Заказать работу |
|
|
Между таблицами в базе данных могут быть установлены связи. Эти связи задаются как ограничения ссылочной целостности данных. При попытке добавить, изменить или удалить записи в связанных таблицах могут возникнуть так называемые аномалии модификации данных, обусловленные нарушением ссылочной целостности.
Целостность данных может быть нарушена при попытке добавить запись в дочернюю таблицу, для которой нет соответствующей записи в родительской таблице. Например, в базе данных имеется родительская таблица Клиенты (ИмяКлиента, Имя, Адрес, Телефон) и дочерняя таблица Продажи (ID_заказа, Товар, Цена, Количество, ИмяКлиента). В таблице Клиенты Столбец ИмяКлиента является первичным ключом (имеет уникальные и определенные значения), а в таблице Продажи столбец ИмяКлиента не обязан иметь уникальные значения, поскольку один и тот же клиент может сделать несколько различных покупок. Чтобы эти две таблицы находились в связи, столбец ИмяКлиента в таблице продажи должен быть внешним ключом, ссылающимся на первичный ключ ИмяКлиента в таблице клиенты.
Если вы добавите в таблицу Продажи новую запись, содержащую значение столбца ИмяКлиента, которого еще нет в родительской таблице клиенты, то возникнет аномалия модификации данных. Аналогичная ситуация произойдет, если вы попытаетесь удалить запись из таблицы Клиенты: в дочерней таблице Продажи некоторые записи могут ссылаться на клиентов, сведения о которых отсутствуют.
Поэтому вначале следует добавить запись в таблицу Клиенты с соответствующим значением столбца ИмяКлиента, а затем - в продажи или, в случае с удалением, вначале нужно удалить соответствующие записи из таблицы Продажи, а затем - из Клиенты.
|
В ряде случаев перед добавлением или удалением записей можно проверить, не приведет ли это к нарушению ссылочной целостности. Такую проверку можно выполнить с помощью предиката MATCH.
Предикат MATCH имеет следующий синтаксис:
ЗначениеТипаЗаписи ROW MATCH [UNIQUE] [SIMPLE | PARTIAL | FOLL] (подзапрос);
Здесь в квадратных скобках указаны необязательные ключевые слова, а вертикальной чертой разделены их альтернативные варианты: UNIQUE (уникальный), SIMPLE (простой), PARTIAL (частичный), FULL (полный). Эти ключевые слова определяют правила обработки значений типа записи с полями, имеющими неопределенные значения.
Допустим, требуется определить, есть ли в таблице продажи запись ('Иванов', 'Компьютер'). Для этого можно выполнить такой запрос к базе данных:
SELECT * FROM Продажи
WHERE (' Иванов ', ' Компьютер ')
MATCH (SELECT ИмяКлиента, Товар FROM Продажи);
Если в таблице Продажи есть запись с указанным именем клиента и товаром, то предикат MATCH вернет значение TRUE.
Создание и модификация таблиц
Создание и модификация таблиц базы данных обычно производятся специальными диалоговыми инструментами сред разработки, которые поставляются вместе с СУБД. Хотя при их использовании, как правило, не требуется написания программ, эти средства включают в себя языки программирования, с помощью которых можно создавать сложные приложения, ориентированные на работу с базами данных. Примерами являются dBase, Paradox, Delphi, Access и др. Вместе с тем язык SQL также обладает средствами создания таблиц базы данных, т. е. тех таблиц, которые сохраняются в составе базы данных в долговременной памяти компьютера, например, на жестком диске. Таблицы, возвращаемые запросами на выборку данных, являются виртуальными и доступны только тому, кто инициировал эти запросы.
Создание таблиц
Создание таблицы производится с помощью оператора CREATE TABLE (создать таблицу) с указанием необходимых параметров. При этом создается постоянная таблица. Чтобы удалить ее из базы данных, требуется выполнить специальный SQL-оператор.
|
Для создания временной таблицы используется оператор CREATE TEMPORARY TABLE (создать временную таблицу). Временная таблица, в отличие от постоянной, существует только в течение сеанса работы с базой данных, в котором она была создана. Однако временная таблица может быть доступна другим пользователям, как и постоянная таблица. Обычно временные таблицы создаются для представления в них текущих итоговых (отчетных) данных, доступных нескольким пользователям базы данных. Далее приведен синтаксис оператора CREATE:
CREATE [ TEMPORARY ] TABLE имяТаблицы (
{ Столбец1 тип [(размер)] [ограничение_столбца] [,...] }
{ [, CONSTRAINT ограничение__таблицы] [,... ] }
);
Здесь квадратные и фигурные скобки, в отличие от круглых, не являются элементами синтаксиса. В квадратных скобках заключены необязательные элементы, а в фигурных - элементы, которые могут повторяться.
Для создания таблицы необходимо указать ее имя и определить столбцы. Определение столбца включает его имя и тип. Если указывается длина столбца, то она заключается в круглые скобки после типа. Кроме того, можно указать ограничения для столбца. Все перечисленные элементы определения столбца указываются друг за другом через пробел. Если создаваемая таблица содержит несколько столбцов, то их определения разделяются запятыми. Ограничение может быть определено и для всей таблицы, а не только для ее столбцов. В этом случае используется ключевое слово CONSTRAINT (ограничение), после которого указывается само ограничение.
Только что созданная таблица пуста, т. е. не содержит ни одной записи.
Далее приведен запрос на создание простой таблицы без ограничений:
CREATE TABLE Студент (
ID _ студента INTEGER,
ФИО CHAR (20),
Специальность CHAR (15),
Примечание VARCHAR
);
Данный запрос создает таблицу Студент, содержащую четыре столбца. Первый столбец целочисленный, а три других - символьные.
Ограничения устанавливаются на данные, которые вводятся в таблицу. Например, на числовой столбец можно наложить ограничение, заключающееся в том, что вводимое число должно находиться в некотором диапазоне. Другой пример ограничения: значение столбца не должно быть неопределенным.
Нередко ограничения устанавливаются и отслеживаются в приложениях, работающих с базами данных. Тем не менее, ограничения могут быть установлены и могут поддерживаться многими современными СУБД. Если вы создаете таблицу посредством SQL, то также имеете возможность задать эти ограничения, а выполнять их будет СУБД. При этом если одна и та же база данных используется несколькими приложениями, то вам придется установить ограничения только один раз, а не столько, сколько имеется приложений.
|
Ограничения для столбцов
В табл. приведены основные ограничения для столбцов. Однако существуют и более сложные ограничения, которые здесь не рассматриваются.
Примечание: Microsoft Access не поддерживает ключевые слова DEFAULT и CHECK в определениях ограничений.
Рассмотрим в качестве примера создание таблицы Студент (ID_студента, ФИО, Специальность, Примечание). Идентификатор студента (целочисленный столбец ID_студента) должен однозначно идентифицировать запись о студенте, т. е. иметь определенные и уникальные значения. Таким образом, данный столбец должен быть первичным ключом. От столбца ФИО (фамилия, имя и отчество) потребуем, чтобы в нем не было неопределенных значений. Целочисленный столбец Специальность должен содержать номера специальностей, которые не превышают 12. Тогда запрос на создание такой таблицы будет иметь вид:
CREATE TABLE Студент (
ID _ студента INTEGER PRIMARY KEY,
ФИО CHAR(20) NOT NULL,
Специальность INTEGER CHECK (Специальность < 12),
Примечание VARCHAR
);
Предположим, что данный запрос выполнен. Тогда следующий запроса добавление новой записи в таблицу Студент вызовет сообщение об ошибке и не будет выполнен:
INSERT INTO Студент;
Это произойдет потому, что данный запрос добавляет пустую запись, все столбцы которой содержат значение NULL, и, следовательно, не выполняются ограничения для первых двух столбцов. А следующий запрос, добавляющий в таблицу первую запись и устанавливающий определенные значения для столбцов, не вызовет проблем со стороны СУБД:
INSERT INTO Студент (ID _ студента, ФИО, Специальность)
VALUES (1, ' Иванов Иван Иванович ', 9);
Попытаемся вслед за данным запросом добавить еще одну запись:
INSERT INTO Студент (ID __ студента, ФИО, Специальность)
|
VALUES (1, ' Петров Петр Петрович ', 5);
Данный запрос не будет выполнен из-за нарушения ограничения, наложенного на первый столбец: его значения должны быть не только определенными (отличными от NULL), но и уникальными. Запись можно добавить, если столбцу ID_студента присвоить, например, значение 2.
Ограничения для столбцов можно выразить и иначе - через ограничения доменов. Домен определяется как множество значений. Домен в реляционной теории связывается с атрибутом отношения и, как таковой, определяет некоторое ограничение на этот атрибут (атрибут может принимать значения только из этого домена). В SQL можно создать домен, сначала не связанный ни с какими атрибутами (столбцами), определив для него допустимые значения: тип данных и дополнительные ограничения. Затем этот домен можно задать в качестве ограничений для любого столбца в любой таблице подобно тому, как задаются типы столбцов. Другими словами, домен можно связать с одним или несколькими столбцами различных таблиц. В ряде случаев этот прием очень удобен, особенно если у вас имеется несколько "однотипных" столбцов в различных таблицах базы данных.
Чтобы создать домен, используется такой синтаксис:
|
|
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!