Тут мини подсказка как сделать базу если вы никогда ее не делали.
Делать будем через Visual Studio
Запускаем Visual Studio без создания проекта:
тыкаем вверху
Ну все теперь давайте таблички создавать
Делать будем такую базу
Создаем таблицу Cats
Вводим названия столбцов и указываем тип. У nvarchar, еще прописываем максимальную длину типа nvarchar(100), ее если что можно будет всегда подкорректировать потом, можно указать nvarchar(MAX) тогда хватит на всю жизнь.
Также прописываем название таблицы в скрипте который генерируется снизу
тыкаем на поле id и справа внизу в свойствах меняем свойство:
ну и жмем кнопочку обновить
по идее должно открыться окошко в котором можно будет нажать Обновить базу данных, но у меня почему-то зависает, если вам не повезло так же как мне, то делаем следующим образом, копируем сгенерированный внизу запрос
CREATE TABLE [dbo].[Cats] (
[id] INT NOT NULL IDENTITY,
[name] NVARCHAR (100) NULL,
PRIMARY KEY CLUSTERED ([id] ASC)
);
слева тыкаем Новый запрос
и вставляем сгенерированный запрос
тыкаем слева
ура табличка появилась
Создаем таблицу Locations
забиваем столбцы
не забываем активировать свойство Идентификатор
у поле id, как делали выше в таблице Cats
У нас тут кстати ссылка таблицы на саму себя, оно в принципе и без внешнего ключа вполне может работать, но давайте все таки его добавим. Тыкаем справа на внешние ключи
пишем название типа FK_ParentLocationId_To_Location
, то есть FK, потом название поля, потом To, затем название таблицы на которую ссылаемся Location. На самом деле это просто подход к неймингу и не на что не влияет.
Подкручиваем скрипт внизу
ну и тыкаем обновить
ну либо если снова начинает долго думать, то через создать Новый запрос скопировать и запустить
CREATE TABLE [dbo].[Locations] (
[Id] INT NOT NULL IDENTITY,
[title] NVARCHAR (100) NULL,
[parent_location_id] INT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_ParentLocationId_To_Location] FOREIGN KEY ([parent_location_id]) REFERENCES [dbo].[Locations] ([Id])
);
Создаем остальные таблицы
Таблица Races
CREATE TABLE [dbo].[Races] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[title] NVARCHAR (100) NULL,
[location_id] INT NULL,
[dt] DATETIME NULL,
CONSTRAINT [PK__Races__3214EC0790276EE8] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_Races_Locations] FOREIGN KEY ([location_id]) REFERENCES [dbo].[Locations] ([Id])
);
Таблица RacesToCats
CREATE TABLE [dbo].[RacesToCats] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[race_id] INT NULL,
[cat_id] INT NULL,
[time] INT NULL,
CONSTRAINT [PK__RacesToC__3214EC0706FB7597] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_RacesToCats_Cats] FOREIGN KEY ([cat_id]) REFERENCES [dbo].[Cats] ([id]),
CONSTRAINT [FK_RacesToCats_Races] FOREIGN KEY ([race_id]) REFERENCES [dbo].[Races] ([Id])
);