Создание базы данных

105 Исходный код проекта

Для нашего тестового интернет-магазина GameStore потребуется создать базу данных в которой будет храниться информация о каталоге игр, которые мы продаем. В качестве первого шага в Visual Studio необходимо создать подключение к базе данных. Откройте окно Server Explorer и щелкните на кнопке Connect to Database (Подключиться к базе данных), на которой изображен шнур электропитания со знаком "плюс" зеленого цвета. Появится диалоговое окно Add Connection (Добавление подключения). Введите для имени сервера, например ".\SQLEXPRESS" — специальное имя, которое указывает на необходимость работы с локальной СУБД SQL Server Express.

Удостоверьтесь, что выбран переключатель Use Windows Authentication (Использовать аутентификацию Windows) и установите имя базы данных в GameStore, как показано на рисунке ниже. (В зависимости от применяемой версии Visual Studio, может понадобиться выбрать в списке Data source (Источник данных) вариант Microsoft SQL Server.)

Установка базы данных GameStore

Щелкните на кнопке OK. Вскоре отобразится диалоговое окно с запросом о создании новой базы данных. Щелкните в нем на кнопке Yes (Да) и в окне Server Explorer появится новый элемент. Развернув этот элемент, можно просмотреть различные аспекты только что созданной базы данных:

База данных GameStore, отображаемая в окне Server Explorer

Вы должны видеть что-то очень похожее, но имя подключения к базе данных будет отличаться, в основном потому, что оно содержит имя локального компьютера (на рисунке это professorweb).

Определение схемы базы данных

В базе данных нам нужна только одна таблица, которая будет использоваться для хранения подробной информации о играх. В окне Server Explorer разверните только что созданную базу данных и щелкните правой кнопкой мыши на элементе Tables (Таблицы). Выберите в контекстном меню пункт Add New Table (Добавить новую таблицу), как показано на рисунке ниже:

Добавление новой таблицы

Отобразится конструктор для создания новой таблицы. Создавать таблицы базы данных можно с помощью визуальной части этого конструктора, но мы будем пользоваться окном T-SQL, т.к. оно предлагает более лаконичный и аккуратный способ описания требуемой спецификации таблицы. Введите в этом окне оператор SQL, представленный в примере ниже, и щелкните на кнопке Update (Обновить), расположенной в верхнем левом углу окна конструктора таблиц:

CREATE TABLE Games
(
	[GameID] INT NOT NULL PRIMARY KEY IDENTITY,
	[Name] NVARCHAR(100) NOT NULL,
	[Description] NVARCHAR(500) NOT NULL,
	[Category] NVARCHAR(50) NOT NULL,
	[Price] DECIMAL(16, 2) NOT NULL
)

Этот оператор создает таблицу по имени Games, имеющую столбцы для различных свойств, с которыми необходимо работать в приложении; вскоре вы увидите, как эти столбцы отображаются на объекты данных в приложении.

Указание свойства IDENTITY для столбца GameID означает, что SQL Server будет генерировать уникальное значение первичного ключа при добавлении данных в эту таблицу. Когда база данных применяется в веб-приложении, генерация уникальных первичных ключей может оказаться очень трудной, поскольку запросы от пользователей поступают одновременно. Добавление свойства IDENTITY позволяет сохранять новые строки в таблице, возложив поддержку уникальных значений в первичном ключе на SQL Server.

После щелчка на кнопке Update отобразится диалоговое окно Preview Database Updates (Предварительный просмотр обновлений базы данных) со сводкой по возможным результатам выполнения оператора, как показано на рисунке ниже:

Сводка по возможным результатам выполнения оператора SQL

Щелкните на кнопке Update Database (Обновить базу данных), чтобы выполнить оператор SQL и создать таблицу Games в базе данных. Просмотреть результат обновления можно, щелкнув на кнопке Refresh (Обновить) в окне Server Explorer. В разделе Tables (Таблицы) появится новая таблица Games с детальной информацией о каждом ее столбце.

