Описание таблиц базы данных
База данных представлена шестью таблицами Customer, Employee, Orders, Product, Supplier, Time. Рассмотрим структуру каждой более подробно.
В таблице Customer представлена информация о клиентах. Поля, их типы, назначение и ограничения, накладываемые на поля представлены в следующем скрипте:
CREATE TABLE [dbo].[Customer] (
[IDcustomer] [int] NOT NULL ,
[CompanyName] [char] (20) COLLATE Cyrillic_General_CI_AS NULL ,
[City] [char] (20) COLLATE Cyrillic_General_CI_AS NULL ,
[Country] [char] (20) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]
GO
Первичным ключем является поле IDcustomer, однозначно определяющее любую запись в таблице. В поле CompanyName хранятся наименования компаний или имя покупателя, в City и Country соответственно страна и город где проживет клиент (таб.1). По полю IDcustomer осуществляется связь с таблицей Orders.
Таблица 1. Customer.
В таблице Employee содержится информация о сотрудниках. Поля, их типы, назначение и ограничения, накладываемые на поля данной таблицы представлены в следующем скрипте:
CREATE TABLE [dbo].[Employee] (
[IDemployee] [int] NOT NULL ,
[EmployeeName] [char] (20) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]
GO
Здесь ключевым элементом является IDemployee. В поле EmployeeName, хранятся имя (таб.2). По полю IDemployee осуществляется связь с таблицей Orders.
Таблица 2. Employee.
В таблице Product представлена информация о машинах. Информация о полях, их типов, назначений и ограничений, накладываемых на поля содержится в следующем скрипте:
CREATE TABLE [dbo].[Product] (
[IDproduct] [int] NOT NULL ,
[ProductName] [char] (30) COLLATE Cyrillic_General_CI_AS NULL ,
[ProductCategory] [char] (20) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]
GO
Первичным ключем является поле IDproduct. Здесь хранится наименование автомобиля и его категория (таб.3). По полю IDproduct осуществляется связь с таблицей Orders.
Таблица 3. Product.
В таблице Supplier содержится информация о поставщиках. Информация о полях, их типах, назначениях и ограничениях, накладываемых на поля содержится в следующем скрипте:
CREATE TABLE [dbo].[Supplier] (
[IDsupplier] [int] NOT NULL ,
[CompanyName] [char] (20) COLLATE Cyrillic_General_CI_AS NULL ,
[Country] [char] (20) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]
GO
Связь с таблицей Orders осуществляется по полю IDsupplier. В данной таблице хранится название автосалона, и страна где она находится (таб.4).
Таблица 4. Supplier.
В таблице Time представлена информация дат заказов. Описание данной таблицы приведено ниже.
CREATE TABLE [dbo].[Time] (
[IDtime] [int] NOT NULL ,
[Year] [int] NULL ,
[Month] [int] NULL ,
[Day] [int] NULL
) ON [PRIMARY]
GO
В таблице Time ключевое поле – IDtime (таб.5).
Таблица 5. Time.
В таблице Orders содержится информация о заказах, цена и количество закупаемых машин (таб.6). Информация о полях, их типах, назначениях и ограничениях, накладываемых на поля содержится в следующем скрипте:
CREATE TABLE [dbo].[Orders] (
[IDproduct] [int] NOT NULL ,
[IDcustomer] [int] NOT NULL ,
[IDemployee] [int] NULL ,
[IDtime] [int] NULL ,
[IDsupplier] [int] NULL ,
[Price] [money] NULL ,
[Quantity] [int] NULL
) ON [PRIMARY]
GO
Таблица 6. Orders.
Связи таблиц представлены на рисунке 1.
Рисунок 1. Диаграмма связей.
Триггеры
Термин триггер в контексте реляционных баз данных был введен в обиход участниками проекта System R (лекции 12, 15). В терминологии этого проекта триггером называлась хранимая в базе данных процедура, автоматически вызываемая СУБД при возникновении соответствующих условий.При определении триггера указывались два условия его применимости – общее условие (имя отношения и тип операции манипулирования данными) и конкретное условие (логическое выражение, построенное по правилам, близким к правилам ограничений целостности), а также действие, которое должно быть выполнено над БД при наличии условий применимости.
Конечно, термин триггер в данном контексте является жаргонным. Но, с другой стороны, он достаточно точно соответствует ситуации: для применения процедуры должны быть произведены «возбуждающие» ее действия. Как отмечалось в лекции 15, после завершения проекта System R на протяжении более десяти лет триггеры не поддерживались ни в одной коммерческой SQL-ориентированной СУБД. Но затем практически во всех ведущих СУБД механизм триггеров в том или ином виде был реализован.
В стандарте же языка SQL спецификации триггеров отсутствовали до принятия стандарта SQL:1999. По словам главного редактора стандартов SQL/92 и SQL:1999 Джима Мелтона, эта спецификация была уже полностью готова к моменту принятия SQL/92 и не вошла в текст стандарта только по причине ограниченности его объема. Однако, как мне кажется, этому препятствовали и расхождения в подходах, существовавшие между основными компаниями-производителями СУБД.
Заметим, что альтернативным термином по отношению к базам данных, содержащим триггерные процедуры, является термин активная база данных. Наверное, этот термин более точен, поскольку действительно речь идет о базах данных, содержащих процедуры, которые автоматически вызываются при срабатывании связанных с ними правил. Однако в обиходе пользователей SQL-ориентированных СУБД по-прежнему более распространен термин триггер.
В моей работе использовался триггер по событию удаление, скрипт которого представлен ниже.
create trigger trigger1
on Employee
instead of delete
as
declare @IDemplo int
select @IDemplo=IDemployee from deleted
delete from Orders where IDemployee=@IDemplo
delete from Employee where IDemployee=@IDemplo
Заключение
В деловой или личной сфере часто приходится работать с данными из разных источников, каждый из которых связан с определённым видом деятельности. Для координации всех этих данных необходимы определённые знания и организационные навыки.
Создаваемые формы, запросы и отчёты позволяют быстро и эффективно обновлять данные, получать ответы на вопросы, осуществлять поиск нужных данных, анализировать данные, печатать отчёты, диаграммы.
В курсовой работе было рассмотрено проектирование и разработка базы данных "Автосалон", которая позволяет хранить основную информацию о продажах.
Список используемой литературы
1. Карпова Т.С. Базы данных. Модели, разработка, реализация/СПб.: Питер, 2002. - 304 с.
2. Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных. Учебник для ВУЗов /под ред. проф.А.Д.Хомоненко // СПб.:КОРОНАпринт, 2000.- 416 с.
3. Корнеев В.В. и др. Базы данных. Интеллектуальная обработка информации // М.:Нолидж, 2000.- 352 с.
4. Бартеньев О.В. Microsoft Visual FoxPro:Учебно-справочное пособие/ М.:Диалог МИФИ, 2005-672 с.
5. Каратыгин С.А.,Тихонов А.Ф., Тихонова Л.Н. Visual FoxPro 6.0//М.: Бином, 1999-784С.
6. Ханcен Г., Ханcен Д. Базы данных. Разработка и управление/М.: Бином, 1999-704С.
7. Глушаков С.В., Ломотько Д.В. Базы данных. Учебный курс // Харьков: Фолио; Ростов н/Д : Феникс; Киев : Абрис, 2000. - 504 с.
8. Игорева, Е.Л., Основы алгоритмизации и программирования (3-е издание)./ И.И. Попов, О.Л. Игорева - М. : Инфа-М, 2006 - 432 с.
9. Петгольц, Ч. Программирование для Microsoft Windows на C#. В 3-х томах. Том 2. Пер. с англ./ Ч. Петгольц - М. : Издательско-торговый дом «Русская редакция», 2002. - 576 с.
10. Петгольц, Ч. Программирование для Microsoft Windows на C#. В 3-х томах. Том 3 Пер. с англ./ Ч. Петгольц - М. : Издательско-торговый дом «Русская редакция», 2002. - 624 с.