Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Общие вопросы разработки программ _ Структура БД

Автор: Scorp_Freeman 16.12.2007 22:54

Пытаюсь построить БД состоящую из 4 таблиц: Заказчик, Заказы, Производитель и Изделия.

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


Только вот проблемка что я могу связать Фирму и Изделия( ведь не все фирмы могут производить весь ассортимент...

Далее мне из базы надо будет написать след. запросы:

Подсчитать на какую сумму Заказчик1 заказал изделий Изделие1 фирмы Фирма1;
Какие изделия производит Фирма1.

Проблемно для меня определиться со структурой БД (

Добавлено через 12 мин.
Или может быть в "Заказах" знать о производитель не особо важно....

тогда я думал можеттак(прикрепил)... Но тогда все изделия имеют одинаковую цену не зависящую от производителя




Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение

Автор: hardcase 17.12.2007 13:43

Цитата(Scorp_Freeman @ 16.12.2007 18:54) *

Только вот проблемка что я могу связать Фирму и Изделия( ведь не все фирмы могут производить весь ассортимент...

Это связь многие-ко-многим. Реализуется через промежуточную таблицу (таблица маппинга изделий на фирмы) - Vendor_Products. В этой таблице всего 2 поля: Product_id и Vendor_id. Оба поля представляют собой первичный ключ.

Чтобы получить все продукты выпускаемые фирмой с id = 15 достаточно выполнить простой внешний джойн:
Код

SELECT p.Product_id, p.Title
FROM Vendor_Products AS vp LEFT OUTER JOIN Products AS p
ON vp.Vendor_id = 15


Автор: Scorp_Freeman 18.12.2007 21:43

А можно делать так?

Код

SELECT Поставщики.id, Фирма.name
FROM  Поставщики  INNER JOIN Фирма,Изделия ON Поставщики.id_firma=Фирма.id AND Фирма.name='Sony' AND Изделия.Caption='Телевизор' AND  Изделия.id_post IN=Поставщики.id);



Т.е. обьединить больше двух связаных между собой таблиц, а то у меня выдает ошибку при этом запросе
"Ошибка синтаксиса в предложении FROM" unsure.gif

Автор: hardcase 19.12.2007 5:58

Цитата(Scorp_Freeman @ 18.12.2007 17:43) *
А можно делать так?

"Ошибка синтаксиса в предложении FROM" unsure.gif

Действительно. Моя ошибка. Извиняюсь.
Код

SELECT p.Product_id, p.Title
FROM Vendor_Products AS vp JOIN Products AS p
ON vp.Vendor_id = p.Product_id
WHERE vp.Vendor_id = 15


Для проверки вашего запроса требуется более полная схема БД.