Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Связи и запросы в БД / 5 сообщений из 5, страница 1 из 1
27.02.2015, 02:12:05
    #38890130
matviishyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связи и запросы в БД
Здравствуйте, хочу сразу сказать я новичок в MySql,и буду рад всем кто ответит
Задали мне на днях ДЗ по Базам Даних и у меня есть парочка вопросов
Среда: MySQL Workbench 6.2

Задание: Есть таблица Person(email,first name,last name) (поле email - уникальное)
Также есть еще две таблицы Курсы (Educational courses и Arts courses)
Каждый курс имеет уникальное имя(name) и категорию(category).

Пример
Educational courses
name - C# category - Programming

Arts courses
name - Opera-Sing category - Singing

Я не понимаю как реализовать следующее(возможно свзязь один-ко-многим?):
1.Несколько из персон посещают курсы(таблицы Educational courses и Arts courses)
2.Персонаж не может посетить один и тот же курс дважди


Затем нужно сделать пару запросов:

1. Выбрать имя всех существующих курсов по категории
Код: sql
1.
2.
3.
4.
select arts_courses.name,educational_courses.name
from arts_courses
inner join educational_courses
on arts_courses.category = educational_courses.category;


2. Найти человека который не посещает ни один курс
3. Найти только те категории что используются в курсах,те которие не используются пропустить
...
Рейтинг: 0 / 0
27.02.2015, 06:46:31
    #38890166
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связи и запросы в БД
matviishynЯ не понимаю как реализовать следующее(возможно свзязь один-ко-многим?):
1.Несколько из персон посещают курсы(таблицы Educational courses и Arts courses)
2.Персонаж не может посетить один и тот же курс дваждиэто многие-ко-многим, делается как правило через дополнительную таблицу связи
matviishynТакже есть еще две таблицы Курсы (Educational courses и Arts courses)А зачем 2 таблицы? Курсы и есть курсы, ну добавьте туда признак, какой это вид курсов...
...
Рейтинг: 0 / 0
27.02.2015, 14:17:22
    #38890624
matviishyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связи и запросы в БД
tanglir,

Сделал в результате три таблицы и соеденил их отношением многое-ко-многим

Таблица Person(id person,email,first_name,last_name)
Таблица Groups(id_group,name,category,courses)
Таблица Distribution(id_person,id_group),id_person,id_group - внешние ключи

В результате:
1.Несколько из персон посещают курсы(я соединяю по id_person и id_group)
2.Персонаж не может посетить один и тот же курс дважди(это тоже есть)

Запросы

1. Выбрать имя всех существующих курсов по категории
Код: sql
1.
select courses from groups where category='Programming';


С остальными запросами еще проблема:
2. Найти человека который не посещает ни один курс
3. Найти только те категории что используются в курсах,те которие не используются пропустить
...
Рейтинг: 0 / 0
27.02.2015, 14:37:51
    #38890655
matviishyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связи и запросы в БД
3. Найти только те категории что используются в курсах,те которие не используются пропустить
Тип category - enum(я специально добавил туда еще несколько имен и не привязывал их к курсу, и выводит верно, но я все же сомневаюсь)
Код: sql
1.
select distinct category from groups


Результат:
Код: sql
1.
2.
3.
4.
5.
6.
Unknown
Sing
Programming
Paint
Mathematics
History


Список всех категорий
Код: sql
1.
ENUM('Programming','History','Mathematics','Sing','Paint','Unknown','Empty1','Empty2')
...
Рейтинг: 0 / 0
27.02.2015, 15:07:16
    #38890727
matviishyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связи и запросы в БД
2. Найти человека который не посещает ни один курс
Код: sql
1.
2.
3.
4.
1
2
select id_person,first_name,last_name from person
where not exists(select null from distribution where distribution.id_person=person.id_person)


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


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