
- •Содержание
- •Введение
- •Спецификация требования
- •Концептуальное проектирование. Создание er-модели предметной области
- •Логическое проектирование. Построение и проверка реляционной модели данных
- •3.1. Исключение из концептуальной модели особенностей несовместимых с реляционной моделью
- •3.2. Формирование отношений
- •3.3. Определение ограничения целостности
- •Физическое проектирование и реализация базы данных в ms sql Server
- •4.1. Определение состава и структуры таблиц
- •4.2. Реализация ограничений целостности
- •4.3. Проектирование и разработка пользовательских представлений
- •4.3.1. Представление «Транспортное средство»
- •4.3.2. Представление «Протокол»
- •Заключение
- •Список использованных источников
3.3. Определение ограничения целостности
Определим ограничения целостности данных для предотвращения появления в базе противоречивых данных.
Ограничения для доменов атрибутов:
Сущность Vladelec:
Домен "ИНН" атрибута INN состоит из строк фиксированной длины в 12 символов, принимающие значения в виде цифр от 0 до 9(например, 100012662830);
Домен "Серия паспорта" атрибута Seria_pas состоит из строк фиксированной длины в 4 символа, принимающие значения в виде цифр от 0 до 9(например, 1223);
Домен "Номер паспорта" атрибута N_pas состоит из строк фиксированной длины в 6 символов, принимающие значения в виде цифр от 0 до 9(например, 667127);
Сущность Transport:
Домен "Государственный регистрационный знак" атрибута RegZnak состоит из строк фиксированной длины в 6 символов, принимающая значения в виде цифр от 0 до 9 и букв русского алфавита А, В, Е, К, М, Н, О, Р, С, Т, X, У. Структура домена выглядит следующим образом: [Буква] [Цифра][Цифра][Цифра] [Буква][Буква] (например, в754ор);
Ограничения ссылочной целостности по всем внешним ключам (см. выше на 16 стр.).
Физическое проектирование и реализация базы данных в ms sql Server
4.1. Определение состава и структуры таблиц
Приступая к физическому проектированию, прежде всего, необходимо проанализировать и хорошо усвоить информацию об отношениях, собранную на этапе построения логической модели базы данных. Эта информация содержаться в словаре данных и в определениях отношений, записанных на языке DBDL (см. выше на 16 стр.).
Ниже представлены описания структуры базы данных для целевой СУБД:
ChastStKoAP:
CREATE TABLE [dbo].[ChastStKoAP](
[IdChastSt] [int] IDENTITY(1,1) NOT NULL,
[IdStatya] [int] NOT NULL,
[ChastSt] [smallint] NOT NULL,
[NameChast] [varchar](350) NOT NULL,
CONSTRAINT [PK_ChastStKoAP] PRIMARY KEY CLUSTERED
( [IdChastSt] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_ChastSt] UNIQUE NONCLUSTERED
( [IdStatya] ASC, [ChastSt] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_NameChast] UNIQUE NONCLUSTERED
( [NameChast] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY
GO
KategoriiVU:
CREATE TABLE [dbo].[KategoriiVU](
[IdVU] [int] NOT NULL,
[IdKategotiya] [int] NOT NULL,
[Date] [datetime] NOT NULL,
CONSTRAINT [PK_KategoriiVU] PRIMARY KEY CLUSTERED
( [IdKategotiya] ASC, [IdVU] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Marka:
CREATE TABLE [dbo].[Marka](
[IdMarka] [int] IDENTITY(1,1) NOT NULL,
[NameMarka] [varchar](15) NOT NULL,
CONSTRAINT [PK_Marka] PRIMARY KEY CLUSTERED
( [IdMarka] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_Marka] UNIQUE NONCLUSTERED
( [NameMarka] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Model:
CREATE TABLE [dbo].[Model](
[IdModel] [int] IDENTITY(1,1) NOT NULL,
[IdTipTS] [int] NOT NULL,
[IdMarka] [int] NOT NULL,
[NameModel] [varchar](15) NOT NULL,
CONSTRAINT [PK_Model] PRIMARY KEY CLUSTERED
( [IdModel] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_Model] UNIQUE NONCLUSTERED
( [IdModel] ASC, [NameModel] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Operatsiya:
CREATE TABLE [dbo].[Operatsiya](
[IdOperatsiya] [int] IDENTITY(1,1) NOT NULL,
[NameOp] [varchar](50) NOT NULL,
CONSTRAINT [PK_Operatsiya] PRIMARY KEY CLUSTERED
( [IdOperatsiya] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_NameOp] UNIQUE NONCLUSTERED
( [NameOp] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Protocol:
CREATE TABLE [dbo].[Protocol](
[IdProtocol] [int] IDENTITY(1,1) NOT NULL,
[IdSotrudnik] [int] NOT NULL,
[IdVU] [int] NOT NULL,
[IdTS] [int] NOT NULL,
[IdChastSt] [int] NOT NULL,
[DateTimeNar] [datetime] NOT NULL,
[MestoNar] [varchar](150) NOT NULL,
[OpisanieNar] [varchar](500) NOT NULL,
[DateVyd] [datetime] NOT NULL,
[Oplacheno] [bit] NOT NULL,
CONSTRAINT [PK_Protocol] PRIMARY KEY CLUSTERED
( [IdProtocol] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Shtraf:
CREATE TABLE [dbo].[Shtraf](
[IdChastSt] [int] NOT NULL,
[Date] [datetime] NOT NULL,
[Razmer] [money] NOT NULL,
CONSTRAINT [PK_Shtraf] PRIMARY KEY CLUSTERED
( [IdChastSt] ASC, [Date] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Sotrudnik:
CREATE TABLE [dbo].[Sotrudnik](
[IdSotrudnik] [int] IDENTITY(1,1) NOT NULL,
[Familiya] [varchar](25) NOT NULL,
[Imya] [varchar](15) NOT NULL,
[Otchestvo] [varchar](25) NOT NULL,
[Dolzhnost] [varchar](50) NOT NULL,
[Zvanie] [varchar](50) NOT NULL,
CONSTRAINT [PK_Sotrudnik] PRIMARY KEY CLUSTERED
( [IdSotrudnik] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
StKoAP:
CREATE TABLE [dbo].[StKoAP](
[IdStatya] [int] IDENTITY(1,1) NOT NULL,
[Statya] [char](10) NOT NULL,
[NameStatya] [varchar](250) NOT NULL,
CONSTRAINT [PK_StKoAP] PRIMARY KEY CLUSTERED
( [IdStatya] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_NameStatya] UNIQUE NONCLUSTERED
( [NameStatya] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_Statya] UNIQUE NONCLUSTERED
( [Statya] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
TipTS:
CREATE TABLE [dbo].[TipTS](
[IdTipTS] [int] IDENTITY(1,1) NOT NULL,
[NameTipTS] [varchar](25) NOT NULL,
CONSTRAINT [PK_TipTS] PRIMARY KEY CLUSTERED
( [IdTipTS] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_NameTipTS] UNIQUE NONCLUSTERED
( [NameTipTS] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Transport:
CREATE TABLE [dbo].[Transport](
[IdTS] [int] IDENTITY(1,1) NOT NULL,
[IdModel] [int] NOT NULL,
[RegZnak] [char](6) NOT NULL,
[GodVypuska] [datetime] NOT NULL,
[N_Dvigatelya] [char](10) NOT NULL,
[N_Kuzova] [char](20) NOT NULL,
[Cvet] [varchar](25) NOT NULL,
[Seriya_TS] [char](4) NOT NULL,
[N_TS] [char](6) NOT NULL,
CONSTRAINT [PK_Transport] PRIMARY KEY CLUSTERED
( [IdTS] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_Kuzov] UNIQUE NONCLUSTERED
( [N_Kuzova] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_PasportTS] UNIQUE NONCLUSTERED
( [Seriya_TS] ASC, [N_TS] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_TN_Dvigatel] UNIQUE NONCLUSTERED
( [N_Dvigatelya] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
UchetTS:
CREATE TABLE [dbo].[UchetTS](
[IdVladelec] [int] NOT NULL,
[IdOperatsiya] [int] NOT NULL,
[IdTS] [int] NOT NULL,
[DateOp] [datetime] NOT NULL,
CONSTRAINT [PK_UchetTS] PRIMARY KEY CLUSTERED
( [IdVladelec] ASC, [IdOperatsiya] ASC, [IdTS] ASC, [DateOp] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Ugon:
CREATE TABLE [dbo].[Ugon](
[IdUgon] [int] IDENTITY(1,1) NOT NULL,
[IdTS] [int] NOT NULL,
[DateUgon] [datetime] NOT NULL,
[MestoUgon] [varchar](150) NOT NULL,
[DateVozvrata] [datetime] NULL,
[MestoNahozhdeniya] [varchar](150) NULL,
CONSTRAINT [PK_Ugon] PRIMARY KEY CLUSTERED
( [IdUgon] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
VidyKategoriy:
CREATE TABLE [dbo].[VidyKategoriy](
[IdKategotiya] [int] IDENTITY(1,1) NOT NULL,
[Kategoriya] [char](1) NOT NULL,
[Opisanie] [varchar](150) NULL,
CONSTRAINT [PK_VidyKategoriy] PRIMARY KEY CLUSTERED
( [IdKategotiya] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_VidyKategoriy] UNIQUE NONCLUSTERED
( [Kategoriya] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Vladelec:
CREATE TABLE [dbo].[Vladelec](
[IdVladelec] [int] IDENTITY(1,1) NOT NULL,
[Familiya] [varchar](25) NOT NULL,
[Imya] [varchar](15) NOT NULL,
[Otchestvo] [varchar](25) NOT NULL,
[Birthday] [datetime] NOT NULL,
[Adres] [varchar](250) NOT NULL,
[INN] [char](12) NOT NULL,
[Seria_pas] [char](4) NOT NULL,
[N_pas] [char](6) NOT NULL,
CONSTRAINT [PK_Vladelec] PRIMARY KEY CLUSTERED
( [IdVladelec] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_INN] UNIQUE NONCLUSTERED
( [INN] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_Pasport] UNIQUE NONCLUSTERED
( [Seria_pas] ASC, [N_pas] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
VidyKategoriy:
CREATE TABLE [dbo].[Voditel](
[IdVU] [int] IDENTITY(1,1) NOT NULL,
[Familiya] [varchar](25) NOT NULL,
[Imya] [varchar](15) NOT NULL,
[Otchestvo] [varchar](25) NOT NULL,
[Birthday] [datetime] NOT NULL,
[INN] [char](12) NOT NULL,
[City] [varchar](50) NOT NULL,
[Seriya_VU] [char](4) NOT NULL,
[N_VU] [char](6) NOT NULL,
[DateVydachi] [datetime] NOT NULL,
[DeystvitelenDo] [datetime] NOT NULL,
[OsobyeOtmetki] [varchar](50) NULL,
CONSTRAINT [PK_Voditel] PRIMARY KEY CLUSTERED
( [IdVU] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_Voditel_INN] UNIQUE NONCLUSTERED
( [INN] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_VU] UNIQUE NONCLUSTERED
( [Seriya_VU] ASC, [N_VU] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO