При нажатии на Сумма в примере ArbitraryMethod из Лекция 7, VS 2013 выдается ошибка: Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "lblResult" не из того потока, в котором он был создан. Затем: Необработанное исключение типа "System.InvalidOperationException" в mscorlib.dll Дополнительные сведения: Для каждой асинхронной операции метод EndInvoke может вызываться только один раз. |
Работа с данными
Что такое реляционная база данных?
Базы данных — это совокупность сведений (об объектах, процессах, событиях или явлениях), относящихся к определенной теме или задаче, которая организована таким образом, чтобы обеспечить удобное представление этой совокупности, как в целом, так и любой ее части.
Реляционная база данных представляет собой множество взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного типа. Каждая строка таблицы содержит данные об одном объекте (например, товаре, фирме, клиенте), а столбцы таблицы содержат различные характеристики этих объектов — атрибуты (например, наименования и цены товаров, адреса и телефоны фирм или клиентов). Строки таблицы называются записями; все записи имеют одинаковую структуру — они состоят из полей, в которых хранятся атрибуты объекта. Каждое поле записи содержит одну характеристику объекта и строго определенный тип данных (например, текстовая строка, число, дата). Все записи имеют одни и те же поля, только в них содержатся разные значения атрибутов.
Для работы с данными используются системы управления базами данных (СУБД). Основные функции СУБД — это определение данных (описание структуры баз данных), обработка данных и управление данными.
Любая СУБД позволяет выполнять следующие операции с данными:
- добавлять в таблицу одну или несколько записей;
- удалять из таблицы одну или несколько записей;
- обновлять значения некоторых полей в одной или нескольких записях;
- находить одну или несколько записей, удовлетворяющих заданному условию.
Для выполнения этих операций используется механизм запросов. Результатом выполнения запросов является либо отобранное по определенным критериям множество записей, либо изменения в таблицах. Запросы к базе формируются на специально созданном для этого языке, который так и называется — язык структурированных запросов (SQL — Structured Query Language).
Важнейшей функцией СУБД является управление данными. Под управлением данными обычно понимают их защиту от несанкционированного доступа, поддержку многопользовательского режима работы и обеспечение целостности и согласованности данных.
Рассмотрим более подробно концепцию реляционных баз данных. Предположим, что вам нужно создать таблицу, содержащую информацию о товарах и поставщиках. Каждая строка этой таблицы (называемая также записью) будет соответствовать определенному порядку: каждый столбец (называемый также полем) будет содержать значение для каждого типа данных – наименования, цены, названия поставщика, представляемого в каждой строке. Таблица будет выглядеть примерно так (рис. 4.1):
Это и есть основа реляционной базы данных. Конечно же, реальная таблица будет содержать гораздо большее число записей и столбцов. Однако реляционные базы почти никогда не состоят из одной таблицы. Создав несколько таблиц, связанных между собой, мы сможем выполнить более сложные и мощные операции с данными. Но зачем связывать между собой таблицы? Один поставщик может предлагать большое количество различных товаров. В результате в нашей таблице будет большое количество повторяющихся однотипных записей. Если вынесем информацию о поставщике в отдельную таблицу, то в результате получим две таблицы: в одной будет информация о товаре, в другой — информация о поставщике. Связать две получившиеся таблицы мы сможем, вводя уникальный код поставщика (ID), который будет присутствовать в обеих таблицах. Схематическая связь таблиц, отображаемая в СУБД Microsoft Access ( входящая в комплект Microsoft Office) (рис. 4.2):
Таблицы связаны по полю "Код поставщика", причем в таблице "Поставщики" на связи указана единица, а в таблице "Товары" — знак бесконечности. Эти символы и подтверждают нашу логику: один поставщик может предоставлять большое число товаров, а подобное отношение таблиц и называется "один-ко-многим".
Сами таблицы будут выглядеть так (рис. 4.3):
Нажимая на знак (+), мы видим таблицу с товарами. Пользоваться связанными таблицами стало несравненно удобней, но самое главное — мы добились отсутствия повторяющихся записей. На практике, при оперировании с большими таблицами это означает экономию места на жестком диске и значительное увеличение скорости. Последний параметр является особенно важным.
Введенный столбец "Код поставщика" содержит неповторяющиеся значения для различных поставщиков. Для таблицы "Поставщики" он является первичным ключом. Первичный ключ — это столбец или комбинация столбцов, которые уникально идентифицируют запись в таблице. Аналогично, для таблицы "Товары" первичным ключом будет столбец "Код продукта".
На прилагаемом диске находится документ Microsoft Access RBProduct (Code\Glava4\ RBProduct.mdb), который содержит рассматриваемые выше примеры.