Лекции по Access2000

Целью данных лекций является научить пользователей баз данных Microsoft Access пользоваться не только мастерами базы данных, но и программными средствами. Это даст Вам возможность создавать полноценные коммерческие программы и лучше разбираться в возможностях базы данных.
В качестве примера обучению программированию, используется коммерческая программа «Калькулятор», которая применена автором в сборниках «Лидер Access» и «Ключи от Дома».

Назначение курса лекций



Уязвимость удаленных соединений, РВХ, Voicemail

Обычно организации меньше всего внимания уделяют старым забытым телефонным линиям. Эти провода, опоясавшие весь мир, сегодня преданы забвению. В этой главе будет показано, как старенький модем с пропускной способностью 9600 Кбит в секунду может поставить на колени сетевого Голиафа с мошной системной защитой.
Может показаться, что авторы решили начать главу, посвященную сетевым атакам, с устаревшей информации о хакинге аналоговых удаленных соединений. Несмотря на повсеместное распространение Internet, обычные телефонные сети PSTN (Public Switched Telephone Network) сегодня достаточно часто используются для связи с домашними и даже служебными компьютерами. Поэтому сенсационные истории о взломе узлов Internet меркнут перед более прозаическими рассказами о вторжениях через удаленные соединения, поскольку последние являются более разрушительными и проще выполнимыми.
На самом деле для больших компаний гораздо большую опасность представляют плохо инвентаризованные модемные линии, чем защищенные брандмауэрами шлюзы Internet. Упомянутый выше эксперт в области безопасности компании AT&T Билл Чесвик (Bill Cheswick) охарактеризовал брандмауэр как панцирь черепахи. На самом деле, зачем атаковать неприступный брандмауэр, когда можно пробраться непосредственно к "телу" целевой системы через плохо защищенный сервер удаленного доступа? Пожалуй, защита удаленных соединений — наиболее важный аспект построения линии круговой обороны.
Хакинг удаленных соединений выполняется по классической схеме: сначала выполняется предварительный сбор информации, затем — сканирование, инвентаризация и, наконец, атака. В большинстве случаев этот процесс можно автоматизировать с помощью традиционных хакерских средств, получивших название сканеров телефонных номеров (demon dialer) или программ автопрозвона (wardialer). По существу, эти средства программно устанавливают удаленное соединение с большим количеством телефонных номеров, регистрируют те из них, по которым устанавливаются модемные соединения, пытаются идентифицировать систему на другом конце телефонной линии и по возможности зарегистрироваться в системе, подобрав имя пользователя и пароль. Если для этого требуется специальное программное обеспечение или конкретные знания о системе, установка соединения может выполняться вручную.
Выбор сканера телефонных номеров — камень преткновения как для злоумышленников, так и для легальных специалистов по поиску незащищенных удаленных соединений. В этой главе мы рассмотрим две наиболее популярные программы такого типа, которые можно бесплатно загрузить из Internet (ToneLoc и THC-Scan), а также коммерческий продукт PhoneSweep от компании Sandstorm Enterprises.

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

Сетевые устройства
Компьютерная сеть — это кровеносная система любой компании. Сотни тысяч километров медных и оптоволоконных кабелей опоясывают стены корпоративной Америки, действуя подобно сосудам, доставляющим обогащенную кислородом кровь к мозгу. Однако во всем есть и другая сторона: типичную корпоративную локальную или глобальную сеть (LAN или WAN соответственно) трудно назвать безопасной.

Брандмауэры
С тех пор как Чесвик (Cheswick) и Белоувин (Bellovin) написали свой фундаментальный труд о построении брандмауэров и борьбе с коварным хакером Берфердом (Berferd), желание подключить Web-сервер (или любой другой компьютер) к Internet без развертывания брандмауэра считается самоубийством. Примерно то же можно сказать в ситуации, когда функции брандмауэра возлагаются на переносной компьютер сетевого администратора.

