Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой проект (2).doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.32 Mб
Скачать

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 стр.).

  1. Физическое проектирование и реализация базы данных в 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