Создание объектов базы данных SQL Server средствами оболочки VS.NET 2003
Установка ограничений и значений, применяемых по умолчанию
Одним из принципов, применяемых присоздании баз данных, является стремление постоянно поддерживать высокое качество данных, в том числе заполнять все необходимые поля, контролировать тип данных и обеспечивать необходимый диапазон значений. Для этого применяются значения по умолчанию, прикладные алгоритмы и др. Здесь мы покажем, как с помощью встроенных средств оболочки упростить работу пользователей и своевременно подсказывать им, какие значения они могут вводить и что должны заполнять для поддержания целостности данных.
Решение задачи мы будем демонстрировать на базе данных Northwind, поскольку она имеет превосходную структуру, позволяющую легко показать, как применять необходимые методы. На ее примере мы изучим:
- как предусмотреть значения по умолчанию для поля OrderDate уже занкомой нам таблицы Orders
- как ввести контроль ограничений, позволяющий следить за тем, чтобы значение в поле ShipDate совпадало с датой в поле OrderDate или следовало за ней
- В окне Server Explorer для базы данных Northwind разверните узел Tables, щелкните правой кнопкой мыши на таблице Orders и выполните команду Design Table, чтобы вызвать на редактирование структуру таблицы
- В дизайнере таблиц установите курсор на столбце OrderDate и введите в дополнительное свойство Default Value значение GetDate() - вызов функции, которая возвращает системную дату. Это значение будет использоваться по умолчанию.
- Для ввода контроля ограничений вызовите контекстное меню для дизайнера таблиц и выполните команду Check Constraints
-
В
появившемся диалоговом окне Property Pages щелкните на
кнопке New и введите в текстовое поле списка Constraint expression: выражение
([ShippedDate] >= [OrderDate])
- В текстовом поле Constraint name: переименуйте ограничение на CK_Orders_1. Итоговое окно должно выглядеть так
Таким образом мы установили, что если при заполнении новой записи в таблицу Orders не будет заполнено поле OrderDate, то с помощью функции GetDate() приложение автоматически поместит туда текущую дату. После этого проверяется, чтобы дата отгрузки ShippedDate была более поздней, чем дата заказа OrderDate (чтобы не получилась чушь, что товар отгрузили прежде, чем его заказали). Если это правило не соблюдается, то выдается сообщение об ошибке.
Создание представлений
СУБД SQL Server позволяет выполнять просмотр и манипулирование данными с использованием следующих трех способов:
- Представления. Это структуры данных, позволяющие просматривать данные, прошедшие предварительную обработку: в том числе соединения таблиц, сортировку, и отбор по определенным критериям. В представлениях могут использоваться только SQL-операторы SELECT. Представления являются очень удобными, если возникает необходимость отобрать для вывода на экран определенную часть данных, но позволяют обновлять представленные в них данные так, будто они относятся к одной таблице.
- Хранимые процедуры. Это программные конструкции, позволяющие выполнять массовые операции обновления, вставки и удаления записей с крупными фрагментами таблиц. С помощью хранимых процедур можно также создавать запросы для выборки данных с последующей их сортировкой. Хранимые процедуры отличаются от представлений тем, что в них наряду с операторами SQL могут применяться операторы ходом выполнения программы. Хранимые процедуры могут использовать параметры.
-
Определяемые пользователем функции. Различают три вида
функций, определяемых пользователем:
- скалярные
- табличные
- встроенные
Если в приложении часто возникает необходимость подготавливать данные к выводу на экран определенным образом, то для этого удобно использовать представления. Представления, в частности, могут служить для заполнения данными форм, элементов управления и отчетов.
Среда VS.NET позволяет выполнять с выбранной базой данных все необходимые операции по созданию, обновлению и удалению представлений SQL Server непосредственно в панели Server Explorer оболочки. Работа проводится с узлом Views древовидного меню базы данных.
Для редактирования представления нужно вызвать контекстное меню для узла Views соответствующей базы данных и выполнить команду New View (для создания нового представления) или Design View (для редактирования уже существующего представления).
Ниже показан экран представления Current Product List узла Views базы данных Northwind
Как видно из приведенного снимка экрана, в окне View Designer имеются четыре области
- Область схемы.
- Область экранной таблицы
- Область оператора SQL
- Область результатов
Область схемы
В этой области отображается одна или несколько таблиц, используемых в представлении. В ней также могут находиться другие представления, определяемые пользователем функции, подзапросы (применяемые в конструкции FROM ) и связанные представления.
Каждая таблица отображается в виде отдельного окна со списком полей. Слева от каждого поля имеется флажок (или другой объект), позволяющий выбрать поля, которые нужно включить в представление. Справа могут также находиться другие пиктограммы, если в представлении предусматривается группировка и сортировка значений столбцов или используются какие-либо критерии отбора значений.
В этом окне можно предусмотреть соединение таблиц для получения возможности просматривать данные, собранные одновременно из нескольких таблиц.
Область экранной таблицы
В этой области можно указать, как должна быть организована обработка каждого столбца в представлении. Ниже перечислены предлагаемые характеристики экранной области
Область оператора SQL
В этой области отображается оператор SELECT языка SQL, создаваемый после заполнения двух предыдущих областей.
Область результатов
Эта область служит для отображения результатов, полученных с помощью созданного представления после выполнения команды Query/Run (выполнить запрос) из меню оболочки
В качестве упражнения создадим представление для учебной базы данных Northwind, которое должно показывать все заказы за конкретную дату, включая данные о владельцах каждого заказа. Предусмотрим сортировку по полю CompanyName, а затем по OrderID.
- Откройте панель Server Explorer и разверните иерархическое меню базы данных Northwind. Щелкните правой кнопкой мыши на пиктограмме узла Views и выберите команду New View в контекстном меню. После этого появится диалоговое окно Add Table.
- Удерживая нажатой клавишу Ctrl, выберите таблицы Customers и Orders. Щелкните на кнопке Add, затем на кнопке Close
В области схемы появятся окна двух таблиц с пиктограммой внутреннего соединения. Внутренним называется соединение, при котором значения в одной таблице сопоставляются со значениями в другой с использованием столбца соединения (в данном случае - CustomerID ). Отметьте, что жирным выделены столбцы первичного ключа.
После щелчка правой кнопкой мыши на пиктограмме соединения появляется контекстное меню, в котором можно установить другие типы соединения, от которых будут зависеть ожидаемые результаты:
- Select All Rows from Customers - выбрать все строки из таблицы Customers
- Select All Rows from Orders - выбрать все строки из таблицы Orders
- Отметьте флажок рядом со столбцом CompanyName таблицы Customers и рядом со столбцами OrderID, OrderDate таблицы Orders
Обратите внимание, что при включении или выключении названных флажков автоматически заполняются область таблицы и область оператора SQL.
- Введите выражение ='7/19/1996' в поле столбца Ctiteria, соответствующее столбцу OrderDate, в области таблицы (знак = добавится автоматически).
- Укажите значение Ascending (Возрастание) в полях столбца Sort Type, соответствующих столбцам CompanyName и OrderID, при этом поля столбца Sort Order заполняются автоматически. При этом справа от соответствующих полей в таблицах области схемы появятся пиктограммы направления сортировки.
- Выполните команду меню оболочки Query/Run и в области результатов появится две записи, выбранные из базы созданным представлением