Атаки DoS
Взрыв и медленно рассеивающееся облако. Нет, сейчас речь пойдет не о детском безалкогольном напитке. Мы познакомимся с различными средствами, которыми пользуются взломщики. В последние годы их применение приводит к опустошительному хаосу в Internet. Ежегодно атаки DoS (Denial of Service — отказ в обслуживании) стоят различным компаниям миллионы долларов и таят в себе серьезную угрозу для любой системы или сети.

Изъяны средств удаленного управления
Неотъемлемой чертой глобальной единой экономики является то, что и управлять ею нужно глобально. Вспомогательный персонал не всегда может оказаться на месте, чтобы подойти к закапризничавшему компьютеру и устранить проблему. Какой же выход? Программное обеспечение удаленного управления. Такие программы, как pcAnywhere, ControlIT, ReachOut и Timbuktu, стали настоящей находкой для администраторов, позволяя им виртуально перемешаться на компьютеры пользователей и устранять проблемы или помогать выполнять стоящие перед ними задачи.

Расширенные методы
В данной главе описываются несколько категорий таких средств, каждая в отдельном разделе: "Захват сеанса", "Потайные ходы", "Троянские кони" (троянский конь (Trojan horse) — это такая программа, которая под прикрытием некоторых полезных действий на самом деле скрытно выполняет совсем другие операции), "Разрушение системного окружения..." и "Социальная инженерия".

Уязвимость в WEB
Тысячи компаний осознали, что всемирная паутина Web является мощным средством распространения информации, расширения торговли, улучшения качества обслуживания и поддержки постоянного контакта с заказчиками и клиентами. И хотя большинство организаций для защиты своих интересов и вложений предусмотрительно использует фильтрующие маршрутизаторы, брандмауэры и системы выявления вторжений, когда речь заходит об изъянах Web, многие из этих мер предосторожности могут оказаться бесполезными.

Атаки на пользователей INTERNET
До сих пор много говорилось об общепринятых методах взлома систем, принадлежащих различным компаниям и управляемых опытными администраторами. Ведь считается, что именно там находятся основные ценности, не так ли? Не может же зловредный хакер пытаться найти что-нибудь интересное на домашнем компьютере какой-нибудь старушки.

Лекции по Microsoft Access 2000

Целью данных лекций является научить пользователей баз данных Microsoft Access пользоваться не только мастерами базы данных, но и программными средствами. Это даст Вам возможность создавать полноценные коммерческие программы и лучше разбираться в возможностях базы данных.
В качестве примера обучению программированию, используется коммерческая программа «Калькулятор», которая применена автором в сборниках «Лидер Access» и «Ключи от Дома».
Особая благодарность отечественной литературе по Access, где очень туманно написано о программировании баз данных, в основном она и дала идею раскрыть некоторые принципы разработки коммерческих программ.

Назначение курса лекций
При разработке лекций использовались знания, полученные автором при разработке различных баз данных Access, Paradox, dBase в области авиационной и легкой промышленности в Москве и Гамбурге

Глобальные переменные
Для начала определим название нашей программы. Пусть это будет приложение Microsoft Access 2000 «Новый калькулятор.mdb». Разработку его начнем с описания переменных, констант, которые потребуются при создании нашей базы данных.

Создание базы данных
И так после подготовительных действий, Вы можете приступить к созданию базы данных в файловой системе. Саму базу данных «Новый калькулятор.mdb» (переменная strMDB) создим программным методом, используя встроенный язык программирования Visual Basic Access, аналогично способу, указанному слева с помощью мастера Access.

Создание таблицы
Теперь давайте попробуем создать ее программным способом. Иногда этот способ становится более предпочтительным, чем стандартный. В качестве переменной создаваемой таблицы будем использовать имя StrTable = «Калькулятор»

Создание запросов
В этом примере мы создадим 2 запроса SQL и сохраним их в базе данных. Первый запрос будет создан для выборки некоторых значений из таблицы, а второй для удаления значений из списка калькулятора.

