Вопрос по database, relational-algebra, sql, set-theory – Есть ли установленное деление в SQL?

5

Я полностью осознаю, что деление множеств может быть выполнено с помощью ряда других операций, поэтому мой вопрос:

Есть ли команда для разделения набора в SQL?

Можете ли вы уточнить, что вы подразумеваете под делением сетов? Вы имеете в виду такие вещи, как пересечение? Mike McAllister
Кроме того, вы говорите об ANSI SQL или о реализации SQL конкретного поставщика? Mike McAllister

Ваш Ответ

3   ответа
1

Вот хорошее объяснение с использованием синтаксиса реляционной алгебры.

Данные таблицыsailors, boats а такжеreserves (примеры из системы управления базами данных Ramakrishnan & amp; Gehrke's) вы можете вычислить моряков, которые зарезервировали все лодки с помощью следующего запроса:

SELECT name FROM sailors
WHERE Sid NOT IN (
    -- A sailor is disqualified if by attaching a boat,
    -- we obtain a tuple <sailor, boat> that is not in reserves
    SELECT s.Sid
    FROM sailors s, boats b
    WHERE (s.Sid, b.Bid) NOT IN (
        SELECT Sid, Bid FROM reserves
    )
);

-- Alternatively:
SELECT name FROM sailors s
WHERE NOT EXISTS (
    -- Not reserved boats
    (SELECT bid FROM boats)
    EXCEPT
    (SELECT r.bid FROM reserves r
    WHERE r.sid = s.sid)
);
Я проверил вводный класс Герке и могу подтвердить, что все примеры были морскими :)
5

http://vadimtropashko.files.wordpress.com/2007/02/ch3.pdf

Со страницы 32:

Relational Division is not a fundamental operator. It can be expressed in terms of projection, Cartesian product, and set difference.

Так что нет. :)

2

Дизайн базы данных для маркировки

И соответствующая часть ответаЭта статья

Короче говоря, нет, в SQL нет заданного деления.

Похожие вопросы