Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Построение диаграммы базы данных

Читайте также:
  1. MATHCAD. Ввод числовых и текстовых данных, 2-х и 3-х мерная графика.
  2. OLAP-технология и хранилище данных (ХД). Отличия ХД от базы данных. Классификация ХД. Технологические решения ХД. Программное обеспечение для разработки ХД.
  3. А какие методы сбора данных об ожиданиях потребителей лучше использовать малому предприятию?
  4. Актуальность защиты базы данных. Причины, вызывающие ее разрушение. Правовая охрана баз данных.
  5. Анализ данных методами кластеризации
  6. Анализ полученных данных.
  7. Анализ представленных данных Кравцовой Ларисы Викторовны

Для построения диаграммы базы данных на ее имени надо вызвать команду контекстного меню «Создать диаграмму базы данных» и добавить в нее все таблицы из появившегося списка таблиц. Затем следует создать связи между таблицами, для чего поле ключа родительской таблицы перетаскиваем на соответствующее поле дочерней таблицы. При этом в открывшемся окне надо нажатием клавиши ОК подтвердить создаваемое отношение (см. рис. 5.7)

 
 

Рис. 5.7. Создание отношения внешнего ключа

между табл. Izdel и vypusk

Затем откроется окно, показанное на рис. 5.8, в котором собственно формируется ограничение целостности (констрейнт Foreign Key). Для этого в спецификации INSERT и UPDATE следует выбрать рубрику «Обновить правило» и установить для нее значение «Каскадом».

Аналогичным образом создаются связи и ограничения целостности для всех таблиц. В результате мы получаем диаграмму, показанную на рис. 5.9.

Созданные ограничения целостности проверяются следующим образом:

· при изменении ключевого поля в родительской таблице в дочерней таблице каскадом изменятся поля, имеющие такое же значение(рис. 5.10);

· при попытке в дочернюю таблицу добавить запись, в которой значение внешнего ключа не совпадает ни с одним из значений первичного ключа в родительской таблице, система выдаст сообщение об ошибке, и запись добавлена не будет (рис. 5. 11);

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

 

 
 

Рис. 5.8. Создание ограничения целостности (констрейнта) типа Foreign Key”

 

 
 

Рис. 5.9. Диаграмма базы данных detal

 

 

а)
 
 

б)

Рис. 5. 10. Каскадное изменение поля kod_i в дочерней таблице (б) при изменении поля kod_i со значением 10 на значение 1000 (а)

Рис. 5.11. Сообщение об ошибке (введено значение поля kod_i=1500, которого нет в табл. Izdel)

 
 

Рис.5.12. Сообщение об ошибке при попытке удалить запись с кодом изделия, равным 10, т.к. в дочерних таблицах есть записи с таким кодом

 

5.3.3. Просмотр структуры и содержимого таблиц

Структуру таблицы можно просмотреть и изменить с помощью команды Изменить контекстного меню, вызванного на имени таблицы. В окне запроса сведения о таблице, в том числе и об ее структуре можно получить с помощью системной хранимой процедуры sp_help имя_таблицы (рис. 5.13).

Рис. 5.13. Сведения о таблице izdel (структура приведена в верхних строках) Всё содержимое таблицы просматривается с помощью запроса SELECT * FROM <имя таблицы>[4].

☻ Аналогичным образом Вам необходимо показать структуры и содержимое всех таблиц. Допускается содержимое таблиц привести в приложении.

 

5.4. Пример оформления главы 3 «Основные команды SQL для извлечения, добавления и изменения данных»

Для извлечения набора данных из базы данных служат запросы. Запросы организуются с помощью команды SELECT. Это мощный и гибкий инструмент, позволяющий автоматически производить выборку строк из одной или нескольких взаимосвязанных таблиц или представлений, группировать строки, фильтровать их по определенному признаку, сортировать в порядке убывания или возрастания и др.

Общий вид команды:

Select <список полей> from <имя таблицы>

[inner join <имя связанной таблицы> on <условие связи>]

[where <условное выражение>]

[group by <группировочный признак>]

[order by <выражение> [asc|desc]];

Для добавления строки в таблицу используется команда INSERT, относящаяся к командам DML (Data Manipulation Language). Добавляемые значения можно вводить с указанием имен столбцов, либо без указания имен столбцов, но в этом случае вводимые значения должны по количеству, последовательности и типу соответствовать структуре полей таблицы.

Общий вид команды:

Insert into <имя таблицы> [(список полей)] values (<список значений>);

Для изменения данных в таблице или представлении применяется команда UPDATE, также относящаяся к командам DML. Эта команда заменяет значения указанных полей на заданные значения в строках, удовлетворяющих условию (или во всех строках, если условие не задано).

Общий вид команды:

Update <имя таблицы> set <имя поля1>=<значение1>,… [WHERE <условное выражение>];

Задание 1. Показать список выпущенных изделий в заданном цехе. В запросе вывести поля: код и наименование цеха, код и наименование изделия, количество выпущенных изделий, дату выпуска.

Вид команды:

select v.kod_c as Код_цеха, c.name_c as Наим_цеха, i.kod_i as Код_изделия, i.name_i as Наим_изделия, v.kol_v as Количество, v.dat as Дата from vypusk v inner join cex c on v.kod_c=c.kod_c inner join izdel I on v.kod_i=i.kod_i where v.kod_c=1

Результат выполнения запроса приведен на рис. 5.14.

Рис. 5.14. Результат запроса по заданию 1

 

Задание 2. Преобразовать предыдущий запрос таким образом, чтобы он выводил список выпущенных изделий за заданный календарный период.

Вид команды:

SELECT v.kod_c AS Код_цеха, c.name_c AS Наим_цеха,

i.kod_i AS Код_изделия, i.name_i AS Наим_изделия, v.kol_v AS Количество,

v.dat AS Дата FROM vypusk v INNER JOIN cex c ON v.kod_c=c.kod_c

INNER JOIN izdel I ON v.kod_i=i.kod_i WHERE v.kod_c=1

and v.dat between '26/01/2008' and '29/01/2008'

Контрольный пример:

Зададим период с 26.01.08 по 29.01.08. Очевидно, что список выпущенных изделий будет тем же, что в предыдущем примере, за исключением последних трех строк (рис. 5.15).

 

Рис. 5.15. Результат выполнения запроса по заданию 2  

Задание 3. В новую таблицу поместить сведения об общем выпуске изделий каждого наименования. Показать список изделий, выпуск которых превышает среднее количество выпущенных изделий. Показать поля: наименование изделия, общий выпуск данного изделий, средний выпуск среди всех изделий.

Создадим новую таблицу ob_vp с двумя полями kod_i (код изделия), sumkol (общее количество данных изделий) из сгруппированного по коду изделия запроса.

SELECT kod_i,sum(kol_v) AS sumkol into ob_vp FROM vypusk

GROUP BY kod_i (1)

Рис. 5.15. Результат создания таблицы из группового запроса Определим среднее значение суммарного выпуска каждого изделия во вновь созданной таблице (рис. 5.16).
Рис. 5.16

 

 

Команда запроса, показанная ниже, обращается к двум таблицам: izdel и ob_vp. Подзапрос в списке полей показывает среднее количество всех выпущенных изделий, такой же подзапрос в правой части условия позволяет вывести только те изделия, общий выпуск которых (поле ob_vp.sumkol) превышает средний выпуск по всем изделиям (рис. 5.17).

select o.kod_i, i.name_i,o.sumkol,

(select avg(sumkol) from ob_vp) as Средний_выпуск

from ob_vp o INNER JOIN izdel i

on o.kod_i=i.kod_i where o.sumkol>(select avg(sumkol) from ob_vp)(2)

 

Рис. 5.17. Результат выполнения запроса по заданию 3

Контрольный пример:

Произведем подсчет общего выпуска каждого изделия по данным из таблицы «Выпуск»:

Таблица 5.7

Расчет общего выпуска для каждого вида изделия

Код изделия Количество
   
  50+10=60
  90+100=190
   
  25+80+50+50=205
  18+70=88
   
  43+60=103
   
  50+5+5=60
   
  24+40=64
   
   

 

Результат выполнения команды создания таблицы ob_vp команда (1) совпадает с результатом, представленным в табл. 5.7.

Найдем среднее количество выпуска:

(100+60+190+71+155+88+90+103+20+60+30+64+20+15)/14≈79,71.

Очевидно, что выпуск выше среднего имеют изделия с кодами: 10, 30, 50, 60, 70 и 80. Обратившись к данным таблицы, найдем, что это изделия: стол обеденный, стол компьютерный, стул кухонный, стул, шкаф-гардероб и шкаф книжный. Нетрудно убедиться, что команда 2 выводит список именно этих изделий.

Задание 4. Для определенного вида изделий показать список всех деталей, необходимых для его изготовления. Показать поля: код и наименование изделия, код и наименование детали, количество деталей, цена детали, стоимость общего количества каждого типа детали.

Вид команды:

SELECT i.kod_i AS Код_изд, i.name_i AS Наим_изд, d.kod_d AS Код_дет,

d.name_d AS Наим_дет, id.kol AS Количество, d.cena AS Цена,

id.kol*d.cena AS Стоимость

FROM izd_det id INNER JOIN izdel i

ON (id.kod_i=i.kod_i) INNER JOIN detal d

ON (id.kod_d=d.kod_d) WHERE id.kod_i=90

 
 

Рис. 5.18. Результат выполнения запроса по заданию 4

 

Контрольный пример:


Найдем список всех деталей для изготовления изделия с кодом 100 (шкаф-буфет), и их количество на 1 изделие в таблице IZD_DET (см. рис. 5.19)

Рис. 5.19. Список кодов деталей для изделия с кодом 90

Объединим полученные данные и вычислим стоимость общего количества каждой детали, как произведения количества и цены (см. табл. 5.8)

Таблица 5.8

Код изделия Наименование изделия Код детали Наименование детали Кол-во деталей Цена детали Общая стои-мость
  шкаф-стеллаж   полка      
  шкаф-стеллаж   стенка боковая      
  шкаф-стеллаж   стенка верхняя      
  шкаф-стеллаж   стенка нижняя      

 

Как видно из рис. 5.18, запрос дает аналогичный результат, следовательно, он работает правильно.

Задание 5.Изменим цену определенной детали на 10%.

Вид команды:

Update detal set cena=cena*1.1 where kod_d=122

Рис. 5.19. Результат выполнения команды UPDATE

 

Задание 6. Изменить цену на 2% тех деталей, цена которых ниже средней.

Вид команды:

Update detal set cena=cena*1.02 where cena<(select avg(cena) from detal)

Рис. 5.20. Результат выполнения задания 6 На рис. 5.20 первая команда рассчитывает и выводит среднее значение цены деталей. Вторая команда запроса выводит список кодов деталей и их цен для тех деталей, цена которых ниже средней. Команда UPDATE увеличивает цены деталей на два процента для тех деталей, цена которых ниже средней. А последним запросом мы выводим коды и новые цены для двух первых деталей из полученного списка (см. результат второй команды). Мы видим, что цена их увеличена на 2%, следовательно, команда UPDATE проработала правильно.

 

Результаты выборки с помощью запроса после изменения цен изделий (рис. 5.27) и вычислений, проведенных вручную (см. рис.5.26), совпадают. Это означает, что выполненная нами команда UPDATE сработала правильно.

5.5. Пример оформления главы 4. «Создание процедур и функций»

 

Задание1. Создать функцию для подсчета затрат на комплектующие детали для определенного вида изделия.

Текст функции:

CREATE FUNCTION zcount(@p_naim VARCHAR(20))

RETURNS real AS

BEGIN

declare @v_sum real

set @v_sum=(SELECT SUM(id.kol*d.cena)

FROM izd_det id INNER JOIN detal d

ON id.kod_d=d.kod_d WHERE id.kod_i=

(SELECT kod_i FROM izdel WHERE name_i=@p_naim)

GROUP BY kod_i)

RETURN (@v_sum)

end

Проверим работу функции, создав следующую программу (рис. 5.21)

declare @ss real

set @ss=dbo.zcount('диван')

select @ss as Сумма

 

 
 

Рис. 5.21. Проверка работы функции

Проверим правильность работы функции на примере изделия «диван». Найдем его код по таблице detal (он равен 120). В таблице izd_det найдём коды входящих в него деталей и их количество: деталь 129 – 1, деталь 133 – 1, деталь 135 – 2, деталь 138 – 2. Из таблицы «Деталь» выберем цены этих деталей и вычислим общую стоимость (см. рис. 5.22):

1*500+1*200+2*100+2*200=500+200+200+400+60=1300 р.

Рис. 5.22. Данные из таблиц izd_det и detal для расчета контрольного примера

