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

59

Ниже мы будем выполнять запросы к простой тестовой базе данных SQL Server с именем AutoLot. Эта база данных будет содержать три взаимосвязанных таблицы (Inventory, Orders и Customers), содержащих различные данные о заказах гипотетической компании по продаже автомобилей.

Ниже предполагается, что у вас имеется копия Microsoft SQL Server (7.0 или выше) или копия Microsoft SQL Server 2008 Express Edition. Этот облегченный сервер баз данных отлично подходит для наших потребностей: он бесплатен, предоставляет графический интерфейс (SQL Server Management Tool) для создания и администрирования баз данных и интегрирован с Visual Studio 2010/Visual C# 2010 Express Edition.

Для демонстрации последнего пункта остаток этого раздела будет посвящен созданию базы данных AutoLot с помощью Visual Studio 2010. Если вы пользуетесь Visual C# Express, то сможете выполнить аналогичные действия в окне проводника баз данных (Database Explorer, открывается с помощью пункта меню View --> Other Windows (Вид --> Другие окна)).

Создание таблицы inventory

Чтобы приступить к созданию тестовой базы данных, запустите Visual Studio 2010 и откройте Server Explorer через меню View (Просмотр). Затем щелкните правой кнопкой мыши на узле Data Connections (Подключения к данным) и выберите в контекстном меню пункт Create New SQL Server Database (Создать новую базу данных SQL Server). В открывшемся диалоговом окне подключитесь к SQL Server, установленному на вашей локальной машине (с именем (local)), и укажите в поле имени базы данных AutoLot. Для наших целей можно оставить аутентификацию Windows:

Создание новой базы данных SQL Server Express

Сейчас база данных AutoLot совершенно пуста и не содержит никаких объектов (таблиц, хранимых процедур и т.п.). Для добавления новой таблицы щелкните правой кнопкой мыши на узле Tables (Таблицы) и выберите в контекстном меню пункт Add New Table:

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

С помощью редактора таблиц добавьте в таблицу четыре столбца данных: CarID (Идентификатор автомобиля), Make (Модель), Color (Цвет) и PetName (Дружественное имя). У столбца CarID должно быть установлено свойство Primary Key (первичный ключ) — для этого щелкните правой кнопкой мыши на строке CarID и выберите в контекстном меню пункт Set Primary Key (Установить первичный ключ). Окончательные параметры таблицы показаны на рисунке ниже. На панели Column Properties (Свойства столбца) ничего делать не надо, просто запомните типы данных для каждого столбца:

Структура таблицы Inventory

Сохраните и закройте новую таблицу; новый объект базы данных должен иметь имя Inventory. Теперь таблица Inventory должна быть видна под узлом Tables (Таблицы) в Server Explorer. Щелкните правой кнопкой мыши на ее значке и выберите в контекстном меню пункт Show Table Data (Просмотр данных таблицы). Введите информацию о нескольких новых автомобилях по своему усмотрению (чтобы было интереснее, пусть у некоторых автомобилей совпадают цвета и модели). Один из возможных вариантов списка товаров приведен на рисунке:

Заполнение таблицы Inventory

Создание хранимой процедуры GetPetName()

В последующих статьях будет показано, как вызывать хранимые процедуры в ADO.NET. Возможно, вы уже знаете, что хранимые процедуры — это подпрограммы, хранимые непосредственно в базе данных; обычно они работают с данными таблиц и возвращают какое-то значение. Мы добавим в базу данных одну хранимую процедуру, которая по идентификатору автомобиля будет возвращать его дружественное имя. Для этого щелкните правой кнопкой мыши на узле Stored Procedures (Хранимые процедуры) базы данных AutoLot в Server Explorer и выберите в контекстном меню пункт Add New Stored Procedure (Добавить новую хранимую процедуру). В появившемся окне редактора введите следующий текст:

ALTER PROCEDURE GetPetName
@carID int,
@petName char(10) output
AS
	SELECT @petName = PetName from Inventory 
	where CarID = @carID

При сохранении, этой процедуре автоматически будет присвоено имя GetPetName, взятое из оператора CREATE PROCEDURE (учтите, что при первом сохранении Visual Studio 2010 автоматически изменяет имя SQL-сценария на "ALTER PROCEDURE..."). После этого новая хранимая процедура будет видна в Server Explorer:

Хранимая процедура

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

Создание таблиц Customers и Orders

В нашей тестовой базе данных должны быть еще две таблицы: Customers (Клиенты) и Orders (Заказы). Таблица Customers будет содержать список клиентов и состоять из трех столбцов: CustID (Идентификатор клиента; должен быть первичным ключом), FirstName (Имя) и LastName (Фамилия). Повторите шаги, которые были выполнены для создания таблицы Inventory, и создайте таблицу Customers, пользуясь схемой, приведенной на рисунке:

Структура таблицы Customers

После сохранения этой таблицы добавьте в нее несколько записей:

Заполнение таблицы Customers

Последняя наша таблица — Orders — предназначена для связи клиентов и интересующих их автомобилей. Для этого выполняется отображение значений OrderID на CarID/CustID. Ее структура показана ниже (здесь OrderID также является первичным ключом):

Структура таблицы Orders

Теперь добавьте в таблицу Orders данные. Выберите для каждого значения CustID уникальное значение CarID (предположим, что значения OrderID начинаются с 1000):

Заполнение таблицы Orders

Например, в соответствии с информацией, приведенной на рисунках, видно, что Дэйв Бреннер (Dave Brenner, CustID = 1) мечтает о черном BMW (CarID = 1000), а Пэт Уолтон (Pat Walton, CustID = 4) приглянулся розовый Saab (CarID = 1992).

Визуальное создание отношений между таблицами

И, наконец, между таблицами Customers, Orders и Inventory нужно установить отношения "родительский-дочерний". В Visual Studio 2010 это выполняется очень просто, т.к. она позволяет вставить новую диаграмму базы данных на этапе проектирования. Для этого откройте Server Explorer, щелкните правой кнопкой мыши на узле Database Diagrams базы AutoLot и выберите пункт контекстного меню Add New Diagram (Добавить новое представление). Откроется диалоговое окно, в котором можно выбирать таблицы и добавлять их в диаграмму. Выберите все таблицы из базы данных AutoLot:

Выбор таблиц для диаграммы

Чтобы начать устанавливать отношения между таблицами, щелкните на ключе CarID таблицы Inventory, а затем (не отпуская кнопку мыши) перетащите его на поле CarID таблицы Orders. Когда вы отпустите кнопку, появится диалоговое окно; согласитесь со всеми предложенными в нем значениями по умолчанию.

Теперь повторите те же действия для отображения ключа CustID таблицы Customers на поле CustID таблицы Orders. После этого вы увидите диалоговое окно классов, показанное на рисунке ниже (было включено отображение отношений между таблицами за счет щелчка правой кнопкой мыши на конструкторе и выбора в контекстном меню пункта Show Relationship Labels (Показывать метки взаимосвязи)).

Отношения между таблицами

Вот и все, база AutoLot полностью готова. Конечно, это лишь бледное подобие реальных корпоративных баз данных, но для тестовых примеров этого вполне достаточно. И теперь, имея тестовую базу, можно начать подробно разбираться в модели генератора поставщиков данных ADO.NET.

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