Создание модуля
Когда Вы разрабатываете базу данных, Вам потребуются общие программы, которые можно использовать при работе с формами или другими элементами базы данных. Давайте напишем небольшую программу, которая создает модуль «Настройка» путем импорта готовых Basic-программ.

Создание формы
Создание форм в базе данных Access сложный и трудный этап программирования. По их внешнему виду и определяют квалификацию программиста как специалиста. Давайте и мы напишем общую функцию, которая будет сама создавать нам форму и изменит ее настройки так, чтобы она выглядела красиво и с минимальным количеством объектов управления. Имя формы будет «Мой калькулятор» и запишем ее в переменную strForm.

Создание отчета
После создания формы, попробуем создать «Отчет о расчетах», путем импорта его из базы данных «Старый калькулятор». Этот способ также часто применяется при работе с базами данных. В качестве переменной с именем отчета введем параметр strReport.

Создание макроса
При открытии любой базы данных автоматически запускается макрос AutoExec, вспомните командный файл DOS «autoexec.bat». В этот макрос для примера можно вставить программы Access, например, команду увеличения приложения до максимального размера и команду открытия формы «Мой калькулятор».

Создание справки
Если Вы решили оставить общую справку по Access, которая вызывается нажатием F1, то можно написать программу, отображающую Ваш собственный файл: «Калькулятор.chm» при нажатии кнопки меню. Команда Shell выглядит так: hh.exe -mapid 103 Калькулятор.chm

Создание панели меню
Большинство коммерческих программ имеет в верхней части приложения свою панель элементов, на которой есть разные кнопки. Давайте напишем программу, которая создает панель меню без кнопок.

Введение в реляционные базы данных

В самом широком смысле информационная система представляет собой программный комплекс, функции которого состоят в поддержке надежного хранения информации в памяти компьютера, выполнении специфических для данного приложения преобразований информации и/или вычислений, предоставлении пользователям удобного и легко осваиваемого интерфейса. Обычно объемы данных, с которыми приходится иметь дело таким системам, достаточно велики, а сами данные обладают достаточно сложной структурой. Классическими примерами информационных систем являются банковские системы, системы резервирования авиационных или железнодорожных билетов, мест в гостиницах и т. д.
О надежном и долговременном хранении информации можно говорить только при наличии запоминающих устройств, сохраняющих информацию после выключения электропитания. Оперативная (основная) память этим свойством обычно не обладает. В первые десятилетия развития вычислительной техники использовались два вида устройств внешней памяти: магнитные ленты и магнитные барабаны. При этом емкость магнитных лент была достаточно велика, но по своей природе они обеспечивали последовательный доступ к данным. Емкость магнитной ленты пропорциональна ее длине. Чтобы получить доступ к требуемой порции данных, нужно в среднем перемотать половину ее длины. Но чисто механическую операцию перемотки нельзя выполнить очень быстро. Поэтому быстрый произвольный доступ к данным на магнитной ленте, очевидно, невозможен.

Устройства внешней памяти
В самом широком смысле информационная система представляет собой программный комплекс, функции которого состоят в поддержке надежного хранения информации в памяти компьютера, выполнении специфических для данного приложения преобразований информации и/или вычислений, предоставлении пользователям удобного и легко осваиваемого интерфейса. Обычно объемы данных, с которыми приходится иметь дело таким системам, достаточно велики, а сами данные обладают достаточно сложной структурой.

Основные понятия реляционных баз данных
Выделим следующие основные понятия реляционных баз данных: тип данных, домен, атрибут, кортеж, отношение, первичный ключ. Для начала покажем смысл этих понятий на примере отношения СЛУЖАЩИЕ, содержащего информацию о служащих некоторого предприятия

Обзор реляционной алгебры Кодда
Как мы отмечали в предыдущей лекции, в манипуляционной составляющей реляционной модели данных определяются два базовых механизма манипулирования реляционными данными – основанная на теории множеств реляционная алгебра и базирующееся на математической логике (точнее, на исчислении предикатов первого порядка) реляционное исчисление. В свою очередь, обычно выделяются два вида реляционного исчисления – исчисление кортежей и исчисление доменов.

