![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
Асоишница |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 13.3.2012 Репутация: нет Всего: нет |
Понимаю, что задачи простые. Но не для тех, кто первый раз в данной теме(лаба в универе)
Я пробовала рещить, но не уверена в правильности решения. структура базы данных: Поставщики S П# Имя П Статус Город П1 Петров 20 Москва П2 Синицин 10 Таллинн П3 Федоров 30 Таллинн П4 Чаянов 20 Минск П5 Крюков 30 Киев Детали P Д# Имя Д Цвет Размер Город Д1 Болт Красный 12 Москва Д2 Гайка Зеленая 17 Минск Д3 Диск Черный 17 Вильнюс Д4 Диск Черный 14 Москва Д5 Корпус Красный 12 Минск Д6 Крышки Красный 19 Москва Проекты J ПР# Имя ПР Город ПР1 ИПР1 Минск ПР2 ИПР1 Таллинн ПР3 ИПР3 Псков ПР4 ИПР4 Псков ПР5 ИПР4 Москва ПР6 ИПР6 Саратов ПР7 ИПР7 Москва Кол-во деталей поставляемых одним поставщиком для одного проекта П# Д# ПР# S П1 Д1 ПР1 200 П1 Д1 ПР2 700 П2 Д3 ПР1 400 П2 Д2 ПР2 200 П2 Д3 ПР3 200 П2 Д3 ПР4 500 П2 Д3 ПР5 600 П2 Д3 ПР6 400 П2 Д3 ПР7 800 П2 Д5 ПР2 100 П3 Д3 ПР1 200 П3 Д4 ПР2 500 П4 Д6 ПР3 300 П4 Д6 ПР7 300 П5 Д2 ПР2 200 П5 Д2 ПР4 100 П5 Д5 ПР5 500 П5 Д5 ПР7 100 П5 Д6 ПР2 200 П5 Д1 ПР2 100 П5 Д3 ПР4 200 П5 Д4 ПР4 800 П5 Д5 ПР4 400 П5 Д6 ПР4 500 Первичный ключ помечен знаком #. Структура таблиц: Поставщики: S ( П#, ИмяП, Статус, Город ) Детали: P ( Д#, ИмяД, Цвет, Размер, Город) Проекты: J (ПР#, ИмяПР, Город ) Количество деталей, поставляемых одним поставщиком для одного проекта: SPJ ( П#, Д#, ПР#, S ) В прикреплённом файле эта же структура, но таблицами. И вот, собственно, сами задания. 1. Получить все такие тройки "номера поставщиков-номера деталей-номера проектов", для которых никакие из двух выводимых поставщиков, деталей и проектов не размещены в одном городе. (S[П#, Город] MINUS P[Д#, Город]) TIMES (J[ПР#, Город] MINUS S[П#, Город]) TIMES (P[Д#, Город] MINUS J[ПР#, Город]) Получили (П2, П3, П5)х(ПР3, ПР4, ПР6)хД3. Ну и из этого тройки. Может, я что упустила(пробовала через симметрическую разность, но там из-за объединений бред) И ещё вопрос, как вывести эти пары вроде того, как в предыдущем задании проекцию делала 2. Получить номера деталей, поставляемых для всех проектов, обеспечиваемых поставщиком из того же города, где размещен проект. Вариант решения №1: 1) Произведем проекцию отношения S по атрибутам П# и Город S[П#,Город] 2)Произведем проекцию отношения J по атрибутам ПР# и Город J[ПР#,Город] 3) Произведем проекцию отношения SPJ по атрибутам Д# и ПР# SPJ[Д#,ПР#] 4)Над полученными ранее отношениями произведем операцию пересечения (S[П#,Город] INSERSECT J[ПР#,Город])INSERSECT SPJ[Д#,ПР#] 5) Произведем проекцию полученного выше отношения по атрибуту Д# ((S[П#,Город] INSERSECT J[ПР#,Город])INSERSECT SPJ[Д#,ПР#])[Д#] Вариант №2 (SPJ[ПР#, Д#] DIVIDEBY (J[Город, ПР#] DIVIDEBY S[Город]) Если это правильно, то чтобы получить результат, достаточно (SPJ[ПР#, Д#] DIVIDEBY (J[Город, ПР#] DIVIDEBY S[Город])[Д#] или надо ((SPJ[ПР#, Д#] DIVIDEBY (J[Город, ПР#] DIVIDEBY S[Город]) JOIN SPJ)[Д#] По идее должны получить Д2, Д4, Д5 3. Получить все пары номеров поставщиков, скажем, Sx и Sy, такие, что оба эти поставщика поставляют в точности одно и то же множество деталей. Тут в решении я сомневаюсь больше всего. (SPJ RENAME S AS S1)[S1] TIMES SPJ WHERE S=S1)[S] Ну и тоже, как это произведение отобразить Это сообщение отредактировал(а) Асоишница - 2.10.2013, 15:14 Присоединённый файл ( Кол-во скачиваний: 0 ) ![]() |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Такую форму записи поймет, скорее всего, лишь весьма узкий круг лиц, среди которых Ваш препод. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Асоишница |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 13.3.2012 Репутация: нет Всего: нет |
Zloxa, так оно что, правильно?
А как по-другому? |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 2 Всего: 101 |
Асоишница, у вас реляционная БД. для запросов к таким БД обычно используется SQL.
Вы используете алгебру Кодда, с её нотацией мало кто знаком |
|||
|
||||
Асоишница |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 13.3.2012 Репутация: нет Всего: нет |
baldina, в методичке к лабе говорится, что это всё расширенная алгебра Кодда- усовершенствованная. Но факт остаётся фактом- именно в таком виде мне надо сдать
|
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |