Структура реляционной базы данных

Исследование логической структуры реляционной базы данных на основе инфологической модели и её реализации в программе Microsoft SQL Server 2000. Характеристика разработки вложенных запросов на выборку записей, процедур, триггеров, создания представлений.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 11.05.2012
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://allbest.ru/

1. Инфологическая модель

В инфологической модели представлены семь таблиц. В таблице Employe содержится 18 сущностей, в таблице Departament 3 сущности, в таблице Post 3 сущности, в таблице BuildObject 7 сущностей, в таблице Customer 3 сущности, в таблице Purchases 8 сущностей, в таблице Supplier 3 сущности, в таблице EmpEducation 4 сущности, в таблице Sklad 4 сущности .

Большинство связей между таблицами типа «один к многим», есть одна связь типа «один к одному».

Рис. 1.1. Диаграмма связей между таблицами.

Описание каждой сущности представлено в логической модели.

трригер инфологический запрос реляционный

2. Логическая модель

Таблица «Сотрудники» - Employe

Имя сущности

Тип

Длина

Описание

1

ID

Int

4

Код сотрудника

2

SrName

char

15

Фамилия

3

Name

char

15

Имя

4

PtName

char

15

Отчество

5

Passport

char

12

Номер паспорта

6

INN

char

12

ИНН

7

SSGPS

char

14

Номер страх. свидетельства

8

BrithDate

datetime

8

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

9

Address

char

30

Адрес

10

HomePhone

char

7

Домашний телефон

11

MobPhone

char

11

Мобильный телефон

12

Sex

char

3

Пол

13

BeginWDate

datetime

8

Дата поступления на работу

14

Dep_ID

int

4

Код отдела

15

Educ_ID

int

4

Код записи в таблице об образовании

16

Post_ID

int

4

Код должности

17

BuildObj_ID

int

4

Код обьекта строительства

18

EndWDate

datetime

8

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

Таблица «Отделы» - Departament

Имя сущности

Тип

Длина

Описание

1

ID

Int

4

Код отдела

2

Name

char

80

Название отдела

3

Address

char

30

Адрес отдела

Таблица «Должности» - Post

Имя сущности

Тип

Длина

Описание

1

ID

Int

4

Код должности

2

Name

char

80

Название должности

3

Salary

money

8

Оклад

Таблица «Объекты строительства» - BuildObject

Имя сущности

Тип

Длина

Описание

1

ID

Int

4

Код объекта

2

SrName

char

200

Название объекта

3

Discription

text

16

Описание объекта

4

Address

char

30

Адрес объекта

5

BeginBDate

datetime

8

Дата начала строительсва

6

EndBDate

datetime

8

Дата окончания строительства

7

Customer_ID

int

4

Код заказчика

Таблица «Заказчики» - Customer

Имя сущности

Тип

Длина

Описание

1

ID

Int

4

Код заказчика

2

Name

char

15

Название

3

EssElem

text

16

Реквизиты заказчика

Таблица «Закупленные cырье и материалы» - Purchases

Имя сущности

Тип

Длина

Описание

1

ID

Int

4

Код зделки

2

Mat_ID

int

15

Код материала на складе

3

Price

money

8

Цена за единицу

4

Amount

int

4

Количество куплено

5

BDate

datetime

8

Дата зделки

6

Supplier_ID

int

4

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

7

Employe_ID

int

4

Код сотрудника

8

BuildObj_ID

int

4

Код обьекта

Таблица «Поставщики» - Supplier

Имя сущности

Тип

Длина

Описание

1

ID

Int

4

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

2

Name

char

100

Название

3

EssElem

text

16

Реквизиты

Таблица «Образование» - EmpEducation

Имя сущности

Тип

Длина

Описание

1

ID

Int

4

Код записи

2

EduType

char

10

Уровень образования

3

EduName

char

80

Название учебного заведения

4

DiplomNum

char

20

Номер диплома

5

TermYear

char

4

Год окончания

Таблица «Склад» - Sklad

Имя сущности

Тип

Длина

Описание

1

ID

Int

4

Код маиериала

2

Name

char

200

Наименование

3

Amount

Int

4

Количество

4

Unit

char

10

Единицы измерения

3. Физическая модель

Логическая структура реляционной базы разработана на основе инфологической модели и реализована в программе Microsoft SQL Server 2000. SQL - язык, который дает вам возможность создавать и работать в реляционных базах данных, которые являются наборами связанной информации сохраняемой в таблицах.

Базы данных и таблицы созданы с помощью интерфейса Enterprise Manager в программе Microsoft SQL Server 2000, программный код которых:

CREATE DATABASE [BuildFirm] ON (NAME = N'BuildFirm', FILENAME=N'G:\Program Files\Microsoft SQL Server\MSSQL\data\BuildFirm.mdf' , SIZE = 1, FILEGROWTH = 10%) LOG ON (NAME = N'BuildFirm_log', FILENAME = N'G:\Program Files\Microsoft SQL Server\MSSQL\data\BuildFirm_log.LDF' , FILEGROWTH = 10%)

GO

CREATE TABLE [BuildObject] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (200) COLLATE Cyrillic_General_CI_AS NULL ,

[Discription] [text] COLLATE Cyrillic_General_CI_AS NULL ,

[Address] [char] (30) COLLATE Cyrillic_General_CI_AS NULL ,

[BeginBDate] [datetime] NULL ,

[EndBDate] [datetime] NULL ,

[Customer_ID] [int] NULL ,

CONSTRAINT [PK_BuildObject] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY] ,

CONSTRAINT [FK_BuildObject_Customer] FOREIGN KEY

(

[Customer_ID]

) REFERENCES [Customer] (

[ID]

)

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

CREATE TABLE [Customer] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (80) COLLATE Cyrillic_General_CI_AS NULL ,

[EssElem] [text] COLLATE Cyrillic_General_CI_AS NULL ,

CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

CREATE TABLE [Departament] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (80) COLLATE Cyrillic_General_CI_AS NULL ,

[Address] [char] (30) COLLATE Cyrillic_General_CI_AS NULL ,

CONSTRAINT [PK_Departaments] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE [EmpEducation] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[EduType] [char] (10) COLLATE Cyrillic_General_CI_AS NULL ,

[EduName] [char] (80) COLLATE Cyrillic_General_CI_AS NULL ,

[DiplomNum] [char] (20) COLLATE Cyrillic_General_CI_AS NULL ,

[TermYear] [char] (4) COLLATE Cyrillic_General_CI_AS NULL ,

CONSTRAINT [PK_EmpEducation] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE [Employe] (

[ID] [int] NOT NULL ,

[SrName] [char] (15) COLLATE Cyrillic_General_CI_AS NULL ,

[Name] [char] (15) COLLATE Cyrillic_General_CI_AS NULL ,

[PtName] [char] (15) COLLATE Cyrillic_General_CI_AS NULL ,

[Passport] [char] (12) COLLATE Cyrillic_General_CI_AS NULL ,

[INN] [char] (12) COLLATE Cyrillic_General_CI_AS NULL ,

[SSGPS] [char] (14) COLLATE Cyrillic_General_CI_AS NULL ,

[BrithDate] [datetime] NULL ,

[Address] [char] (30) COLLATE Cyrillic_General_CI_AS NULL ,

[HomePhone] [char] (7) COLLATE Cyrillic_General_CI_AS NULL ,

[MobPhone] [char] (11) COLLATE Cyrillic_General_CI_AS NULL ,

[Sex] [char] (3) COLLATE Cyrillic_General_CI_AS NULL ,

[BeginWDate] [datetime] NULL ,

[Dep_ID] [int] NULL ,

[Post_ID] [int] NULL ,

[Educ_ID] [int] NULL ,

[BuildObj_ID] [int] NULL ,

[EndWDate] [datetime] NULL ,

CONSTRAINT [PK_Employe] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY] ,

CONSTRAINT [FK_Employe_BuildObject] FOREIGN KEY

(

[BuildObj_ID]

) REFERENCES [BuildObject] (

[ID]

),

CONSTRAINT [FK_Employe_Departaments] FOREIGN KEY

(

[Dep_ID]

) REFERENCES [Departament] (

[ID]

),

CONSTRAINT [FK_Employe_Post] FOREIGN KEY

(

[Post_ID]

) REFERENCES [Post] (

[ID]

)

) ON [PRIMARY]

GO

CREATE TABLE [Post] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (80) COLLATE Cyrillic_General_CI_AS NULL ,

[Salary] [money] NULL ,

CONSTRAINT [PK_Post] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE [Purchases] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Mat_ID] [int] NULL ,

[Price] [money] NULL ,

[Amount] [int] NULL ,

[BDate] [datetime] NULL ,

[Supplier_ID] [int] NULL ,

[Employe_ID] [int] NULL ,

[BuildObj_ID] [int] NULL ,

CONSTRAINT [PK_Material] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY] ,

CONSTRAINT [FK_Material_BuildObject] FOREIGN KEY

(

[BuildObj_ID]

) REFERENCES [BuildObject] (

[ID]

),

CONSTRAINT [FK_Material_Employe] FOREIGN KEY

(

[Employe_ID]

) REFERENCES [Employe] (

[ID]

),

CONSTRAINT [FK_Material_Supplier] FOREIGN KEY

(

[Supplier_ID]

) REFERENCES [Supplier] (

[ID]

),

CONSTRAINT [FK_Purchases_Sklad] FOREIGN KEY

(

[Mat_ID]

) REFERENCES [Sklad] (

[ID]

)

) ON [PRIMARY]

GO

CREATE TABLE [Sklad] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (200) COLLATE Cyrillic_General_CI_AS NULL ,

[Amount] [int] NULL ,

[Unit] [char] (10) COLLATE Cyrillic_General_CI_AS NULL ,

CONSTRAINT [PK_Warehouse] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE [Supplier] (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[Name] [char] (100) COLLATE Cyrillic_General_CI_AS NULL ,

[EssElem] [text] COLLATE Cyrillic_General_CI_AS NULL ,

CONSTRAINT [PK_Supplier] PRIMARY KEY CLUSTERED

(

[ID]

) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

Добавим одну запись в таблицу Employe с помощью интерфейса QueryAnalyzer:

INSERT INTO Employe (SrName, Name, PtName, Passport, INN, SSGPS, BrithDate, Address, HomePhone, MobPhone, Sex, BeginWDate, Dep_ID, Post_ID, BuildObj_ID)

VALUES ('Каганович', 'Лазар', 'Моисеевич', '97 97 098743', '267095424567', '678-786-675-98', '07.05.1981', 'пр. Тракторостроителей 34-56', '235687', '89179876534', 'муж', '09.10.2001', 1, 1, 1)

4. Разработка запросов, процедур, триггеров

4.1 Создание представлений

Рис. 4.1. Представление из 6 таблиц

CREATE VIEW dbo.VIEW1

AS SELECT dbo.Employe.SrName AS Фамилия, dbo.Employe.Name AS Имя, dbo.Employe.PtName AS Отчество, dbo.Departament.Name AS Отдел,

dbo.Post.Name AS Должность, dbo.EmpEducation.EduType AS образование, dbo.EmpEducation.EduName AS [Учебное заведение],

dbo.BuildObject.Name AS Объект, dbo.Customer.Name AS [Заказчик объекта]

FROM dbo.Employe INNER JOIN

dbo.Departament ON dbo.Employe.Dep_ID = dbo.Departament.ID INNER JOIN

dbo.Post ON dbo.Employe.Post_ID = dbo.Post.ID INNER JOIN

dbo.EmpEducation ON dbo.Employe.Educ_ID = dbo.EmpEducation.ID INNER JOIN

dbo.BuildObject ON dbo.Employe.BuildObj_ID = dbo.BuildObject.ID INNER JOIN

dbo.Customer ON dbo.BuildObject.Customer_ID = dbo.Customer.ID

Рис. 4.2. Представление из 5 таблиц

CREATE VIEW dbo.VIEW2

AS SELECT dbo.Sklad.Name AS Наименование, dbo.Purchases.Price AS Цена, dbo.Purchases.Amount AS Количество, dbo.Purchases.BDate AS [Дата закупки],

dbo.Supplier.Name AS Поставщик, dbo.Employe.SrName AS Фамилия, dbo.Employe.Name AS Имя, dbo.Employe.PtName AS Отчество,

dbo.BuildObject.Name AS Объект

FROM dbo.Purchases INNER JOIN

dbo.Sklad ON dbo.Purchases.Mat_ID = dbo.Sklad.ID INNER JOIN

dbo.Supplier ON dbo.Purchases.Supplier_ID = dbo.Supplier.ID INNER JOIN

dbo.Employe ON dbo.Purchases.Employe_ID = dbo.Employe.ID INNER JOIN

dbo.BuildObject ON dbo.Purchases.BuildObj_ID = dbo.BuildObject.ID

4.2 Создание триггеров

Данный триггер отвечает за автоматическое увеличение количества материалов на складе при их закупках, т.е при внесении данных в таблицу Purchases(Закупки) данный триггер увеличивает имеющееся количество материала в таблице Sklad на величину закупленного количества.

IF EXISTS(SELECT name FROM sysobjects

WHERE name = 'IncSkladAmount' and type = 'TR')

DROP TRIGGER IncSkladAmount

GO CREATE TRIGGER IncSkladAmount

ON Purchases FOR INSERT

AS DECLARE @amt int

SET @amt = (SELECT inserted.Amount FROM inserted)

SET @amt = (SELECT Sklad.Amount FROM Sklad WHERE

Sklad.ID = ALL(SELECT inserted.Mat_ID FROM inserted))+ @amt

UPDATE Sklad

SET Sklad.Amount = @amt

WHERE Sklad.ID = ALL(SELECT inserted.Mat_ID FROM inserted)

4.3 Создание процедур

Процедура ниже выполняет вставку новой записи в таблицу Purchase (Закупки). В случае если покупаемый материал не найден на складе, в таблицу Sklad (Склад) заносится название нового материала и единицы измерения его количества, затем заносится информация в таблицу Purchases. Далее за изменение количества материала на складе отвечает триггер IncSkladAmount.

CREATE PROCEDURE AddToPurchase

@Name char(200), @Amount int, @Unit char(10),

@Price money, @BDate datetime, @Supplier_ID int,

@Employe_ID int, @BuildObj_ID int

AS

DECLARE @tmp_id int

IF NOT EXISTS (SELECT * FROM Sklad WHERE Sklad.Name = @Name)

BEGIN

INSERT INTO Sklad (Name, Amount, Unit)

VALUES (@Name, 0, @Unit)

SET @tmp_id = (SELECT Sklad.ID FROM Sklad WHERE Sklad.Name = @Name)

INSERT INTO Purchases (Mat_ID, Price, Amount, BDate,

Supplier_ID, Employe_ID, BuildObj_ID)

VALUES (@tmp_id, @Price, @Amount, @BDate, @Supplier_ID,

@Employe_ID, @BuildObj_ID)

END

ELSE

BEGIN

SET @tmp_id = (SELECT Sklad.ID FROM Sklad WHERE Sklad.Name = @Name)

INSERT INTO Purchases (Mat_ID, Price, Amount, BDate,

Supplier_ID, Employe_ID, BuildObj_ID)

VALUES (@tmp_id, @Price, @Amount, @BDate, @Supplier_ID,

@Employe_ID, @BuildObj_ID)

END

Следующая процедура использует механизм курсоров T-SQL. Она возвращает список сотрудников, имеющих высшее образование.

CREATE PROCEDURE GetTopEducEmp

AS

DECLARE m_cursor CURSOR FOR

SELECT Employe.SrName, Employe.Name, Employe.PtName,

EmpEducation.EduType

FROM Employe INNER JOIN EmpEducation ON Employe.Educ_ID=EmpEducation.ID

GROUP BY Employe.SrName, Employe.Name, Employe.PtName, EmpEducation.EduType

OPEN m_cursor

DECLARE @m_srname VARCHAR(15), @m_name VARCHAR(15), @m_ptname VARCHAR(15), @m_var VARCHAR(10)

FETCH NEXT FROM m_cursor INTO @m_srname, @m_name, @m_ptname, @m_var

WHILE @@fetch_status=0

BEGIN

IF (@m_var = 'высшее')

PRINT @m_srname+' '+@m_name+' '+@m_ptname

FETCH NEXT FROM m_cursor INTO @m_srname, @m_name, @m_ptname, @m_var

END

CLOSE m_cursor

5. Запросы на выборку записей

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

SELECT * FROM Employe

WHERE YEAR(BrithDate) BETWEEN 1980 AND 1990

Возвращает сотрудников родившихся в период с 1980 по 1990 годы.

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

SELECT Employe.SrName, Employe.Name, Employe.PtName, Departament.Name as DepName

FROM Employe INNER JOIN Departament

ON Employe.Dep_ID=Departament.ID

WHERE Departament.Name IN ('Управление', 'Отдел снабжения', 'СУ-1')

Возвращает список сотрудников работающих в соответствующих отделах

5.3 Запрос с использованием агрегатных функций с применением группировки + запрос на выборку записей с условием сортировки

SELECT Departament.Name AS [Отдел], COUNT(Employe.Dep_ID) AS [Количество сотрудников]

FROM Departament INNER JOIN Employe ON

Departament.ID = Employe.Dep_ID

GROUP BY Departament.Name

ORDER BY Departament.Name

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

5.4 Вложенный запрос на выборку записей, в том числе с использованием предикатов EXIST, ANY, ALL

SELECT Employe.PtName, Employe.Name, Employe.SrName, Post.Name

FROM Employe INNER JOIN Post ON (Employe.Post_ID = Post.ID)

WHERE EXISTS(SELECT Post.Salary

FROM Post

WHERE (Salary>=30000) AND (Post.ID=Employe.Post_ID))

Выводит сотрудников, оклад которых превышает либо равен 30000.

триггер инфологический запрос реляционный

Размещено на Allbest.ru


Подобные документы

  • Проектирование даталогической модели в виде логической структуры реляционной базы данных в СУБД Microsoft SQL Server на основе созданной инфологической модели базы данных интернет-магазина музыки. Выделение сущностей и связей, анализ предметной области.

    курсовая работа [724,6 K], добавлен 15.06.2013

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

    курсовая работа [981,4 K], добавлен 05.11.2011

  • Программные продукты, используемые при проектировании базы данных. Разработка базы данных "Библиотека" с использование программного проекта Microsoft SQL Server. Создание таблиц, триггеров, пользователей, репликации, запросов, функций, процедур.

    курсовая работа [897,6 K], добавлен 21.11.2011

  • Исследование структуры и практическая разработка проектной модели реляционной базы данных "Аптечный склад" в MS Microsoft SQL Server 2005. Характеристика и создание возможностей по просмотру, редактированию, добавлению данных и обработке запросов в БД.

    курсовая работа [793,3 K], добавлен 21.06.2011

  • Понятие реляционной модели данных, целостность ее сущности и ссылок. Основные этапы создания базы данных, связывание таблиц на схеме данных. Проектирование базы данных книжного каталога "Books" с помощью СУБД Microsoft Access и языка запросов SQL.

    курсовая работа [838,9 K], добавлен 25.11.2010

  • Обеспечение целостности коэффициентов на уровне базы данных. Создание ER и реляционной модели данных "Выдача банком кредита". Проектирование запросов, хранимых процедур и таблиц в MS SQL Server 2000 для предметной области. Ввод и редактирование данных.

    курсовая работа [1,2 M], добавлен 01.12.2014

  • Основные сведения об SQL Server. Логическая структура реляционной базы данных. Создание базы данных Server. Обработка элементов оператора SELECT. Структура таблиц inserted и deleted. Ввод данных в таблицу "Клиенты". Краткая справка по языку запросов SQL.

    курсовая работа [2,9 M], добавлен 11.05.2012

  • Компоненты реляционной базы данных Microsoft Access. Создание структуры таблиц и определение связей между ними. Проектирование форм для сводных таблиц и запросов с помощью конструктора окон. Разработка и создание автоотчетов и запросов на выборку данных.

    реферат [3,3 M], добавлен 29.01.2011

  • Построение концептуальной, реляционной и логической моделей базы данных (БД). Разработка онтологии в системе Protege. Выбор средств реализации БД. Проверка ее структуры и содержимого. Создание, загрузка и проверка БД в СУБД Microsoft SQL Server 2008.

    курсовая работа [3,4 M], добавлен 25.12.2012

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

    дипломная работа [1,1 M], добавлен 03.07.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.