- •Краткое введение в субд - базы данных как аппарат моделирования.
- •Язык sql FoxPro 5.0
- •Создание бд
- •Модификация структуры бд
- •Модификация содержимого таблиц
- •Запросы к бд - команда select. Представления
- •Примерные типы заданий.
- •Тема 3. Задачи-многоходовки. Представления и транзакции.
- •Тема 4. Проектирование "реальной" бд.
Тема 3. Задачи-многоходовки. Представления и транзакции.
В контексте заданной предметной области, любой человек характеризуется следующими данными.
ФАМИЛИЯ (30 символов)
ПАСПОРТ - № паспорта, 10 символов (очевидно, уникальный для каждого человека)
МАТЬ - № паспорта матери (NULL, если нет сведений)
ОТЕЦ - № паспорта отца (NULL, если нет сведений)
СУПРУГ - № паспорта жены/мужа (NULL, если нет сведений)
ДАТА - дата рождения (тип дата)
ДОХОД - ежемесячный доход (зарплата, стипендия и т.п.), вещественное 99.999.999,99
ГОРОД - город проживания (30 символов)
НАЛОГ - сумма подоходного налога, в % (целое)
Кроме того, в информацию о студентах дополнительно включаются сведения
ВУЗ - сокращенное название ВУЗа, 10 символов - например, ‘КГУ’, ‘КГМУ’ и т.п.
ПОЛ - один из символов ‘М’,’Ж’
БД включает таблицы СТУДЕНТЫ, ОТЦЫ и МАТЕРИ, включающую информацию о студентах и их родителях, соответственно.
ПРИМЕЧАНИЕ. Как всегда, считаем, что допустимо применение имен на кириллице.
Выдать список студентов, с указанием фамилий и дохода родителей, упорядоченный по возрасту студентов. Студентов, чьи доходы ниже 100 руб., в список не включать.
Выдать упорядоченный по фамилиям список живущих в Казани, Москве и Самаре родителей, с указанием - мать это или отец, чей доход не превышает 300 руб.
Выдать все пары студентов-однофамильцев из КГУ, с указанием фамилии и, для обоих, паспортных данных. Дублирующиеся пары не включать.
Выбрать всю информацию об отцах, чьи доходы выше среднего по городу, в котором они живут.
Выдать список живущих вне Казани матерей, имеющих не менее - двух сыновей-студентов, учащихся в Казани.
Выбрать всю информацию об студентах, чьи доходы выше среднего для казанских студентов.
"Многоходовки" – т.е. задачи, решение которых не реализуется легко единственной командой SQL проще решать, используя представления, например:
Удалить информацию о студентах ВУЗА 'АГУ' а также их родителях - в случае, если у тех нет других детей-студентов (вариант посложнее - включить в число родителей студентов их бабушек и дедушек)
Вариант решения:
запомнить студентов нужного ВУЗа и ссылки на их отцов,
запомнить отцов, у которых все дети (если вообще есть таковые) учатся в нужном ВУЗе
удалить информацию об отцах, входящих в первый и второй список
удалить информацию о студентах нужного ВУЗа
- Снизить на 5% налог родителям, имеющим более 3 детей-студентов, обучающихся в Казани
Вариант решения:
Разбив казанских студентов на группы детей одних родителей, отобрать и запомнить ссылки на тех отца и мать, для которых количество их детей больше 3
Изменить записи о матерях, ссылки на которые были запомнены на первом шаге,
Изменить записи об отцах, ссылки на которые были запомнены на первом шаге.
- Повысить на 50 руб. стипендию (т.е. доход) студентов, у которых нет хотя бы одного из родителей либо совокупный доход родителей не превышает 1000 руб.
Вариант решения:
Подсчитать и запомнить совокупный доход всех супружеских пар (вместе со ссылками на отца и мать), если он не более заданной суммы,
Изменить соответственно информацию о студентах, для которых ссылки на родителей либо пусты, либо попали в запомненный список
- Повысить на 5% налог отцам, у которых доход жены не ниже среднего для матерей, а совокупный доход детей превышает 1000 руб.
Вариант решения:
Сгруппировав по отцам, подсчитать совокупный доход студентов по группе, запомнить ссылки на отцов, если подсчитанный доход больше заданной суммы.
Запомнить ссылки на матерей, чей доход больше среднего по матерям
Изменить соответственно информацию об отцах, попавших в первый список, у которых жена попала во второй список