Джеффри П. Мак-Манус Джеки Голдштейн Кевин Т. Прайс Обработка баз данных на Visual Basic®.NET 3-е издание Database Access with Visual Basic®.NET Third Edition Jeffrey P. McManus Jackie Goldstein Kevin T. Price Addison-Wesley Предисловие Для кого предназначена эта книга Структура книги Используемое программное обеспечение Об авторах О соавторе О рецензентах Благодарности ГЛАВА 1 Основы построения баз данных Что представляет собой база данных Что такое платформа базы данных Бизнес-ситуации Бизнес-ситуация 1.1: основные сведения о компании Jones Novelties Incorporated Таблицы и поля Проектирование базы данных Бизнес-ситуация 1.2: проектирование таблиц и отношений Манипулирование данными с помощью объектов Типы данных Схема базы данных Использование инструментов Visual Studio для создания базы данных Определение индексов и первичного ключа Создание схемы базы данных Использование программы Microsoft Visio для просмотра и изменения схемы базы данных Отношения Использование ссылочной целостности для поддержания непротиворечивости данных Проверка ограничений ссылочной целостности с помощью Server Explorer Каскадные обновления и каскадные удаления Нормализация Отношения типа один-к-одному Отношения типа один-ко-многим Отношения типа многие-ко-многим Создание пользовательского интерфейса на основе Windows Forms Подключение к базе данных и работа с записями Создание приложения для просмотра данных Программный способ связывания данных Элементы управления, взаимодействующие с данными Обновление записей в приложении просмотра данных Создание новых записей в форме, связанной с данными Удаление записей из связанной с данными формы Проверка введенных данных в форме, связанной с данными Проверка введенных данных на уровне процессора баз данных Резюме Вопросы и ответы ГЛАВА 2 Запросы и команды на языке SQL Что такое запрос Тестирование запросов с помощью компонента Server Explorer Отбор записей с помощью предложения SELECT Указание источника записей с помощью предложения FROM Формирование критериев с использованием предложения WHERE Операторы, используемые в предложении WHERE Оператор BETWEEN Оператор LIKE и символы шаблона Оператор IN Сортировка результатов с помощью предложения ORDER BY Сортировка в убывающей последовательности Сортировка по нескольким полям Отображение первых или последних записей диапазона с помощью предложения ТОР Создание запросов TOP PERCENT Объединение связанных таблиц в запросе Выражение объединения в SQL Использование конструктора представлений для создания объединений Использование внешних объединений Выполнение вычислений в запросах Определение псевдонимов с использованием предложения AS Запросы, которые группируют данные и подводят итоги Применение предложения HAVING для группирования данных в запросах Функция SUM Перечень итоговых функций Запросы на объединение Подзапросы Манипулирование данными с помощью SQL Запросы на обновление Запросы на удаление Запрос на добавление записей Запросы на основе команды SELECT INTO Использование языка определения данных Создание элементов базы данных с помощью предложения CREATE Добавление ограничений в таблицу Назначение внешнего ключа Создание индексов с помощью команды CREATE INDEX Удаление таблиц и индексов с помощью предложения DROP Модификация структуры таблицы с помощью предложения ALTER Резюме Вопросы и ответы ГЛАВА 3 Знакомство с SQL Server 2000 Установка и запуск Microsoft SQL Server Требования для инсталляции SQL Server 2000 Установка SQL Server 2000 Запуск и остановка SQL Server Управление способом запуска SQL Server Основы работы с SQL Server 2000 Запуск программы SQL Server Enterprise Manager Создание базы данных с помощью программы SQL Server Enterprise Manager Создание таблиц в базе данных SQL Server Использование программы SQLServer Enterprise Manager для создания таблиц базы данных SQL Server Создание идентификационного поля для уникальной идентификации записей Использование других методов для генерации первичных ключей Создание поля с первичным ключом Использование программы SQL Query Analyzer для доступа к базе данных Просмотр всех объектов базы данных с помощью хранимой процедуры sp_help Использование существующей базы данных Создание команд SQL в программе Query Analyzer Использование представлений для управления доступом к данным Создание представлений с помощью программы SQL Server Enterprise Manager Использование представлений в приложениях Создание представления с помощью программы SQL Query Analyzer Создание и запуск хранимых процедур Запуск хранимых процедур в окне программы SQL Query Analyzer Создание хранимой процедуры с помощью программы SQL Query Analyzer Отображение текста существующих представлений или хранимых процедур Создание триггеров Бизнес-ситуация 3.1: создание триггера для поиска созвучных слов Управление пользователями и средства безопасности с помощью программы SQL Server Enterprise Manager Создание и сопровождение учетных записей пользователей Управление ролями с помощью программы SQL Server Enterprise Manager Тестирование системы безопасности с помощью программы SQL Query Analyzer Применение ограничений безопасности в программе SQL Query Analyzer Определение подключенных пользователей Завершение процесса с помощью команды KILL Удаление объектов базы данных Бизнес-ситуация 3.2: SQL-сценарий для создания базы данных Резюме Вопросы и ответы ГЛАВА 4 Модель ADO.NET: провайдеры данных Обзор технологии ADO.NET Мотивация и философия Поддержка распределенных приложений и отсоединенной модели программирования Расширенная поддержка XML Интеграция с .NET Framework Внешний вид объектов ADO.NET ADO.NET И ADO 2.X Место ADO.NET в архитектуре .NET Framework Прикладные интерфейсы Провайдеры данных ADO.NET Провайдер данных SqICIient Провайдер данных Oledb Провайдер данных Odbc Основные объекты Объект Connection Объект Command Применение объекта Command с параметрами и хранимыми процедурами Выполнение команд Метод ExecuteNonQuery Метод ExecuteScalar Метод ExecuteReader Объект DataReader Использование объектов Connection и Command во время создания приложения Другие провайдеры данных Бизнес-ситуация 4.1: создание процедуры для архивирования старых заказов по годам Резюме Вопросы и ответы ГЛАВА 5 ADO.NET: объект DataSet Компоненты объекта DataSet Ввод данных в объект DataSet Определение схемы объекта DataTable Вставка данных в объект DataTable Обновление данных в объекте DataSet Состояние и версия записи Обработка ошибок ввода данных в записи и поля Доступ к данным с помощью объекта DataTable Поиск, фильтрация и сортировка записей Отношения между таблицами Ограничения Применение объекта DataSet Резюме Вопросы и ответы ГЛАВА 6 ADO.NET: объект DataAdapter Передача данных из источника данных в объект DataSet Обновление источника данных Указание команд обновления Использование объекта CommandBuilder Явное указание команд обновления Вставка бизнес-логики в команды обновления Использование компонента DataAdapter во время создания приложения Бизнес-ситуация 6.1: комбинация нескольких связанных таблиц Резюме Вопросы и ответы ГЛАВА 7 ADO.NET: дополнительные компоненты Обнаружение конфликтов при параллельном доступе к данным Отображения таблиц и полей Объект DataView Бизнес-ситуация 7.1: просмотр данных из разных источников Строго типизированные наборы данных Резюме Вопросы и ответы ГЛАВА 8 Работа с проектом базы данных среде Visual Studio .NET Создание проекта базы данных Ссылки на базы данных Сценарии Сценарии создания данных Сценарии изменения данных Запуск сценария Командные файлы Запросы Резюме Вопросы и ответы ГЛАВА 9 XML И .NET Обзор XML Семейство технологий XML XML и доступ к данным Классы XML на платформе .NET Применение модели Document Object Model Применение технологии XPATH Утилита SQLXML Инсталляция и конфигурирование утилиты SQLXML Результаты конфигурирования Применение XML, XSLT и SQLXML для создания отчета Резюме Вопросы и ответы ГЛАВА 10 ADO.NET и XML Основные принципы чтения и записи XML-данных Чтение XML-данных Запись XML-данных Формат DiffCram Бизнес-ситуация 10.1: подготовка XML-файлов для бизнес-партнеров Создание объекта XmlReader с помощью объекта Command Объект XmlDataDocument Резюме Вопросы и ответы ГЛАВА 11 Web-формы: приложения на основе ASP.NET для работы с базами данных Обзор технологии ASP.NET HTML-элементы управления и серверные элементы управления Дополнительные преимущества технологии ASP.NET Доступ к базе данных с помощью ASP.NET Включение учетной записи ASP.NET в состав учетных записей SQL Server Применение параметра TRUSTED_CONNECTION Применение элемента управления DataGrid Повышение производительности приложений с помощью хранимых процедур Резюме Вопросы и ответы ГЛАВА 12 Web-службы и технологии промежуточного уровня Применение промежуточного уровня для презентационной логики Обработка данных на промежуточном уровне Создание повторно используемых компонентов промежуточного уровня Использование компонента в другом приложении Доступ к объектам с помощью Web-служб Публикация существующего компонента с помощью Web-службы Доступ к Web-службе программными средствами Заключительные замечания Резюме Вопросы и ответы
Отношения типа один-к-одному Предположим, в вашей базе данных есть таблицы, в которых хранится информация о сотрудниках и видах работ. Если каждому служащему назначается один вид работы, то отношение между сотрудниками и видами работ можно определить типом один-к-одному, поскольку для каждого сотрудника в базе данных существует только один вид работы. Это простейший тип отношений как для понимания, так и для реализации, поскольку в таких отношениях таблица обычно занимает место поля в другой таблице, причем поля, участвующие в отношении, легко идентифицировать.
Однако это не самый распространенный тип отношений в функционирующих приложениях ведения баз данных. Тому есть две причины.
Почти всегда можно выразить отношение типа один-к-одному без использования двух таблиц. При этом быстродействие только повысится, хотя будет утрачена гибкость, предоставляемая хранением связанных данных в отдельной таблице. В предыдущем примере вместо создания отдельной таблицы с данными о видах работ можно поместить все поля, связанные с работой, в таблицу, предназначенную для хранения данных о сотрудниках.
Выражение отношения один-ко-многим почти такое же простое для понимания (но гораздо более гибкое), как выражение отношения один-к-одному, поэтому сразу же переходим к следующему разделу.