Разработка базы данных "Микроконтроллеры", страница 9

Set Catalog.ActiveConnection = Nothing      // освобождение памяти, выделенной объекту

                                                                              // Catalog.ActiveConnection

End Sub

После запуска этого модуля мы получили таблицу «Заказчики» с полями «КодЗаказчика» (ключевое поле), «Название», «КонтактноеЛицо» и «Телефон». При необходимости, изменить параметры этой таблицы можно с помощью, ранее применявшегося, конструктора таблиц (рис.23.):

Рис.23.   Конструктор таблицы «Заказчики».

Схема данных:

Подпись: Рис.24.   Окно схемы данных базы данных «Микроконтроллеры»

            В окне схемы данных мы осуществили настройку связей между таблицами. Опция обеспечения целостности данных, включая каскадное удаление и обновление записей, установлена для всех связей, кроме связи Заказано.КодСемейства -> Микроконтроллеры.Код, поскольку удаление микроконтроллера из «Заказано» с целью отмены его покупки повлечет за собой удаление записи из «Микроконтроллеры». Отменяя заказ, мы не должны удалять сам микроконтроллер из базы данных, и поэтому устанавливать каскадное удаление записей нежелательно. Обновление (например, поступление новой модели микроконтроллера или оформление нового заказа) тоже не играет роли для уже совершенного заказа или существующего микроконтроллера. А целостность данных остается включенной для предупреждения попытки заказа несуществующей модели микроконтроллера.

            Создание запросов:

            На данном этапе нам необходимо создать ряд запросов для просмотра, изменения и анализа данных различными способами. При большом количестве данных запросы являются неотъемлемой частью физической структуры базы данных, поскольку позволяют сориентировать пользователя на поиск и выделение необходимой ему информации. В нашем случае создание запросов производилось с помощью конструктора запросов и встроенного редактора SQL-выражений.

1) Запрос на поиск микроконтроллеров с указанными параметрами, как и любой другой запрос с параметрами направлен на поиск и изменение информации, соответствующей значениям, вводимым пользователем в  диалоговом окне. В дальнейшем, в разделе «Разработка интерфейса пользователя» будет описан процесс создания формы для данного запроса (именно поэтому в условиях поиска запроса присутствуют ссылки на текстовые блоки «Главной формы поиска»), а пока остановимся на механизме работы данного запроса.

В структуре создаваемой базы данных этот запрос разделен на 4 запроса относительно разрядности микроконтроллеров, поскольку, как уже было замечено ранее, некоторые характеристики устройств отличаются в зависимости от разрядности. На примере «Основного запроса по 32-разрядным микроконтроллерам» рассмотрим механизм работы этих запросов:

«Основной запрос по 32-разрядным микроконтроллерам»

Исходный текст запроса на SQL:

SELECT [32-разрядные МК].Производитель, [32-разрядные МК].НазваниеУстройстваСемейство,

  [32-разрядные МК].Архитектура, [32-разрядные МК].ТактоваяЧастотаПроцессора,

  [32-разрядные МК].ИнтерфейсШины, [32-разрядные МК].ШиринаИнструкции,

  [32-разрядные МК].[Номинальные напряжения], [32-разрядные МК].НоминальнаяМощность,

  [32-разрядные МК].РежимыПониженного, [32-разрядные МК].DSPsupport, [32-разрядные МК].FPU,

  [32-разрядные МК].Кэш, [Комплекты памяти (32)].Объем_SRAM,

  [Комплекты памяти( 32)].Объем_Flash, [Комплекты памяти (32)].Объем_DPRAM,

  [Комплекты памяти (32)].Объем_ROM, [Комплекты памяти (32)].Объем_маск_ROM,

  [Комплекты памяти (32)].Объем_EEPROM, [Комплекты памяти (32)].Объем_RAM,

  [Комплекты памяти (32)].MTP, [Комплекты памяти (32)].XYmemory, [Комплекты памяти (32)].L2,   

  [Комплекты памяти (32)].Контроллер_памяти, [Комплекты памяти (32)].MMU,

  [Комплекты корпусов (32)].Тип_корпуса, [Комплекты корпусов (32)].Число_выводов,

  [Комплекты корпусов (32)].ДопСвед, [Комплекты таймеров (32)].Число_16бит,

  [Комплекты таймеров (32)].Число_32бит, [Комплекты таймеров (32)].ФункцТаймеры,

  [Комплекты АЦП/ЦАП (32)].КоличествоАЦП, [Комплекты АЦП/ЦАП (32)].РазрядностьАЦП, 

  [Комплекты АЦП/ЦАП (32)].ЧислоКаналовАЦП, [Комплекты АЦП/ЦАП (32)].КоличествоЦАП,

  [Комплекты АЦП/ЦАП (32)].РазрядностьЦАП, [Комплекты АЦП/ЦАП (32)].ДопСвед,

  [32-разрядные МК].Последователный_Параллельный, [32-разрядные МК].Прерывания,

  [32-  разрядные МК].ТемпературныйИнтервал, [32-разрядные МК].ДополнительныеВозможности,

  [32-разрядные МК].Стоимость, [Комплекты АЦП/ЦАП (32)].ЧислоКаналовЦАП

FROM [Комплекты таймеров (32)] INNER JOIN ([Комплекты памяти (32)] INNER JOIN ([Комплекты

  корпусов (32)] INNER JOIN ([Комплекты АЦП/ЦАП (32)] INNER JOIN [32-разрядные МК] ON

  [Комплекты АЦП/ЦАП (32)].АЦП_ЦАП_комплект = [32-разрядные МК].АЦП_ЦАП_комплект) ON 

  [Комплекты корпусов (32)].Корпус_комплект = [32-разрядные МК].Корпус_комплект) ON

  [Комплекты памяти (32)].Память_комплект = [32-разрядные МК].Память_комплект) ON

  [Комплекты  таймеров (32)].Таймеры_комплект = [32-разрядные МК].Таймеры_комплект

WHERE ((([32-разрядные МК].ТактоваяЧастотаПроцессора)>=([Forms]![Главная форма

                                      поиска]![MCfrequency])) AND (([32-разрядные МК].ШиринаИнструкции)<=([Forms]![Главная

  форма поиска]![MCInstrWith])) AND (([32-разрядные

                           МК].НоминальнаяМощность)<=[Forms]![Главная форма поиска]![MCPower]) AND (([Комплекты

  памяти (32)].Объем_SRAM)>=[Forms]![Главная форма поиска]![MCSRAM]) AND (([Комплекты

  памяти (32)].Объем_Flash)>=[Forms]![Главная форма поиска]![MCFlash]) AND (([Комплекты памяти

  (32)].Объем_ROM)>=[Forms]![Главная форма поиска]![MCROM]) AND (([Комплекты памяти

  (32)].Объем_маск_ROM)>=[Forms]![Главная форма поиска]![MCmaskedROM]) AND (([Комплекты

   памяти (32)].Объем_EEPROM)>=[Forms]![Главная форма поиска]![MCEEPROM]) AND

  (([Комплекты памяти (32)].Объем_RAM)>=[Forms]![Главная форма поиска]![MCRAM]) AND