- •Федерально агенство по образованию
- •1. Введение
- •1.1 Актуальность
- •1.2 Цель
- •2. Содержательная постановка задачи
- •3. Анализ предметной области
- •Матрица списка событий
- •4. Концептуальная и логическая модель данных
- •4.2. Построение er-диаграммы
- •4.2. Ограничение доменов
- •5.Диаграмма таблиц
- •6. Тексты программ.
- •7. Инструкция пользователю
- •8. Заключение
4.2. Построение er-диаграммы
4.2. Ограничение доменов
Имя домена |
Допустимые значения |
Разрешенные (вводимые) значения | |||
Тип |
Размер |
Диапазон возможных значений |
Значения по умолчанию | ||
Клиент.Номер счета, Клиент.Код тарифа, Клиент.Код фирмы, Тариф.Код тарифа, Код тарифа Звонок.Код фирмы, ФирмаСС.Код Фирмы |
int |
- |
0-9999 |
- | |
Клиент.ФИО, Клиент.Телефон Тариф.Название ФирмаСС.Название ФирмаСС.Адрес фирмы
|
char |
30 |
- |
- | |
Клиент.Аванс, Клиент.Сост_Сч, |
smallmoney |
10 |
0-30000 |
|
Ни одно из ключевых полей не может принимать значения NULL.
Ограничения уникальности на домены таблиц
№ n/n |
Атрибут или группа атрибутов |
Среди каких экземпляров, какой сущности
|
1 |
Дил_Догов |
всех экз. сущности «Дил_догов» |
3 |
Тариф.Код_Т |
всех экз. сущности «Тариф» |
4 |
Фирма_СС.Код_Ф |
всех экз. сущности «Фирма_СС» |
5 |
Клиент.Номер_Сч |
всех экз. сущности «Клиент» |
5.Диаграмма таблиц
6. Тексты программ.
1.Триггер для расчета состояния счета клиента в таблице «Клиент».
USE [Салон]
GO
/****** Object: Trigger [dbo].[SostSch] Script Date: 12/22/2010 19:51:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[SostSch]
ON [dbo].[Клиент]
FOR INSERT
AS
BEGIN
DECLARE @X1 SMALLMONEY
DECLARE @X2 SMALLMONEY
DECLARE @X3 SMALLMONEY
DECLARE @X4 INT
DECLARE @X5 INT
SELECT @X1=I.Аванс FROM INSERTED I
SELECT @X2=Цена FROM Звонок
SELECT @X4=Номер_Сч FROM Клиент
SELECT @X5=Номер_Сч FROM Звонок
IF(@X4=@X5)
BEGIN
SET @X3=@X1-@X2
END
ELSE
BEGIN SET @X3=@X1
END
UPDATE Клиент
SET Сост_Сч=@X3
WHERE Аванс=@X1
END
2.Хранимая процедура, формирующей отчет в целом по компании за запрашиваемый промежуток времени:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Otchet1]
(@date1 datetime, @date2 datetime)
AS
BEGIN
SET NOCOUNT ON;
SELECT ФИО, Дата, Код_Ф, Код_Т, Телефон, Длительн, Номер_ТЗ, Цена
FROM Клиент, Звонок
WHERE (Дата BETWEEN @date1 AND @date2) AND
(Клиент.Номер_Сч=Звонок.Номер_Сч)
END
3.Хранимая процедура, формирующая упорядоченный список клиентов.
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Spisok]
AS
BEGIN
SET NOCOUNT ON;
SELECT ФИО, Номер_Сч, Адрес, Телефон, Код_Т, Код_Ф, Аванс, Сост_Сч
FROM Клиент ORDER BY ФИО
END
4. Хранимая процедура, организующая поиск клиентов по номеру счета и фамилии:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Poisk](@Номер_Сч int,@Фамилия char(20))
AS
BEGIN
SET NOCOUNT ON;
SELECT Номер_Сч, ФИО, Адрес, Телефон, Сост_Сч FROM Клиент
WHERE Номер_Сч=@Номер_Сч AND ФИО=@ Фамилия
END
5.Хранимая процедура, осуществляющая расчет состояния счета клиента.
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Raschet](@nom int, @avans int)
AS
BEGIN
SET NOCOUNT ON;
UPDATE Клиент SET Сост_Сч = Сост_Сч + @avans WHERE Номер_Сч=@nom
SELECT Номер_Сч, Сост_Сч, Аванс, FROM Клиент WHERE Номер_Сч =@nom
END