Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Соединение с дополнительным условием.




 

Пример:

Выдать номера поставщиков и номера деталей, которые соответственно проживают и изготавливаются в одном городе и исключить из рассмотрения поставщиков с состоянием меньшим 10 ( поставщик не обязательно поставляет деталь).

 

Решение:

SELECT S.номер_поставщика, P.номер_детали

FROM S, P

WHERE S.город = P.город AND P.состояние > 10;

 

Результат:

номер_поставщика номер_детали
S1 P1

 

 

1. Простой подзапрос.

Пример:

Выдать номера поставщиков, которые поставляют детали с номерос P2.

 

 

Примеры таблиц:

S

ном_пост имя сост город
S1 Смит Лондон
S2 Джонс Париж

SPG

ном_пост ном_дет ном_изд количество
S1 P1 J1
S2 P2 J1
S3 P3 J3

Решение:

SELECT имя

FROM S

WHERE номер_поставщ IN

(SELECT номер_поставщи

FROM SPJ

WHERE номер_детали = ‘P2’);

 

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

 

В принципе подзапрос возвращает множество {S2}. Этому условию удовлетворяет вторая запись в таблице S. è

Результат:

имя
Джонс
   

2. Запрос с несколькими уровнями вложенности подзапросов.

Пример:

Выдать имена поставщиков, которые поставляют, по крайней мере, одну красную деталь.

Примеры таблиц S и SPG см. в предыдущем примере.

Пример таблицы P.

ном_дет название вес город цвет
S1 Болт 0.01 Лондон красный
S2 гайка 0.02 Париж красный
S3 винт 0.03 Лондон черный

Решение:

SELECT имя

FROM S

WHERE номер_поставщ IN

(SELECT номер_поставщика

FROM SPJ

WHERE номер_детали = IN

SELECT номер_детали

FROM P

WHERE цвет = ‘красный’));

Вычисление начинается с самого внутреннего подзапроса и продолжается вверх до внешнего запроса.

Самый внутренний подзапрос возвращает {P1,P2}

Следующий подзапрос возвращает {S1,S2}

Результат:

имя
Смит
Джонс

 

-------------------------------------------------------------------------------------------------------------------------

 

 

-------------------------------------------------------------------------------------------------------------------------

 

БИЛЕТ 17

 

1. Алгоритм построения схемы базы данных, обладающей свойствами соединения без потерь, сохранения зависимостей, отсутствия аномалий. Преимущества и недостатки алгоритма.

 

Алгоритм построения «хорошей» схемы БД

Дано:

– универсальная схема отношения;

F – исходное множество функциональных зависимостей на R.

 

Задача:

Построить «хорошую» схему БД. – ?

 

Решение:

  1. Определить минимальное покрытие G для функциональных зависимостей F (см. предыдущие лекции).
  2. Каждую функциональную зависимость V вида из G заменить на VW (объединить атрибуты левой и правой частей). Получившееся множество схем отношений обозначить Q.
  3. Если , то добавить в схему отношения и выйти из алгоритма, ( – «хорошая» схема БД).

Иначе перейти к пункту 5.

  1. Добавить в в качестве схем отношений все те одиночные атрибуты, которые не вошли ни в одну из схем из Q.
  2. Добавить в все схемы отношений из Q.

Примечание: после выполнения пунктов алгоритма 1-6 схема БД обладает Свойством Сохранения Зависимостей, и каждая её схема отношения находится в 3НФ.

  1. Если ни одна из схем отношений в не содержит в себе ключ для универсальной схемы отношения R, то добавить в какой-нибудь ключ для R в качестве схемы отношения.

Примечание: после выполнения всех 7 пунктов алгоритма схема БД обладает всеми свойствами «хорошей» схемы БД:

1) Свойство Соединения Без Потерь;

2) Свойство Сохранения Зависимостей;

3) Каждая схема отношения в находится в 3НФ.

 

7-е условие слишком жесткое (надо найти ключ для универсальной схемы отношения – а в ней бывают сотни атрибутов).

 

Примечание: 7-ой пункт предполагает, что, в принципе, при разработке таблиц в БД, будут соединены все таблицы из , но на практике такого не бывает, поэтому его можно ослабить:

7. Если в запросах к БД соединяет не все схемы отношений из , а только из подмножества , , …, , то в можно добавить ключи для Q1, Q2, …, Qk в качестве новых схем отношений. (Если, конечно, эти ключи не содержатся уже ни в одной из схем отношения из ).

 

 

Лекция 11


Поделиться:

Дата добавления: 2015-04-21; просмотров: 62; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты