КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Delete from Dad where Id in (Select Id from Dad1) and Id in (Select Id from Dad2)4. … 5. Delete from Students where Institute=’АГУ’ 6. Замечание. Стандарт ANSI SQL запрещает в командах модификации подзапрос – в том числе, неявный (через представление) - к модифицируемым таблицам. Если реализация следует в этом стандарту – прибегнуть к курсорам - Select Distinct Dad from Students where Institute=’АГУ’ into cursor Dad1 etc. -Снизить на 5% налог родителям, имеющим более 3 детей-студентов, обучающихся в Казани Вариант решения: - Разбив казанских студентов на группы детей одних родителей, отобрать и запомнить ссылки на тех отца и мать, для которых количество их детей больше 3 - Изменить записи о матерях, ссылки на которые были запомнены на первом шаге, - Изменить записи об отцах, ссылки на которые были запомнены на первом шаге. 1. CreateView Parents as Select Mum, Dad,Count(*) from Students Group BY Mum, Dad Having Count(*)>3 2. Update Mum set Tax= Tax-5 where Id in (Select Mum from Parents) 3. Update Dad set Tax= Tax-5 where Id in (Select Dad from Parents) 4.
-Повысить на 50 руб. стипендию (т.е. доход) студентов, у которых нет хотя бы одного из родителей либо совокупный доход родителей не превышает 1000 руб. Вариант решения: - Подсчитать и запомнить совокупный доход всех родителей (вместе со ссылками на отца и мать), если он не более заданной суммы, - Изменить соответственно информацию о студентах, для которых ссылки на родителей либо пусты, либо попали в запомненный список
1. Create View LowIncome as Student.Id as Id, Dad, Mum, Dad.Income+Mum.Income from Mums,Dads,Students where Student.Mum=Mum.Id and Student.Dad=Dad.Id and Dad.Income+Mum.Income<=1000 2. Update Students set Income=Income+50 where IsNull(Mum) or IsNull(Dad) or Id in (Select Id from LowIncome)
- Повысить на 5% налог отцам, у которых доход жены не ниже среднего для матерей, а совокупный доход детей превышает 1000 руб. Вариант решения: - Сгруппировав по отцам, подсчитать совокупный доход студентов по группе, запомнить ссылки на отцов, если подсчитанный доход больше заданной суммы. - Запомнить ссылки на матерей, чей доход больше среднего по матерям - Изменить соответственно информацию об отцах, попавших в первый список, у которых жена попала во второй список
Create View HignIncomeDads as Select Sum(Income),Dad from Students GroupBy Dad Having Sum(Income) >1000 Create View HignIncomeMum as Select Id from Mum where Income>(Select AVG(Income) from Mum) Create View HignIncomeParents as Select Distinct Dad,Mum from Students where Dad in (Select Dad from HighIncomeDad) and Mum in (Select Id from HighIncomeMum) Update Dads set Tax=Tax+5 where Id in (Select Distinct Dad from HignIncomeParents)
Тема 4. Проектирование "реальной" БД.
Информационная система "Сборочное предприятие".
НЕФОРМАЛЬНАЯ МОДЕЛЬ
После тщательного изучения проблемной области и опроса экспертов - специалистов предприятия, вы обладаете следующей информацией о его структуре и функционировании.
Предприятие состоит из несколькихподразделений - цехов и участков,в которых трудятся работникиразличных профессий. Работники осуществляют, в соответствии с производственным планом предприятия, сборочныеи иныеоперациипо изготовлению готовых изделий из компонент. Компонентами могут служить изделия собственного производства и исходные материалы (сырье). Все операцииосуществляются в согласии с установленными нормам затрат труда и расхода материалов. Оплата труда работников производиться согласно их выработке и установленным тарифам. Исходные материалы поступают на склады предприятия от поставщиков в соответствии с заключенными с ними договорам. Готовые изделия отгружают со склада покупателямсогласноихзаказам.
Упражнение. Попробуйте сами выделить базовые понятия, их свойства и взаимосвязи на основе неформального и неполного описания. Разумеется, такое выделение далеко не однозначно. Обоснуйте (защитите) свой вариант, сравнив его с предложенным ниже.
|