После обновления базы данных окно dbo.Games можно закрыть. Среда Visual Studio предложит сохранить сценарий SQL, с помощью которого создавалась база данных. Хотя здесь в этом необходимости нет, в реальных проектах, где нужно конфигурировать множество баз данных, подобная возможность окажется полезной.

Добавление данных в базу

Мы собираемся вручную добавить в базу некоторые данные, чтобы было с чем работать до того, как позже будут реализованы средства администрирования приложения GameStore (в которых можно будет вручную редактировать каталог игр).

В окне Server Explorer разверните элемент Tables в базе данных GameStore, щелкните правой кнопкой мыши на таблице Games и выберите в контекстном меню пункт Show Table Data (Показать данные таблицы). Введите данные либо вручную (как показано на рисунке), либо с помощью показанного ниже SQL-кода (щелкните правой кнопкой мыши по таблице Games в окне Solution Explorer и выберите New Query). Перемещаться по столбцам можно с помощью клавиши <Tab>. Нажатие <Tab> в конце каждой строки приводит к переходу на следующую строку и обновлению данных в базе.

INSERT INTO Games(Name, Description, Category, Price) 
VALUES 
	('SimCity', 'Градостроительный симулятор снова с вами! Создайте город своей мечты', 'Симулятор', 1499.00),
	('TITANFALL', 'Эта игра перенесет вас во вселенную, где малое противопоставляется большому, природа – индустрии, а человек – машине', 'Шутер', 2299.00),
	('Battlefield 4', 'Battlefield 4 – это определяющий для жанра, полный экшена боевик, известный своей разрушаемостью, равных которой нет', 'Шутер', 899.40),
	('The Sims 4', 'В реальности каждому человеку дано прожить лишь одну жизнь. Но с помощью The Sims 4 это ограничение можно снять! 
		Вам решать — где, как и с кем жить, чем заниматься, чем украшать и обустраивать свой дом', 'Симулятор', 15.00),
	('Dark Souls 2', 'Продолжение знаменитого ролевого экшена вновь заставит игроков пройти через сложнейшие испытания. Dark Souls II предложит 
		нового героя, новую историю и новый мир. Лишь одно неизменно – выжить в мрачной вселенной Dark Souls очень непросто.', 'RPG', 949.00),
	('The Elder Scrolls V: Skyrim', 'После убийства короля Скайрима империя оказалась на грани катастрофы. Вокруг претендентов на престол сплотились новые союзы, 
		и разгорелся конфликт. К тому же, как предсказывали древние свитки, в мир вернулись жестокие и беспощадные драконы. Теперь будущее Скайрима и всей 
		империи зависит от драконорожденного — человека, в жилах которого течет кровь легендарных существ.', 'RPG', 1399.00),
	('FIFA 14', 'Достоверный, красивый, эмоциональный футбол! Проверенный временем геймплей FIFA стал ещё лучше благодаря инновациям, поощряющим творческую игру в
		 центре поля и позволяющим задавать её темп.', 'Симулятор', 699.00),
	('Need for Speed Rivals', 'Забудьте про стандартные режимы игры. Сотрите грань между одиночным и многопользовательским режимом в постоянном соперничестве 
		между гонщиками и полицией. Свободно войдите в мир, в котором ваши друзья уже участвуют в гонках и погонях. ', 'Симулятор', 15.00),
	('Crysis 3', 'Действие игры разворачивается в 2047 году, а вам предстоит выступить в роли Пророка.', 'Шутер', 1299.00),
	('Dead Space 3', 'В Dead Space 3 Айзек Кларк и суровый солдат Джон Карвер отправляются в космическое путешествие, чтобы узнать о происхождении некроморфов.', 'Шутер', 499.00);
Добавление данных в таблицу Games

Как видите в этом коде столбец GameID должен быть оставлен пустым. Это столбец идентичности, для которого SQL Server будет генерировать уникальное значение при переходе на следующую строку.

Лучший чат для C# программистов