Базовые операции Алгебры A
Обсуждавшаяся в предыдущей лекции алгебра Кодда в большей степени базируется на теории множеств. Базовыми операциями являются переименование атрибутов, объединение, пересечение, взятие разности, декартово произведение, проекция и ограничение. Операция соединения общего вида, хотя и включается в алгебру, является вторичной и явно представляется через другие операции. Фундаментальная же в реляционном подходе операция естественного соединения выражается через соединение общего вида и в алгебру не включается. В терминах алгебры Кодда проще всего определяются алгебраические черты языка SQL, в частности общая семантика оператора SELECT.

Исчисление кортежей
Предположим, что мы работаем с базой данных, которая состоит из отношений СЛУЖАЩИЕ {СЛУ_НОМ, СЛУ_ИМЯ, СЛУ_ЗАРП, ПРО_НОМ} и ПРОЕКТЫ {ПРО_НОМ, ПРОЕКТ_РУК, ПРО_ЗАРП} (в отношении ПРОЕКТЫ атрибут ПРОЕКТ_РУК содержит имена служащих, являющихся руководителями проектов, а атрибут ПРО_ЗАРП – среднее значение зарплаты, получаемой участниками проекта), и хотим узнать имена и номера служащих, которые являются руководителями проектов со средней заработной платой, превышающей 18000 руб.

Функциональные зависимости
Несмотря на свою практическую ориентированность, теория реляционных баз данных является самостоятельным научным направлением, в котором работали (и продолжают работать) многие известные исследователи, чьи имена будут встречаться в наших лекциях. Мы не планировали в данном курсе подробно описывать основные результаты в области теории реляционных баз данных. Наша цель состоит в том, чтобы обеспечить только определения и утверждения, необходимые для общего понимания процесса проектирования реляционных баз данных на основе нормализации.

Минимальные функциональные зависимости и вторая нормальная форма
Каким образом отобразить объекты предметной области в абстрактные объекты модели данных, чтобы это отображение не противоречило семантике предметной области и было, по возможности, лучшим (эффективным, удобным и т. д.)? Часто эту проблему называют проблемой логического проектирования баз данных.Как обеспечить эффективность выполнения запросов к базе данных, т. е. каким образом, имея в виду особенности конкретной СУБД, расположить данные во внешней памяти, создания каких дополнительных структур (например, индексов) потребовать и т. д.? Эту проблему обычно называют проблемой физического проектирования баз данных.

Многозначные зависимости и четвертая нормальная форма
Функциональные зависимости, о которых мы говорили в предыдущих двух лекциях, и нормальные формы, основанные на учете "аномальных" функциональных зависимостей, являются естественными и легко понимаемыми, поскольку в их основе лежит понятие функционального отображения, интуитивно понятного даже людям, далеким от математики. Конечно, было бы замечательно, если бы ликвидация в ходе нормализации аномальных функциональных зависимостей гарантировала отсутствие аномалий обновления отношений.

Ограниченность реляционной модели при проектировании баз данных
Широкое распространение реляционных СУБД и их использование в самых разнообразных приложениях показывает, что реляционная модель данных достаточна для моделирования разнообразных предметных областей. Однако проектирование реляционной базы данных в терминах отношений на основе кратко рассмотренного нами в двух предыдущих лекциях механизма нормализации часто представляет собой очень сложный и неудобный для проектировщика процесс.

Основные понятия диаграмм классов UML
Языку объектно-ориентированного моделирования UML (Unified Modeling Language) посвящено великое множество книг, многие из которых переведены на русский язык (а некоторые и написаны российскими авторами). Язык UML разработан и развивается консорциумом OMG (Object Management Group) и имеет много общего с объектными моделями, на которых основана технология распределенных объектных систем CORBA, и объектной моделью ODMG (Object Data Management Group).