create table Клиент
(
id_client int primary key,
Фамилия nvarchar(30) not null,
Имя nvarchar(20) not null,
Отчество nvarchar(20) not null,
Паспорт bigint not null,
Адрес nvarchar(100) null
)
create table Провайдеры
(
[Название провайдера] nvarchar(50) primary key,
[Название суб провайдера] nvarchar(50) null,
[ФИО директора] nvarchar(50) not null,
[Телефон директора] integer not null,
ОКПО integer not null
)
create table [Тарифы всех провайдеров]
(
[Название тарифа] nvarchar(50) primary key,
Скорость integer not null,
Плата integer not null,
Тип nvarchar(50) not null check ( Тип in
('Проводной/Лимитный',
'Проводной/безлимитный',
'Беспроводной/Лимитный',
'Беспроводной/Безлимитный'))
)
create table [Провайдер Тариф]
(
[Название провайдера] nvarchar(50) primary key references Провайдеры([Название провайдера]),
[Название тарифа] nvarchar(50) references [Тарифы всех провайдеров]([Название тарифа])
)
create table Договор
(
[номер договора] integer,
id_client integer references Клиент(id_client),
Провайдер nvarchar(50) references [Провайдер Тариф]([Название провайдера]),
[Название тарифа] nvarchar(50) references [Провайдер Тариф]([Название тарифа])
/*Вот здесь пишет
There are no primary key or candidate keys on referenced table ''Провайдер Тариф'
that match the referencing column in the foreign key ...*/
primary key([номер договора], id_client),
constraint Dogovor_Client_deletCascade
foreign key (id_client) references Клиент
on delete cascade
on update cascade
)
[Провайдер] nvarchar(50) references [Провайдеры]([Название провайдера])
[Название тарифа] nvarchar(50) references [Тарифы всех провайдеров]([Название тарифа])
CREATE TABLE [Клиент]
( id_client INT PRIMARY KEY,
[Фамилия] NVARCHAR(30) NOT NULL,
[Имя] NVARCHAR(20) NOT NULL,
[Отчество] NVARCHAR(20) NOT NULL,
[Паспорт] NVARCHAR(MAX) NOT NULL,
[Адрес] NVARCHAR(MAX) NULL )
CREATE TABLE [Провайдер]
( [Название] NVARCHAR(50) PRIMARY KEY,
[Название суб-провайдера] NVARCHAR(50) NULL,
[ФИО директора] NVARCHAR(100) NOT NULL,
[Телефон директора] CHAR(10) NOT NULL,
[ОКПО] CHAR(10) NOT NULL )
CREATE TABLE [Тариф]
( [Название] NVARCHAR(50) PRIMARY KEY,
[Скорость] INT NOT NULL,
[Стоимость] MONEY NOT NULL,
[Тип] NVARCHAR(50) NOT NULL CHECK ( [Тип] in
( 'Проводной/Лимитный',
'Проводной/безлимитный',
'Беспроводной/Лимитный',
'Беспроводной/Безлимитный' )))
CREATE TABLE [Провайдер Тарифа]
( [Название провайдера] NVARCHAR(50) REFERENCES [Провайдер] ([Название]),
[Название тарифа] NVARCHAR(50) REFERENCES [Тариф]([Название])
PRIMARY KEY ( [Название провайдера],
[Название тарифа]))
CREATE TABLE [Договор]
( [Номер] INT,
id_client INT,
[Провайдер] NVARCHAR(50),
[Тариф] NVARCHAR(50)
PRIMARY KEY ([Номер], id_client),
CONSTRAINT [Договор Клиент]
FOREIGN KEY (id_client) REFERENCES [Клиент]
ON DELETE CASCADE,
FOREIGN KEY([Провайдер], [Тариф])
REFERENCES [Провайдер Тарифа] ([Название провайдера], [Название тарифа]))