Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«Комсомольский – на - Амуре государственный технический университет»
Кафедра математического обеспечения и применения ЭВМ
ЛАБОРАТОРНАЯ РАБОТА № 1
по курсу «Администрирование информационных систем»
Студенты группы 4ВС-1: Рогозин В.А.
Шелестов И.А.
Преподаватель: Петрова А.Н.
2008
Тема: Объекты СУБД Microsoft SQL Server 2000
Цель: Получить навыки работы с объектами СУБД Microsoft SQL Server 2000
Задание: Разработать БД по продаже сотовых телефонов с возможностью подключиться к операторам сотовой связи и реализовать ее в СУБД Microsoft SQL Server 2000
Схема БД
Схема БД представлена на рис. 1.
Рис. 1. Схема БД
Таблица Clients – содержит информацию о покупателях.
· [№ klienta] – уникальный идентификатор покупателя
· [F.I.O.] – ФИО покупателя
· [e-mail] – электронная почта
· Adres – почтовый адрес покупателя
Данная таблица не содержит триггеров
Таблица Operators – содержит информацию об операторах сотовой связи.
· [№ operatora] – уникальный идентификатор оператора сотовой связи
· [Nazvanie operatora]– название оператора сотовой связи
· adres – почтовый адрес оператора сотовой связи
· [telefon nomer] – телефонный номер оператора сотовой связи
Данная таблица не содержит триггеров
Таблица Tarifs – содержит информацию о тарифах.
· [№ tarifa] – уникальный идентификатор тарифа
· [Nazvanie tarifa]– название тарифа
· [№ operatora] – электронная почта
· ishodyashie – стоимость исходящих вызовов
· [SMS cena] - цена за СМС
· [MMS cena] - цена за ММС
· [abon plata] - абонентская плата
· [Internet cena] - цена за Интернет
Данная таблица не содержит триггеров
Таблица Phones – содержит информацию о телефонах.
· [№ telefona] – уникальный идентификатор покупателя
· Marka – фирма производитель
· Model – модель телефона
· Cena – цена телефоннов данной марки
· [dop inf] - дополнительная информация о товаре
· kolichestvo - количество товара на складе
Данная таблица не содержит триггеров
Таблица Phones_Parameters – содержит дополнительную информации о телефоне
.
· [dop inf] – уникальный идентификатор для дополнительной информации о телефоне
· Heigth – высота (толшина) телефона
· [Screen Size] – размер экрана
· [mp3-player] – наличие mp3 плеера
· Bluetooth - наличие Bluetooth
· [fm-radio] - радио
· [Senso screen] - сенсорный экран
Данная таблица не содержит триггеров
Таблица Korzina – содержит информацию о выбранных покупателем телефонов и операторов связи.
· [№ korzini] – уникальный идентификатор корзины
· [№ klienta] – уникальный идентификатор покупателя
· [№ telefona]– уникальный идентификатор телефона
· [№ tarifa] – уникальный идентификатор тарифа
· kolichestvo – количество выбранных телефонов
· summ - сумма за модели выбранных телефонах одной марки
Данная таблица содержит триггер проверяющий, чтобы покупатель не выбрал товару больше, чем этого товару находится на складе, в случае превышения, сумма уменьшается до количества указанного товара на складе:
CREATE TRIGGER [kolich K] ON dbo.Korzina
FOR INSERT, UPDATE
AS
DECLARE @kolich1 int
DECLARE @kolich2 int
SELECT @kolich1 = (SELECT Inserted.kolichestvo FROM Inserted,Korzina WHERE Inserted.[№ korzini]=Korzina.[№ korzini])
SELECT @kolich2 = (SELECT Phones.kolichestvo FROM Phones, Inserted WHERE Phones.[№ telefona]=Inserted.[№ telefona])
IF (@kolich1 > @kolich2)
BEGIN
PRINT 'Транзакция не может быть обработана'
PRINT 'Товара выбранно больше чем на складе'
UPDATE Korzina
SET Korzina.kolichestvo = Phones.kolichestvo
FROM Inserted, Phones WHERE Inserted.[№ telefona]=Phones.[№ telefona]
END
А также триггер вычисляющий сумму за телефоны выбранной модели:
UPDATE Korzina
SET Korzina.summ = Phones.cena * Inserted.kolichestvo
FROM Inserted, Phones WHERE Inserted.[№ telefona]=Phones.[№ telefona]
Таблица Zakazi – содержит информацию о выбранных покупателем телефонах и операторов связи.
· [№ zakaza] – уникальный идентификатор заказа
· [Data zakaza]- дата оформления заказа
· [№ klienta] – уникальный идентификатор покупателя
· [№ telefona]– уникальный идентификатор телефона
· [№ tarifa] – уникальный идентификатор тарифа
· kolichestvo – количество выбранных телефонов
· [№ korzini] - уникальный идентификатор корзины
· summ - сумма за модели телефонов выбранных телефонов одной марки
Данная таблица содержит функцию вставляющую текущую дату, а также триггер изменяющий количество оставшихся телефонов на складе после совершения покупки
CREATE TRIGGER [kopir kolich Z] ON dbo.Zakazi
FOR INSERT, UPDATE, DELETE
AS
DECLARE @Ntelefona int
SELECT @Ntelefona =(SELECT Inserted.[№ korzini] FROM Phones, Inserted WHERE Inserted.[№ telefona]=Phones.[№ telefona])
UPDATE Zakazi
SET [Data zakaza]=GetDate()
FROM Inserted, Phones WHERE Inserted.[№ telefona]=Phones.[№ telefona]
UPDATE Phones
SET Phones.kolichestvo = Phones.kolichestvo - Inserted.kolichestvo
FROM Inserted, Phones WHERE Inserted.[№ telefona]=Phones.[№ telefona]
Триггер очищающий корзину после овормления заказа
DELETE
FROM Korzina WHERE Korzina.[№ korzini]=@Ntelefona
Рис. 2. Данные в таблицах Korzina, Photes и Zakazi
Список использованных источников
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.