Задание 2. Создать процедуру для выдачи сведений о выпуске определенного изделия в определенном цехе (использовать номер цеха и код изделия в качестве параметров процедуры). Процедура должна выдавать номер цеха, дату выпуска, наименование изделия, наименование детали, количество деталей на одно изделие, стоимость комплектующих на одну деталь, стоимость комплектующих на весь выпуск, а затем найти и вывести общую стоимость деталей на изделие и общую стоимость деталей на весь выпуск.

Текст процедуры:

CREATE PROC sum_v @pc INt,@pi INT AS

BEGIN

SELECT c.kod_c,v.dat,v.kod_i,i.name_i,v.kol_v,id.kod_d,d.name_d,

id.kol,d.cena,id.kol*d.cena AS стоим_на_изд,

id.kol*d.cena*v.kol_v AS стоим_на_вып_дату

FROM cex c INNER JOIN vypusk v ON c.kod_c=v.kod_c

INNER JOIN izdel i ON i.kod_i=v.kod_i

INNER JOIN izd_det id ON i.kod_i=id.kod_i

INNER JOIN detal d ON d.kod_d=id.kod_d

WHERE c.kod_c=@pc AND i.kod_i=@pi

ORDER BY v.dat

 

SELECT c.kod_c,v.kod_i,i.name_i,

SUM(id.kol*d.cena) AS общ_ стоим_на_изд,

SUM(id.kol*d.cena*v.kol_v) AS общ_ стоим_на_выпуск

FROM cex c INNER JOIN vypusk v ON c.kod_c=v.kod_c

INNER JOIN izdel i ON i.kod_i=v.kod_i

INNER JOIN izd_det id ON i.kod_i=id.kod_i

INNER JOIN detal d ON d.kod_d=id.kod_d

WHERE c.kod_c=@pc AND i.kod_i=@pi

GROUP BY c.kod_c,v.kod_i,i.name_i

END

 

Первый запрос в процедуре в каждой строке выдает сведения о детали, входящей в изделие при каждом его выпуске. В запросе стоит условие для отбора записей по заданном цеху (параметр @pc) и заданному изделию (параметр @pi). Второй запрос - сгуппированный, в нем определяется общая стоимость деталей на изделие и на общий выпуск изделий данного типа в данном цехе.

Для проверки работы процедуры была выполнена следующая команда:

EXEC sum_v 1, 20,

где 1 – номер цеха, 20 – код изделия.

Результат представлен на рис. 5.23.

Рис. 5.23. Результаты выполнения процедуры Проверим правильность работы процедуры: из первой таблицы видно, что изделие с кодом 20 (стол письменный) выпускался два раза: 26.01.2008 и 28.01.2008. Стоимость всех деталей на каждое изделие равна сумме 270+280+40=590 р. и при определении общей стоимости на изделие в сгруппированном запросе эта сумма удваивается. Аналогично можно просчитать и общую стоимость всех комплектующих на выпуск всех изделий данного типа в данном цехе. Задание 3. Создать процедуру для выдачи списка изделий определенного изделия (код изделия задать в качестве параметра процедуры). В процедуре организовать проверку на правильность задания параметра, и если данный код отсутствует в таблице izd_det, выдать сообщение об ошибке. Текст процедуры: create proc detali @kod_i int as begin if not exists(select * from izd_det where kod_i=@kod_i) print ('Нет изделия с таким кодом, проверьте правильность указания параметра') else select i.kod_i, i.name_i, id.kod_d, d.name_d,d.cena, id.kol from izdel i inner join izd_det id on i.kod_i=id.kod_i inner join detal d on d.kod_d=id.kod_d where i.kod_i=@kod_i end

Для вызова процедуры использовалась команды:

· exec detali 120

· exec detali 1200

В первом случае результат представлен на рис. 5.24, во втором – на рис. 5.25

 
 

Рис. 5.24. Результат выполнения процедуры при правильном

указании параметра

 

Рис. 5.25. Результат работы процедуры при вводе неправильного значения параметра

 

 

5.7. Пример оформления главы 5 «Создание триггеров»

Триггер – это процедура, которая срабатывает автоматически, когда с таблицей происходит определенное событие. Триггеры активизируются при использовании команд INSERT, DELETE или UPDATE. Триггеры позволяют реализовывать сложные алгоритмы проверки вводимых значений, отслеживать модификацию таблиц базы данных, выполнять какие-либо необходимые действия, причем действия могут распространяться и на другие таблицы базы данных.

Общий вид команды создания и модификации триггера:

CREATE TRIGGER [owner.]имя_триггера
ON [owner.]имя_таблицы
[ WITH ENCRYPTION ]
FOR [ AFTER | INSTEAD OF] INSERT | UPDATE |DELETE
AS
[IF UPDATE ( имя_поля )
[ AND | OR UPDATE ( имя_поля)]
[... n ]
sql_statement [... n ]
Задание 1. Создать триггер, который бы перед добавлением новой записи в таблицу, содержащую сведения о комплектующих деталях для каждого вида изделия, проверял бы правильность ввода кода изделия и кода детали и выдавал ошибку с соответствующим текстом (например, «нет изделия с кодом 199»).

Текст триггера:

CREATE trigger izd_det_insert

on izd_det for insert

as

declare @kod_i int, @kod_d int,@str char(30)

set @kod_i=(select kod_i from inserted)

set @kod_d=(select kod_d from inserted)

if not exists (select kod_i from izdel

where kod_i=@kod_i)

begin

/*создаем строку для вывода текста ошибки,

функция CONVERT преобразует число в строку

символов длиной в три символа */

set @str= 'Нет изделия с кодом' +convert(char(3),@kod_i)

raiserror (@str,10,1)

rollback tran

end

else

if not exists(select *

from detal where kod_d=@kod_d)

begin

set @str= 'Нет детали с кодом' +convert(char(3),@kod_d)

raiserror (@str,10,1)

rollback tran

end

else

commit tran

 

Чтобы триггер мог работать, нам пришлось предварительно отключить констрейнты типа Foreign Key для таблицы izd_ det(см. раздел 5.3.2). Они, в принципе, выполняют те же проверки, которые будет делать данный триггер, но сработают раньше триггера. Поэтому вначале просмотрим сведения о таблице izd_ det с помощью команды sp_help izd_det, чтобы узнать имена констрейнтов, а затем выполним команды изменения структуры таблицы:

SP_HELP izd_det

ALTER TABLE izd_det NOCHECK CONSTRAINT fk_id_izd

ALTER TABLE izd_det NOCHECK CONSTRAINT fk_id_det

Для проверки работы триггера выполним команду добавления записи с кодом изделия (199), которsq отсутствует в таблице izdel.

INSERT INTO izd_det VALUES(199,120,2)

Результат показан на рис. 5.26

 
 

Рис. 5.26. Результат срабатывания триггера при попытке добавить запись с неправильным кодом изделия

Затем была проведена проверка работы триггера при добавлении записи с кодом детали (202), который отсутствует в таблице detal (рис. 5.27).

Команда добавления записи:

INSERT INTO izd_det VALUES (120,202,2)

 

Рис. 5.27. Проверка срабатывания триггера при попытке ввести запись с несуществующим кодом детали

Задание 2. Создать новую таблицу (sklad) для хранения сведений о выпущенных изделий с полями: Код изделия, Количество. Заполнить таблицу данными из сгруппированного запроса к таблице «Выпуск изделий». Создать триггер, который при добавлении новой записи в таблицу «Выпуск изделий», изменял бы соответственно поле Количество в таблице sklad.

Команды для создания таблицы:

create table sklad (kod_i int,kol int)

insert into sklad select kod_i,sum (kol_v) from vypusk

group by kod_i

select * from sklad

Результат показан на рис.. 5.28.

 
 

Рис. 5.28. Создание таблицы sklad

Текст триггера:

 

create trigger vyp_insert on vypusk

for insert

as

begin

declare @kod_i int, @s char(30), @kol_v int

set @kod_i=(select kod_i from inserted)

if not exists(select * from izdel where kod_i=@kod_i)

begin

set @s='Неправильный код изделия'+ convert(char(4),@kod_i)

raiserror(@s,10,1)

rollback tran

end

else

begin

update sklad set kol=kol+ (select kol_v from inserted)

where kod_i=@kod_i

commit tran

end

end

Результаты проверки триггера с ошибочным и правильным кодами изделия в командах добавления записи приведены соответственно на рис. 5.29, 5.30.

 
 

Рис. 5.29. Триггер выдает сообщение об ошибке при попытке ввести код изделия, отсутствующий в таблице izdel

 
 

Рис. 5.30. Результат срабатывания триггера при добавлении записи с правильным кодом изделия

Сравнение данных таблицы sklad на рис. 5.28 и 5.30 показывает, что при вводе записи в таблицу vypusk с кодом изделия, равным 10, количеством выпущенных изделий, равным 30, в первой записи таблицы Sklad поле kol увеличилось на 30 единиц, что доказывает правильность функционирования триггера.

 

☻В тексте пояснительной записки должны быть приведены все варианты результатов выполнения триггеров для правильных и ошибочных данных.

5.8. Пример оформления заключения по курсовому проекту

В курсовом проекте был разработан проект базы данных. Исходная таблица была разделена на пять таблиц, находящихся в третьей нормальной форме. В полученном проекте базы данных устранены избыточность и потенциальная противоречивость данных, а также аномалии удаления и добавления данных. Для моделирования структуры данных применен пакет Erwin, создана семантическая модель «сущность-связь».

При работе над курсовым проектом освоены основы языка запросов SQL.. Разработка и отладка проекта проводилась в СУБД SQL Server 2005. Получены навыки создания запросов, процедур, функций, триггеров. Представленный проект может быть дополнен интерфейсом, удобным для пользователя, разработанным с помощью других языковых средств, например, DELPHI.

Полученные знания и навыки могут быть использованы при изучении других дисциплин, в дипломном проектировании, а также в дальнейшей работе, т.к. СУБД SQL Server 2005 является основой для многих приложений.

 

6. Нормативные требования к оформлению курсового проекта

Курсовой проект выполняется в соответствии с заданием. Пояснительная записка к курсовому проекту должна быть оформлена в текстовом редакторе WORD на листах формата А4 со следующими полями: верхнее и нижнее поля не менее 20 мм, правое – не менее 10 мм, левое – не менее 25 мм. Текст абзацев должен быть напечатан через полтора интервала шрифтом Times New Roman размером 14 пт. Выравнивание текста – по ширине, отступ первой строки абзаца – 0,7 см. Заголовки разделов и подразделов должны быть выровнены по центру и выполнены полужирным шрифтом. Заголовки разделов должны быть набраны прописными буквами. Допускается в заголовках разделов и подразделов использовать нумерацию. Разделы должны иметь порядковые номера в пределах всего документа, обозначенные арабскими цифрами. Подразделы должны иметь нумерацию в пределах каждого раздела. Номер подраздела состоит из номеров раздела и подраздела, разделенных точкой. В конце заголовков разделов и подразделов точка не ставится. Введение и заключение не нумеруются.

Нумерация страниц документа, включая приложения, должна быть сквозная по всему тексту (все без исключения листы документа должны быть пронумерованы ). Номера страниц проставляются в правом верхнем углу без точки в конце. На титульном листе (первая страница) номер страницы не ставится, а только подразумевается.

Иллюстрации могут быть расположены как по тексту документа, так и на отдельном листе. Все иллюстрации (графики, схемы, диаграммы, фотографии, ксерокопии и отсканированные копии оригинальных документов и изображений, компьютерные распечатки содержимого экранов) именуются рисунками.

Иллюстрации следует обозначать в тексте словом рис. и нумеровать арабскими цифрами сквозной нумерацией по тексту документа. Допускается нумеровать иллюстрации в пределах раздела, например: рис. 2.5. Рисунок должен располагаться по центру листа, подпись выполняется под рисунком, точка после наименования рисунка не ставится. Допускается подписывать рисунки без поясняющего текста, либо дополнять номер рисунка дополнительным текстом (см. рис. 5.49-5.50).

Рис.5.49. Окно для установки параметров автозамены

Рис.5.50

В тексте документа ссылка на рисунок оформляется следующим образом: (см. рис. 5.49) или (рис. 5.50, или «как видно из рис. 5.50…». Ссылка на рисунок должна предшествовать самому рисунку.

Таблицы следует нумеровать арабскими цифрами сквозной нумерацией в пределах документа. Допускается нумеровать таблицы в пределах раздела. В этом случае номер таблицы состоит из номера раздела и порядкового номера таблицы в данном разделе, разделенных точкой, например: Таблица 1.1. Точка после номера таблицы не ставится. Слово «Таблица» с номером выравнивается по правой границе таблицы, название таблицы ставится в следующей строке и выравнивается по центру. Точка после наименования таблицы не ставится. Сама таблица должна выравниваться по центру листа.

При переносе части таблицы на другую страницу слово «Таблица» и название её указывают один раз над первой частью таблицы, над другими частями слева пишут слова «Продол­жение табл.» с указанием номера таблицы.

На всетаблицы документа должныбыть приведены ссылкив тексте документа, при ссылке следует писать слово «табл.» с указанием её номера (см. примеры в тексте данного пособия).

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

Пояснения каждого символа следует давать с новой строки в той последовательности, в которой символы приведены в формуле. Первая строка пояснения должна начинаться со слова "где" с двоеточием после него, например:

stoim = kol*cena (1)

где stoim – стоимость товара;

kol - количество проданного товара;

cena - цена товара.

Формулы в тексте документа нумеруются арабскими цифрами, которые записывают на уровне формулы справа в круглых скобках. Допускается нумерация формул в пределах раздела. В этом случае номер формулы состоит из номера раздела и порядкового номера формулы, разделенных точкой, например (2.5).

Ссылки на порядковые номера формул, если это необходимо, дают в круглых скобках, например, «…в формуле (1)».

Материал вспомогательного характера, дополняющий текст документа, рекомендуется помещать в приложениях. Приложениями могут быть, например: результаты экспериментов, представленные большим числом иллюстраций и таблиц, расчеты, описания алгоритмов, тексты компьютерных программ. Приложения размещают после списка использованных источников. В тексте документа на все приложения должны быть даны ссылки. В ссылке на определенное приложение следует указать слово «прилож.» и номер приложения, например, см. прилож. 2.

Каждоеприложение следует начинать с новойстраницы. В центре первой строки на странице печатают слово "Приложение" и его номер

Все приложения должныбыть перечислены в Оглавлении документа с указанием их заголовков и соответствующих номеров страниц.


Приложение 1

 

 


Приложение 2

Варианты заданий для курсового проектирования

Вариант 1

1. Спроектировать базу данных методом нормализации и методом семантического моделирования. Данные, которые должны храниться в базе, представлены в виде одной таблицы со следующими столбцами:

Код поставщика (k_Post);

Наименование поставщика (n_post);

Код товара (k_tov);

Наименование товара (n_tov);

Цена товара у данного поставщика (cena_post):

Дата поставки (data_past);

Объем поставки (v_post);

Количество данного товара на складе (kol):

Цена продажи (Цена поставки с наценкой в 10%) (cena_prod);

Дата продажи (data_prod);

Объем продажи (v_prod);

Код менеджера (km);

Фамилия, имя, отчество менеджера, продавшего товар (fio);

Процент, начисляемый менеджеру за данный товар (procent);

Оклад менеджера (oklad).

2. Создать базу данных, таблицы и заполнить их данными. Номенклатура товаров должна содержать не менее 10 наименований, список менеджеров – не менее пяти фамилий, сведения о поставках и продажах – не менее 20 записей каждый.

Предусмотреть в создаваемых таблицах ограничения целостности следующих типов:

· NOT NULL – для полей, которые будут являться первичными и внешними ключами,

· PRIMARY KEY – для полей, выбранных в качестве первичных ключей,

· FOREIGN KEY – для полей, являющихся внешними ключами,

· CHECK для полей «Дата поставки» и «Дата продажи» (не позже системной даты), а также для полей «Объем продажи» и «Объем поставки» (их значения должны быть положительными числами). Построить диаграмму базы данных.

3. В третьей главе курсового проекта «Основные команды SQL для извлечения, добавления и изменения данных» выполнить следующие действия и представить их результаты.

3.1 Показать список товаров, проданных за определенный период (показать поля: data_prod, k_tov, n_tov, v_prod, cena_prod, v_prod*cena_prod, fio).

3.2. Показать список товаров с ценой, превышающей среднюю цену товаров. Показать поля: наименование товара, код товара, цену продажи, среднюю цену.

3.3. Показать список товаров, которые указаны в прайс-листе фирмы, но в данный момент отсутствуют на складе.

3.4. В новую таблицу скопировать сведения о всех товарах, проданных определенным менеджером, показать поля: дата продажи, код товара, объем продажи, цену продажи, стоимость продажи, премия менеджеру за продажу.

3.5. Увеличить цену поставки товара с заданным наименованием на 15%.

3.6. Определить общую стоимость товаров, проданных каждым менеджеров в определенном месяце и общую сумму премии каждому менеджеру за продажи.

4. В четвертой главе должны быть представлены разработанные процедуры и функции.

4.1. Создать функцию для определения премии менеджеру за каждую продажу. Проверить работу функции с помощью запроса.

4.2. Создать процедуру с параметрами «код товара» и «цена товара». Процедура должна выполнять проверку, есть ли данный товар в прайс-листе фирмы. Если такая запись существует, следует изменить цену продажи в соответствии с параметром «цена товара». Если такого товара еще нет в прайс-листе, следует добавить о нем новую запись.

5. В пятой главе следует представить дополнительные средства обеспечения целостности базы данных с помощью триггеров.

5.1. Создать триггер, который бы при вводе новой записи о поставленном товаре изменял бы количество соответствующего товара на складе, если таковой имеется, и добавлял новую запись в список товаров на складе в противном случае.

5.2. Создать триггер, который бы проверял, достаточно ли товара на складе при попытке внести новую запись о продаже товара. Если товара достаточно, следует уменьшить количество этого товара на складе на величину объема продажи, если товара недостаточно, выдать об этом сообщение и откатить транзакцию.

Вариант 2

1. Спроектировать базу данных методом нормализации и методом семантического моделирования. Данные, которые должны храниться в базе, представлены в виде одной таблицы со следующими столбцами:

Артикул ткани,

Наименование ткани,

Цена одного метра ткани.

Код красителя,

Наименование красителя,

Расход красителя на единицу ткани,

Цена единицы красителя,

Номер красильной машины,

Фамилия мастера.

Дата выпуска ткани,

Количество ткани.

Каждая ткань может быть окрашена одним или несколькими красителями. На каждой красильной машине одним мастером в одно и то же время выпускается только один вид ткани.

2. Разработать базу данных, таблицы и заполнить их данными. Номенклатура тканей должна содержать не менее 7 наименований, список красителей – не менее пяти красителей, сведения о выпуске товаров – не менее 30 записей, сведения о красильных машинах с закрепленными за ними мастерами –не менее пяти.

Предусмотреть в создаваемых таблицах ограничения целостности следующих типов:

· NOT NULL – для полей, которые будут являться первичными и внешними ключами,

· PRIMARY KEY – для полей, выбранных в качестве первичных ключей,

· FOREIGN KEY – для полей, являющихся внешними ключами,

· CHECK для поля «Дата выпуска» (не ранее 1 января 2008 г. и не позже системной даты), а также для полей «Количество ткани», «Цена одного метра ткани» (их значения должны быть положительными числами).

Построить диаграмму базы данных.

3. В третьей главе курсового проекта «Основные команды SQL для извлечения, добавления и изменения данных» выполнить следующие действия и представить их результаты.

4.1. Создать запрос для выдачи следующих данных для ткани определенного наименования: артикул ткани, наименование ткани, код красителя, наименование красителя, удельный расход красителя, цена красителя, стоимость красителя на единицу ткани.

4.2. Создать сгруппированный запрос для подсчета общей стоимости каждого красителя на выпуск всех тканей за определенный календарный период.

4.3. Создать сгруппированный запрос с подсчетом количества каждого вида ткани, выпущенной каждым мастером

4.4. Изменить цену каждого красителя, используемого для ткани определенного наименования, на 25 р. В команде редактирования используйте подзапрос.

4.5. Скопировать в новую таблицу следующие данные: дата выпуска, артикул, наименование ткани, стоимость всех красителей, затраченных на данный вид ткани.

4.6. Рассчитать общие затраты каждого красителя в количественном и стоимостном выражении на весь выпуск каждой ткани за определенный месяц.

 

5. В четвертой главе должны быть представлены разработанные процедуры и функции.

5.1.Создать функцию для определения стоимости определенного красителя на заданное количество ткани за каждую продажу. Проверить работу функции с помощью запроса.

5.2. Создать процедуру с параметрами «код красителя» и «цена красителя». Процедура должна выполнять проверку, есть ли данный краситель в списке красителей. Если такая запись существует, следует изменить значение поля «цена красителя» на значение параметра Если такого красителя еще нет в списке, следует добавить о нем новую запись.

6. В пятой главе должны быть разработаны и отображены средства обеспечивающие целостность данных в создаваемой базе данных с помощью триггеров.

6.1. Создать триггер, который бы при вводе новой записи о расходе красителя на определенную ткань проверял бы, существует ли артикул данной ткани в списке тканей, а код красителя – в списке красителей. В случае неправильного ввода того или другого параметра следует выдать сообщение и откатить транзакцию.

6.2. Создать триггер на удаление записи из таблицы «Список тканей». В теле триггера осуществить проверку, существуют ли записи о выпуске данной ткани и отменить удаление, если такая запись имеется.

Вариант 3

1. Спроектировать базу данных для риэлтерского агентства методом нормализации и методом семантического моделирования. Данные, которые должны храниться в базе, представлены в виде одной таблицы со следующими столбцами:

Код клиента,

ФИО клиента,

Адрес,

Телефон домашний,

Телефон сотовый,

Причина контакта (продажа или покупка),

Код риелтора,

ФИО риелтора,

дата приема на работу,

дата рождения,

телефон,

оклад,

код объекта продажи (покупки),

адрес,

район

количество комнат,

общая площадь,

площадь кухни

запрашиваемая цена,

статус объекта (продан, оформление документов, выставлен на продажу),

дата начала контакта, дата продажи (покупки),

цена продажи (покупки)

Риелтор с каждой продажи получает комиссионные в размере 10% от цены продажи.

2. Разработать базу данных, таблицы базы данных и заполнить их данными. Список риелторов и список клиентов должен содержать не менее 5 фамилий каждый, список квартир не менее 20 строк.

Предусмотреть в создаваемых таблицах ограничения целостности следующих типов:

· NOT NULL – для полей, которые будут являться первичными и внешними ключами,

· PRIMARY KEY – для полей, выбранных в качестве первичных ключей,

· FOREIGN KEY – для полей, являющихся внешними ключами,

· CHECK для полей «Дата начала контакта», «Дата продажи (покупки)», (их значения не должны быть позже системной даты, и вторая должна быть не меньше первой), а также для полей «Количество комнат» и «Общая площадь» (их значения должны быть положительными числами).

Построить диаграмму базы данных.

3. В третьей главе курсового проекта «Основные команды SQL для извлечения, добавления и изменения данных» выполнить следующие действия и представить их результаты.

3.1. Показать список квартир, проданных за определенный календарный период. Показать все сведения о квартире, код и ФИО риелтора, сумму комиссионных за продажу.

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

3.3. Подсчитать общую сумму комиссионных каждого риелтора.

3.4. В новую таблицу скопировать все сведения о квартирах, с которыми в данный момент работает определенный риелтор.

3.5. Повысить стоимость всех квартир, участвующих в сделках, на 5%, в которых дата выставления на продажу больше определенного значения.

3.6. Подсчитать доход каждого риелтора за определенный месяц. Показать поля: код риелтора, ФИО, количество сделок, общая сумма продаж, комиссионные за продажи, оклад + комиссионные.

3.7. Показать фамилии трех риелторов, которые получили наибольшую сумму комиссионных за весь период работы.

4. В четвертой главе курсового проекта должны быть представлены разработанные функции и процедуры.

4.1. Создать функцию, которая подсчитывала бы сумму комиссионных в зависимости от цены продажи по следующему алгоритму: если цена продажи меньше 20000, то комиссионные равны 6% от цены, если цена продажи от 20000 до 35000, то комиссионные равны 7% от цены продажи, если цена продажи выше 35000, по комиссионные равны 10% от цены продажи.

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

5. В пятой главе должны быть разработаны и отображены средства обеспечивающие целостность данных в создаваемой базе данных с помощью триггеров.

5.1.Создать триггер, который при изменении статуса объекта на «продано» проставлял дату продажи, равной системной дате.

5.2.Создать триггер, который бы при изменении сведений о клиенте (ФИО, адрес клиента) проверял, существует ли такой клиент в базе, и если существует, то проводил бы изменения в заданном поле, а если нет, то добавлял бы новую запись о клиенте.

Вариант 4

1. Спроектировать базу данных методом нормализации и методом семантического моделирования. Данные, которые должны храниться в базе, представлены в виде одной таблицы со следующими столбцами:

код поставщика

наименование поставщика,

код товара,

наименование товара,

дата поставки,

количество поставленного товара,

цена поставленного товара

код покупателя,

наименование покупателя,

дата покупки,

код купленного товара,

цена купленного товара.

количество купленного товара данным покупателем на данную дату.

В первой главе курсового проекта описать процесс проектирования базы данных методом нормализации таблиц и методом семантического моделирования.

2. Разработать базу данных, таблицы и заполнить их данными. Складов должно быть не менее четырех. Номенклатура товаров должна содержать не менее 10 наименований, список покупателей и список поставщиков – не менее пяти человек, список поставленных товаров и список купленных товаров не менее 20 строк каждый.

Предусмотреть в создаваемых таблицах ограничения целостности следующих типов:

· NOT NULL – для полей, которые будут являться первичными и внешними ключами,

· PRIMARY KEY – для полей, выбранных в качестве первичных ключей,

· FOREIGN KEY – для полей, являющихся внешними ключами,

· CHECK для полей «Дата поставки» и «Дата продажи» (не позже системной даты), а также для полей «Цена поставленного товара», «Цена купленного товара» (их значения должны быть положительными числами).

· DEFAULT для поля «Количество поставленного товара» (его значение должно быть не менее 10 единиц).

Построить диаграмму базы данных.

3. В третьей главе курсового проекта «Основные команды SQL для извлечения, добавления и изменения данных» выполнить следующие действия и представить их результаты.

3.1. Показать список поставленных товаров заданного наименования за определенный период (показать поля: код товара, наименование товара, цена товара, дата поставки, количество, стоимость товара).

3.2. Подсчитать общее количество поступившего товара каждого наименования и общее количество проданного товара каждого наименования и остатки каждого товара.

3.3. В новую таблицу скопировать данные о поставках определенного поставщика. Показать следующие поля: код поставщика, наименование поставщика, дата поставки, код товара, наименование товара, цена, количество.

3.4. Показать первые три товара, стоимость продаж которых является наибольшей.

3.5. Для заданного интервала дат показать список товаров, цена продажи которого больше цены поставки на не менее, чем на 10%.

3.6. Показать список товаров, цена продажи которых выше средней цены продажи.

3.7. Увеличить на 3% цену тех товаров, цена продажи которых ниже средней продажной цены.

4. В четвертой главе должны быть представлены разработанные процедуры и функции, созданные с помощью языка программирования SQL.

4.1. Создать функцию для определения стоимости проданного товара с параметрами: код товара, количество товара.

4.2. Создать процедуру для подсчета стоимости и вывода каждого проданного товара на каждую дату продажи и общей стоимости продажи данного товара.

4.3. Создайте процедуру, которая бы заполнила данными новую таблицу, в которой должны присутствовать следующие поля: код товара, наименование товара, наличие товара(общая сумма поставки-общая сумма продажи).

5. В пятой главе должны быть разработаны и отображены средства обеспечивающие целостность данных в создаваемой базе данных с помощью триггеров.

5.1.Создайте триггер, который бы при попытке ввода новой записи о продаже товара, проверял, в достаточном ли количестве имеется данный товар и выдавал ошибку, если это не так.

5.2.Создайте триггер, который бы препятствовал изменению поля код товара в таблице поставки.

Вариант 5

1. Спроектировать базу данных методом нормализации и методом семантического моделирования. Данные, которые должны храниться в базе, представляют собой сведения о продаже билетов на поезда. Они представлены в виде одной таблицы со следующими столбцами:

дата отправления,

номер поезда,

направление,

время отправления,

время в пути (час),

номер вагона,

код типа вагона,

название типа вагона,

общее количество мест,

количество проданных мест.

В первой главе курсового проекта описать процесс проектирования.

2. Разработать базу данных, таблицы и заполнить их данными. Количество поездов должно быть не менее пяти. Количество вагонов в каждом поезде – не менее 8. Типы вагонов: плацкартный, купейный, мягкий, СВ, общий.

Предусмотреть в создаваемых таблицах ограничения целостности следующих типов:

· NOT NULL – для полей, которые будут являться первичными и внешними ключами,

· PRIMARY KEY – для полей, выбранных в качестве первичных ключей,

· FOREIGN KEY – для полей, являющихся внешними ключами,

· CHECK для полей «Общее количество мест» и «Количество проданных мест» (значение первого поля должно быть не меньше значения второго),

· DEFAULT для поля «Дата отправления» (равное системной дате).

Построить диаграмму базы данных.

3. В третьей главе курсового проекта «Основные команды SQL для извлечения, добавления и изменения данных» выполнить следующие действия и представить их результаты.

3.1. Показать список поездов с перечнем вагонов, в которых было продано более половины мест (показать данные по полям: номер поезда, направление, номер вагона, тип вагона, общее количество мест, количество проданных мест.

3.2. Преобразовать предыдущий запрос таким образом, чтобы эти данные выдавались для определенного направления.

3.3. Показать список поездов с перечнем вагонов, кроме общих, по которым проданы все билеты (вывести те же данные, что и в предыдущих запросах).

3.4. Создать сгруппированный запрос с подсчетом общего количества проданных мест по каждому направлению для каждого типа вагонов

3.5. Создать и заполнить таблицу новую таблицу sum(с помощью запроса) с полями: номер поезда, номер вагона, общее количество мест, количество проданных мест, количество свободных мест.

3.6. Выдать список вагонов (номера и типы) для поездов с тремя различными номерами, в которых количество вагонов меньше среднего количества выгонов во всех поездах.

4. В четвертой главе должны быть представлены разработанные процедуры и функции.

4.1. Разработать функцию, которая подсчитывала бы количество свободных мест в заданном поезде, вагоне на заданную дату.

4.2. Разработать процедуру, которая выдала бы результат следующего вида для определенного направления:

Направление Номер поезда Дата и время отправ-ления Дата и время прибы-тия Количе-ство часов в пути Общее количе-ство мест Количество проданных имест Процент заполнения поезда
             
             
Итого по направлению         *** *** ***

В итоговой строке подсчитывать результат по столбцам, помеченным звездочками.

5. В шестой главе должны быть разработаны и отображены средства обеспечивающие целостность данных в создаваемой базе данных с помощью триггеров.

5.1. Разработать триггер для добавления новой записи в таблицу о количестве проданных билетов в данный вагон данного поезда на заданную дату, который бы проверял, что такой номер поезда существует в списке поездов, а тип вагона соответствует хранящимся в базе типам вагонов.

Вариант 6

1. В первой главе курсового проекта описать процесс проектирования базы данных. Спроектировать базу данных методом нормализации и методом семантического моделирования для автоматизированной информационной системы для учета компьютерного времени в учебных аудиториях. Студент должен себя зарегистрировать перед работой на компьютере. База данных должна содержать такие сведения о студенте, как курс, группа, специальность, дисциплина, преподаватель, предмет, тип занятия, а также дата, время начала и окончания его работы, которые должны быть сняты с системных часов (см. табл.1)

 

Таблица 1

Фамилия Кафедра Препода­ватель Специаль­ность Предмет Курс Группа Тип занятия Время начала Время окончания Дата занятия
Крылов Экономической информатики Серов МЭ БД     По расписанию 11:20 13:15 14.01.02
Кузнецов Экономической истории Лосева ПИЭ БД     Курсовое проектирование 13-25 15-00 14.01.02
Крылов Экономической информатики Серов МЭ Информатика     Самостоя- тельное 14:25 15:00 16.01.02
Антонова Высшей математики Курова ПИЭ ИС     Дипломное проектирование 15:00 18:30 17.01.02
Кузнецов Экономической истории Лосева ПИЭ Информатика     Самостоя- тельное 8:00 9:35 18.01.02
                       

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

Предусмотреть в создаваемых таблицах ограничения целостности следующих типов:

· NOT NULL – для полей, которые будут являться первичными и внешними ключами,

· PRIMARY KEY – для полей, выбранных в качестве первичных ключей,

· FOREIGN KEY – для полей, являющихся внешними ключами (создается при построении диаграммы базы данных).

· CHECK для полей «Время окончания занятия» и «Время начала занятия» мест» (значение первого поля должно быть не меньше значения второго),

¨ DEFAULT для поля «Тип занятия» (его значение должно быть «по расписанию»).

3. В третьей главе курсового проекта «Основные команды SQL для извлечения, добавления и изменения данных» выполнить следующие действия и представить их результаты. Создать запросы для определения количество часов по расписанию по заданной кафедре.

4.1. Создать запрос для определения количества часов самостоятельной работы студентов определенного преподавателя по заданному предмету.

4.2. Определить предмет, которым студенты занимаются самостоятельно наибольшее количество часов.

4.3. Изменить для определенной группы определенного курса и специальности, а также на определенную дату и время начала занятия тип занятия на «тестирование».

4.4. Определить общее время затраченное на каждый тип занятия студентов определенного преподавателя.

4. В четвертой главе должны быть представлены разработанные процедуры и функции.

4.1. Создать функцию для подсчета общего количества часов занятий определенного типа.

4.2. Создать процедуру с использованием курсора для вывода списка занятий определенного преподавателя за определенный календарный период с подведением итогов по видам занятий.

5. В пятой главе описать процесс создания триггеров, как дополнительного средства обеспечения целостности базы данных.

Создать триггер для добавления новой записи о занятии студента, который бы проверял правильность ввода всех необходимых параметров (специальность, номер курса и группы, предмет, преподаватель, тип занятий) и возбуждал соответствующие ошибки, если параметр не верен.

Вариант 7

1. Спроектировать базу данных для информационно-поисковой системы «Гостиница» методом нормализации и методом семантического моделирования. Данные, которые должны храниться в базе, представлены в виде одной таблицы со следующими столбцами:

Код гостиничного номера (первая цифра означает этаж, следующие за ним цифры – номер апартамента на этаже).

Код типа номера (одноместный, двухместный, люкс, полулюкс и т.д.).

Код постояльца

ФИО постояльца

Домашний адрес постояльца

Пол

Номер телефона в номере,

Оплата за сутки

Дата и время заселения

Дата и время выезда

Сумма оплаты при заселении

Общая сумма оплаты за все время проживания

Оплата за бронирование номера

Признак, характеризующий, занят или свободен номер или место в двухместном номере

2. Разработать базу данных, таблицы и заполнить их данными. Предполагается, что гостиница имеет шесть этажей по 6 - 8 номеров различного типа на каждом этаже. Примерно половина номеров должны быть занята гостями. Даты их заселения и даты выезда могут повторяться, но не у всех. Кроме того, журнал учета проживающих может содержать данные о тех, кто уже выехал. В конце года сведения из текущего журнала добавляются в специальный архив. Предусмотреть в создаваемых таблицах ограничения целостности следующих типов:

· NOT NULL – для полей, которые будут являться первичными и внешними ключами,

· PRIMARY KEY – для полей, выбранных в качестве первичных ключей,

· FOREIGN KEY – для полей, являющихся внешними ключами (создается при построении диаграммы базы данных),

· CHECK для полей «Дата заселения» и «Дата выезда» (первая не должна быть больше второй, а также превышать системную дату).

4. В третьей главе курсового проекта «Основные команды SQL для извлечения, добавления и изменения данных» выполнить следующие действия и представить их результаты.

4.1. Показать список всех свободных одноместных номеров.

4.2. Показать список свободных мест в двухместных номерах. Показать поля: код номера, тип, оплату за одни сутки, пол проживающего, если одно место в номере занято.

4.3. Занести в список проживающих сведения о новом госте.

4.4. Изменить цену за сутки для номеров определенного типа. Для задания типа использовать подстановочную переменную.

4.5. В новую таблицу поместить сведения о всех номерах, которые будут освобождены к определенной дате.

4.6. Подсчитать, сколько всего занято номеров каждого типа.

4.7. Подсчитать общий доход от сдачи номеров за определенный месяц отдельно для каждого типа номера.

4.В четвертой главе должны быть представлены разработанные процедуры и функции в среде QUERY ANALYZER.

4.1. Создать функцию для подсчета общей стоимости проживания. При этом следует подсчитать: общее число полных суток, число часов сверх общего количества полных суток, и если это число часов меньше 12, то к общей сумме добавить оплату за часы из расчета «оплата за сутки/24*число часов». Если же число часов превышает 12, то за них следует оплачивать, как за полные сутки.

4.2. Создать процедуру для получения документа о проживающих в гостинице на определенную дату с выводом следующих полей; Тип номера, код типа номера, ФИО гостя, дата заселения, предполагаемая дата выезда. Данные должны быть упорядочены по типу номера. Для каждого типа номера следует подсчитать и вывести общее количество номеров, количество занятых номеров, количество свободных номеров, % занятости номеров данного типа.

5. В пятой главе описать процесс создания триггеров как дополнительного средства обеспечения целостности базы данных.

Создать триггеры, которые при добавлении, удалении или изменении кода номера в таблице со сведениями о постояльцах соответственно изменял статус номера или места в двухместном номере.

Вариант 8

1. Спроектировать базу данных для информационно-поисковой системы «Центр занятости населения» методом нормализации и методом семантического моделирования. Данные, которые должны храниться в базе, представлены в виде одной таблицы со следующими столбцами:

Код клиента

ФИО клиента

Пол

Код специальности

Стаж работы по специальности

Дата рождения

Дата увольнения с последнего места работы


Дата добавления: 2015-10-16; просмотров: 124 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
И.И. Довгялло, С.М. Юдина| НАБЛЮДЕНИЕ

mybiblioteka.su - 2015-2024 год. (0.16 сек.)