Автор: Пользователь скрыл имя, 16 Декабря 2010 в 13:07, курсовая работа
База данных обеспечивает хранение информации и представляет собой поименованную совокупность данных, организованных по определенным правилам, включающим общие принципы описания, хранения и манипулирования данными.
Система управления базами данных представляет собой пакет прикладных программ и совокупность языковых средств, предназначенных для создания, сопровождения и использования баз данных.
1. Теоретическая часть 3
2. Проектирование базы данных 16
3. Разработка объектов БД 29
4. Список литературы 31
Приложение 1. Сценарий создания структуры базы данных 32
Приложение 2. Скрипт создания запросов 41
Приложение 3. Скрипт создания хранимых процедур и триггеров 42
[Оклад] [money] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Зарплаты] (
[Фамилия] [char] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Имя] [char] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Отчество] [char] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Дата] [datetime] NOT NULL ,
[Зарплата] [money] NULL ,
[Премия] [money] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Отделы] (
[Отдел] [char] (80) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Заведующий] [char] (20) COLLATE Cyrillic_General_CI_AS NULL ,
[Телефон] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Отпуска] (
[Фамилия] [char] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Имя] [char] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Отчество] [char] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Год] [int] NOT NULL ,
[Начало отпуска] [datetime] NULL ,
[Конец отпуска] [datetime] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Поставки] (
[Номерпост] [int] NOT NULL ,
[Поставщик] [char] (35) COLLATE Cyrillic_General_CI_AS NULL ,
[Дата] [datetime] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Поставляемые препараты] (
[Номерпост] [int] NOT NULL ,
[Препарат] [char] (70) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Форма выпуска] [char] (30) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Количество] [int] NULL ,
[Цена за единицу] [char] (10) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Поставщики] (
[Поставщик] [char] (35) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Адрес] [adr] NULL ,
[Телефон] [phone] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Препараты] (
[Препарат] [char] (70) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Форма Выпуска] [char] (30) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Цена] [money] NULL ,
[Отдел] [char] (80) COLLATE Cyrillic_General_CI_AS NULL ,
[По рецепту] [bit] NULL ,
[Показания] [char] (120) COLLATE Cyrillic_General_CI_AS NULL ,
[Условия хранения] [char] (100) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Препараты по рецептам] (
[Препарат] [char] (70) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Форма выпуска] [char] (30) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[№ рецепта] [int] NOT NULL ,
[Количество по рецепту] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Рецепты] (
[№ рецепта] [int] NOT NULL ,
[Фамилия] [char] (20) COLLATE Cyrillic_General_CI_AS NULL ,
[Имя] [char] (20) COLLATE Cyrillic_General_CI_AS NULL ,
[Отчество] [char] (20) COLLATE Cyrillic_General_CI_AS NULL ,
[Дата] [data] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Сотрудники] (
[Фамилия] [char] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Имя] [char] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Отчество] [char] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[Серия паспорта] [int] NULL ,
[№ паспорта] [int] NULL ,
[Дата выдачи паспорта] [datetime] NULL ,
[Адрес] [char] (80) COLLATE Cyrillic_General_CI_AS NULL ,
[Домашний телефон] [int] NULL ,
[Отдел] [char] (80) COLLATE Cyrillic_General_CI_AS NULL ,
[Должность] [char] (50) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]
GO
setuser
GO
EXEC sp_bindefault N'[dbo].[Обр-е]', N'[Должности].[Требуемое образование]'
GO
setuser
GO
setuser
GO
EXEC sp_bindefault N'[dbo].[год]', N'[Отпуска].[Год]'
GO
setuser
GO
setuser
GO
EXEC sp_bindrule N'[dbo].[Num ]', N'[Поставщики].[Телефон]'
GO
setuser
GO
setuser
GO
EXEC sp_bindrule N'[dbo].[price_rule]', N'[Препараты].[Цена]'
GO
setuser
GO
setuser
GO
EXEC sp_bindefault N'[dbo].[Бомж]', N'[Сотрудники].[Адрес]'
GO
EXEC sp_bindrule N'[dbo].[ZAGLAV]', N'[Сотрудники].[Фамилия]'
GO
setuser
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE VIEW ПОСТ3
AS
SELECT *
FROM [Поставляемые препараты]
WHERE Номерпост
= 3
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
Create View Преппрод
As
SELECT Препарат,
Отдел,
Цена
FROM Препараты
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE VIEW dbo.VIEW3
AS
SELECT dbo.Сотрудники.Должность, dbo.Сотрудники.Фамилия, dbo.Сотрудники.Имя, dbo.Сотрудники.Отчество, dbo.Сотрудники.Адрес,
dbo.Сотрудники.Отдел, dbo.Сотрудники.[Домашний телефон], dbo.Должности.[Требуемое образование]
FROM dbo.Сотрудники INNER JOIN
dbo.Должности ON dbo.Сотрудники.Должность = dbo.Должности.Должность
WHERE
(dbo.Должности.[Требуемое образование]
= 'высшее')
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
use Apteka
go
--Препараты начинающиеся на букву «Ц»
SELECT *
FROM Препараты
WHERE Препарат LIKE 'Ц%'
Go
--Количество сотрудников по должностям
SELECT Должность ,count(Должность) AS 'Количество' From Сотрудники
GROUP BY Должность
Go
--вывод в валюте цены по наименованию препарата
DECLARE @Препарат char(70), --наименование препарата
@Цена money, --цена препарата
@val char(3), --валюта
@Цена_in_val money --цена в валюте
--Определить
наименование препарата и
SET @Препарат='Ренни'
SET @val='$'
--Определить цену препарата по названию препарата
SELECT @Цена=Цена
FROM Препараты
WHERE Препарат=@Препарат
--Определить цену препарата в заданной валюте
SELECT @Цена_in_val=
CASE @val
WHEN 'руб' THEN @Цена
WHEN '$' THEN @Цена /28
WHEN 'EUR' THEN @Цена /34
END
--Вывод сообщения
PRINT CONVERT(char(5), @Цена_in_val)
--препараты дешевле 20 р.
SELECT * From Препараты
Where Цена<20
Go
--Сотрудники с высшим образованием
SELECT * From Должности
Where [Требуемое образование]='Высшее'
Go
--Снижение цен на препараты по рецепту
UPDATE Препараты
SET Цена=Цена*0.9
WHERE [По рецепту]=1
Go
--вывод ближайших поставок препаратов
SELECT * From поставки
Where Дата>GetDate()
Go
--изменение поставщика (ХП)
Use Apteka
go
CREATE PROCEDURE Изменить_Поставщик(
AS
BEGIN
UPDATE Поставщики
SET Адрес = @adress, Телефон = @telephon
WHERE Поставщик = @postavshik
END
GO
--Добавление поставщика (ХП)
CREATE PROCEDURE Новый_Поставщик(
AS
BEGIN
INSERT INTO Поставщики
VALUE (@post,@adress,@tel)
END
GO
--Удаление поставщика (ХП)
CREATE PROCEDURE Удаляем_Поставщики(@post char(35))
AS
BEGIN
delete
from Поставщики
where Поставщик = @post;
END
GO
--Триггер Т1