Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы дополнено.docx
Скачиваний:
10
Добавлен:
19.09.2019
Размер:
1.4 Mб
Скачать

4.3.1.Целостность сущностей.

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

каждый кортеж любого отношения должен отличатся от любого другого кортежа этого отношения (т.е. любое отношение должно обладать первичным ключом).

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

  • при добавлении записей в таблицу проверяется уникальность их первичных ключей

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

4.3.2.Целостность ссылок

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

  1. Связи между данными отношениями описываются в терминах функциональных зависимостей.

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

8.Структурированный язык запросов SQL. Команда SELECT, опции команды SELECT.

Описание:

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

DISTINCT

DISTINCT указывает базе данных исключать дупликаты из результата команды SELECT.

Пример:

SELECT DISTINCT vnum

FROM torder;

Здесь выбираются все различные (без дупликатов) элементы столбца vnum таблицы torder.

FROM { таблица [ псевдоним ] } [,...]

С помощью FROM сообщают базе данных из каких таблиц выбирать данные.

Пример:

SELECT vnum

FROM torder;

Здесь выбираются все элементы поля vnum таблицы torder.

WHERE условие

С помощью WHERE ограничивают выбор данных из указанных таблиц.

Пример:

SELECT tkunden.knum, tverkauf.vnum, tverkauf.prov

FROM tkunden, tverkauf

WHERE tkunden.vnum=tverkauf.vnum;

Результатом является здесь таблица из строк, состоющих из поля knum таблицы tkunden и полей vnum и prov таблицы tverkauf, где с помощью WHERE указывается как находить строки таблицы tverkauf соответствующие строкам из таблицы tkunden.

GROUP BY { поле | Integer } [,...]

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

Пример:

SELECT vnum, MAX(preis)

FROM torder

GROUP BY vnum;

Здесь выбираются в качестве результата все максимальные значения поля preis про найденную группу строк с идентичным значением поля vnum.

HAVING условие

HAVING используется вместе с GROUP для того чтобы выбирать только определенные группы строк данных, которые удовлетворяют указанному условию.

Пример:

SELECT vnum, MAX(preis)

FROM torder

GROUP BY vnum

HAVING AVG(preis) > 10

Здесь выбираются все максимальные значения поля preis про найденную группу строк данных с идентичным vnum, удовлетворяющию дополнительному условию, что средняя величина preis больше 10.

ORDER BY { поле | Integer [ ASC|DESC ] } [,...]

ORDER BY сортирует строки результирующей таблицы данных. Если ORDER BY используется внутри GROUP BY, то строки сортируются внутри каждой группы результирующих строк. Вместо имен полей могут быть использованы их порядковые номера в списке полей результирующей таблицы. ASC сортирует данные в восходящем порядке, DESC - в обратном.

Пример:

SELECT tkunden.knum, tverkauf.vnum, tverkauf.prov

FROM tkunden, tverkauf

WHERE tkunden.vnum=tverkauf.vnum order by tkunden.knum asc;

UNION [ALL] SELECT-команда

UNION используется для того, чтобы объединять результаты двух или более команд SELECT. Поля всех результирующих таблиц должны быть совместимыми. Если ALL не использовано, то дупликаты исключаются из объединения результатов.

Пример:

SELECT vnum, vname

FROM tverkauf

WHERE stadt='Berlin'

UNION

SELECT knum, kname

FROM tkunden

WHERE stadt='Berlin'

ORDER BY 1;

Здесь результатом является таблица, содержащая все vnum и knum таблицы tverkauf так же, как и всеv num и kname таблицы tkunden, где поле stadt имеет значение 'Berlin'. Результат сортируется по первому столбцу и дупликаты исключаются.