Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вопрос, по запросу и проектированию БД, автопарк / 19 сообщений из 19, страница 1 из 1
16.03.2016, 02:13
    #39192843
basilx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
Приветствую, Друзья!

Есть следующая задачка:
Один водитель может работать во многих автопарках и в каждом автопарке
за ним может быть несколько авто.Один автомобиль может числится только в одном
автопарке.
Необходимо отобразить все машины которые закреплены за водителем,
год выпуска которых старше 2014.

Есть таблицы:
- driver (id_driver, name, sex, phone)
- auto (id_auto, model, color, year (год выпуска авто), fk_park, fk_driver)
- park /Автопарк (id_park, title, address, fk_auto)


Отношения в таблицах, как я понимаю:
Auto : Park = 1:1
Driver : Park = 1:N
Driver : Auto = 1:N

Я вижу решение следующим образом:
SELECT d.name, d.phone, a.model, a.year FROM driver d, auto a, park p
WHERE d.id_driver = a.fk_driver AND p.fk_auto = a.id_auto AND a.year> 2014 ORDER BY d.name;

Верно ли я мыслю касательно своей задачи.
Можно ли это сделать объединением?
Заранее благодарю за помощь.
...
Рейтинг: 0 / 0
16.03.2016, 09:07
    #39192912
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
Отношения

Auto : Park = N:1
Driver : Park - не нужно вообще (из следующего отношения выводится)
Driver : Auto = 1:N

Если конечно нет такого, что за авто несколько водителей закреплено
...
Рейтинг: 0 / 0
16.03.2016, 09:55
    #39192946
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
basilxНеобходимо отобразить все машины которые закреплены за водителем, год выпуска которых старше 2014. Верно ли я мыслю касательно своей задачи.
Задача: отобразить машины. Запрос: отображает водителей. Подумайте сами, верно ли Вы мыслите? Затем подумайте о том, что в этой задаче ни водители, ни парки Вам вообще не нужны.

basilxМожно ли это сделать объединением?
Зачем?
...
Рейтинг: 0 / 0
16.03.2016, 09:58
    #39192950
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
А, ну и заодно я бы предложил подумать над тем, как внятно переводится на русский язык корявая формулировка "год выпуска старше 2014".
...
Рейтинг: 0 / 0
16.03.2016, 10:04
    #39192952
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
basilx,

SELECT driver.name, auto.model, auto.year
FROM driver INNER JOIN (auto INNER JOIN driver_avto ON auto.id_auto = driver_avto.id_auto) ON driver.id_driver = driver_avto.id_driver
WHERE (((auto.year)>2014));
...
Рейтинг: 0 / 0
16.03.2016, 10:09
    #39192958
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
vmag, гениально. Вы не только повторили все ошибки автора, но и добавили к ним несуществующую таблицу.
...
Рейтинг: 0 / 0
16.03.2016, 10:14
    #39192970
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
softwarerно и добавили к ним несуществующую таблицу.

недостающую....
...
Рейтинг: 0 / 0
16.03.2016, 10:16
    #39192972
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
vmagнедостающую....
Вы это скажите преподавателю. Который и так дал на две таблицы больше, чем нужно для этой задачи.
...
Рейтинг: 0 / 0
16.03.2016, 10:22
    #39192979
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
softwarerВы это скажите преподавателю.

не все преподы идолы, на которых нужно молиться...
...
Рейтинг: 0 / 0
16.03.2016, 13:15
    #39193208
basilx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
softwarer,
Да, ещё раз перечитал условие, просто переписал с ошибками, нужно таки: "Выбрать всех водителей в заданном автопарке, к которому привязан хотя бы один автомобиль с годом выпуска позднее 2010".

В итоге нарисовал схему отношений (Не разобрался как вставить картинку, во вложении) и переписал запрос:

Код: sql
1.
2.
3.
SELECT d.fullName, d.birtdayYear, a.model, a.releaseYear, p.title FROM driver d, auto a, park p 
WHERE d.iddriver = a.fk_driver AND p. park_id = a.park_fk 
AND p.title = 'Name of the Park' AND a.releaseYear > 2010 ORDER BY a.year;



Но меня смущает фраза хотя бы один автомобиль, т.е. может быть ситуация когда за водителем не числится вообще автомобилей?
Тогде нужно добавлять ещё одно условие.

softwarer,
А можно попродробнее по поводу двух лишних таблиц. Там где отношение 1:1 можно было сделать
в одной таблице, я так думаю. А где ещё лишняя таблица?

Хочется разобраться более детально и отдельное спасибо за наводящие вопросы.
В данном случае не нужно вообще никаких объединений.
...
Рейтинг: 0 / 0
16.03.2016, 13:17
    #39193211
basilx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
Naf,
Спасибо, как - то сразу не понял, что отношение лишнее,
а потом как начал создавать таблицы, то всё стало на свои места.
...
Рейтинг: 0 / 0
16.03.2016, 13:31
    #39193233
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
basilxДа, ещё раз перечитал условие, просто переписал с ошибками, нужно таки: "Выбрать всех водителей в заданном автопарке, к которому привязан хотя бы один автомобиль с годом выпуска позднее 2010".
OK. Но снова посмотрите на свой запрос: русским языком сказано "выбрать всех водителей". А Ваш запрос возвращает автомобили.

Кроме того, я так подозреваю, всё же имеется в виду "к которым". Потому что если "к которому", задание следует понимать как "выбрать всех водителей заданного автопарка, если к нему привязан хотя бы один автомобиль, выпущенный после 2010 года".

basilxНо меня смущает фраза хотя бы один автомобиль, т.е. может быть ситуация когда за водителем не числится вообще автомобилей?
Такая ситуация, безусловно, может быть, но Вам актуальнее другая ситуация: когда к водителю привязано несколько таких автомобилей.

basilxА можно попродробнее по поводу двух лишних таблиц.
В том виде, в котором было написано, задача решается запросом

Код: plaintext
select a.* from auto a where a.year < 2014 and a.driver_id is not null
...
Рейтинг: 0 / 0
16.03.2016, 13:44
    #39193242
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
basilx,

только картинку свою преподу не показывайте, из неё вытекает что в каждом парке может быть только одна машина, ну или я уже ничего не понимаю....
...
Рейтинг: 0 / 0
16.03.2016, 15:06
    #39193377
basilx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
vmag,

А почему одна машина?
Просто отношение 1 : 1, т.е. одна машина числится за одним парком, всё пучком.
А в автопарке их может быть много, но одна машина всегда закреплена только за одним автопарком, не вижу противоречий.

Почему думаете это некорректно?
Я создал таблицы и уже прогнал запрос, всё работает красиво.
...
Рейтинг: 0 / 0
16.03.2016, 15:29
    #39193410
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
basilxvmag,

А почему одна машина?
Просто отношение 1 : 1, т.е. одна машина числится за одним парком, всё пучком.
А в автопарке их может быть много, но одна машина всегда закреплена только за одним автопарком, не вижу противоречий.

Это называется "1:N" - один автопарк, N машин.
...
Рейтинг: 0 / 0
16.03.2016, 15:43
    #39193428
basilx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
Кот Матроскин,

Спасибо за исправление, как - то я невнимателен был, когда создавал даграмму.
А так да, понятно что отношение 1 ко многим.

Т.е. на диаграмме исправлю 1:1 на N:1.

Спасибо ещё раз!
...
Рейтинг: 0 / 0
16.03.2016, 18:33
    #39193705
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
basilxСпасибо за исправление, как - то я невнимателен был, когда создавал даграмму.

ну и вникайте во все тонкости ответов вам :

NafЕсли конечно нет такого, что за авто несколько водителей закреплено

То есть, если по понедельникам на авто X ездит водитель А , а по вторникам водитель В , а по средам водитель С ,
то в таблице auto один и тот же автомобиль Х будет присутствовать не один, а три раза (согласно вашей схеме)
...
Рейтинг: 0 / 0
17.03.2016, 08:09
    #39194009
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
vmag,

Это было предположение, тогда требуется еще таблица, а может и не одна (если графики есть)
...
Рейтинг: 0 / 0
17.03.2016, 08:28
    #39194020
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос, по запросу и проектированию БД, автопарк
NafЭто было предположение,

Это не предположение, это правильный подход к проектированию...
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вопрос, по запросу и проектированию БД, автопарк / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]