- •Факультет Кибернетики
 - •Москва 2011 оглавление
 - •1. Характеристика субд HyTech Типовые функции современной субд
 - •Организация данных в таблицах HyTech
 - •Структура файлов, реализующих таблицы субд HyTech
 - •Организация индексов в субд HyTech
 - •Журнальные файлы в субд HyTech
 - •Словарь данных
 - •1.2 Управление данными в оперативной памяти Управление данными в оп
 - •Управление буферизацией данных при выполнении запросов на чтение
 - •Управление буферизацией данных при выполнении запросов на запись
 - •Управление транзакциями
 - •Атомарность транзакции в субд HyTech
 - •Непротиворечивость информации в субд HyTech
 - •Изолированность транзакций
 - •Обеспечение отказоустойчивости субд
 - •Механизмы защиты от мягких сбоев
 - •Механизмы защиты от жестких сбоев
 - •1.5 Поддержка sql и процедурных языков для работы с данными Стандарт sql-89
 - •Типы данных в sql HyTech
 - •Индексы в субд HyTech
 - •Операторы dml (select, insert, update, delete) в субд HyTech
 - •Ограничения целостности в субд HyTech
 - •Оптимизация запросов в субд HyTech
 - •Прочие операторы и свойства
 - •Свойства процедурного расширения субд HyTech
 - •1.6 Реализация средств сетевого взаимодействия и поддержки распределенных архитектур Средства сетевого взаимодействия и поддержки распределенных архитектур
 - •Поддержка сетевых протоколов
 - •Работа с другими источниками данных
 - •Распределенные вычисления
 - •1.7 Разграничение доступа к данным Средства разграничения доступа к данным
 - •Базовое управление доступом
 - •Аутентификация
 - •Управление доступом к данным
 - •Временные таблицы
 - •Индексы
 - •Курсоры
 - •Отслеживание изменений данных
 - •Механизм снимков
 - •Отключение механизма снимков
 - •Механизм транзакций
 - •Транзакции в HyTech
 - •Профиль, роль
 - •Генератор
 - •Кодификатор
 - •Хранимая процедура
 - •Триггер
 - •Внешний источник данных
 - •Встроенные представления
 - •Встроенные переменные
 - •2.2 Архитектура субд HyTech Структура sql - сервера
 - •Особенности организации таблиц в субд HyTech
 - •Недостатки организации таблиц в субд HyTech
 - •Поиск в таблицах субд HyTech
 - •Идентификация записей в таблицах
 - •Использование инвертированных списков в субд HyTech
 - •Организация хранения данных на диске
 - •Структура ядра субд
 - •Монитор таблиц
 - •Монитор транзакций
 - •Решение задачи перевода денег
 - •Система поддержки транзакций в субд HyTech
 - •Монитор замков
 - •Реализация системы захватов
 - •Оптимизация запросов
 - •3. Sql диалект субд HyTech
 - •3.1 Тестовая схема бд Описание тестовой схемы бд
 - •Создание тестовой схемы
 - •Листинги тестовой схемы
 - •3.2 Основные sql операторы манипулирования данными
 - •3.2.1 Оператор отбора информации из таблицы select Оператор select
 - •Особенности работы с оператором select
 - •Примеры работы с оператором select
 - •Объединение выборок
 - •Конструкция for update
 - •Внешнее соединение
 - •Работа с кодификаторами
 - •3.2.2 Оператор вывода результатов на экран browse resullts Оператор вывода результатов на экран
 - •3.2.3 Оператор копирования записей между таблицами insert select Оператор insert select
 - •Примеры работы с оператором
 - •3.2.4 Оператор добавления записи в таблицу insert values Оператор insert values
 - •Пример работы с оператором insert values
 - •3.2.5 Оператор модификации записей в таблице update Оператор update
 - •Пример работы с оператором update
 - •3.2.6 Оператор удаления строк из таблицы delete Оператор delete
 - •3.2.7 Оператор выполнения запроса, заданного строкой execute immediate Оператор execute immediate
 - •3.2.8 Оператор выгрузки результатов в таблицу results table Оператор results table
 - •3.3 Операторы управления транзакциями и снимками
 - •3.3.1 Операторы работы со снимками Операторы работы со снимками
 - •3.3.2 Операторы работы с транзакциями Механизм транзакций и механизм снимков
 - •Оператор начала транзакции begin work
 - •Операторы завершения транзакции
 - •Примеры работы с операторами завершения транзакции
 - •Работа с транзакциями в многопользовательском режиме
 - •3.3.3 Блокировки Оператор блокирования таблицы lock
 - •Оператор освобождения строк unlock
 - •Примеры работы с блокировками
 - •3.4 Операторы работы с таблицами и индексами
 - •3.4.1 Оператор создания таблицы create table Оператор create table
 - •Атрибуты и ограничения столбцов
 - •Временные таблицы
 - •Другие функции для создания таблиц - функция dsexec
 - •Другие функции для создания таблиц - функция copytable
 - •Другие функции для создания таблиц - функция htCreateTable
 - •Другие функции для создания таблиц - функция imptitle
 - •3.4.2 Оператор удаления таблицы drop table Оператор drop table
 - •3.4.5 Оператор переноса переменной части таблицы в постоянную pack table Оператор pack table
 - •3.4.6 Оператор удаления переменной части таблицы drop diff Оператор drop diff
 - •Использование группы атрибутов в качестве индекса
 - •Добавление подстроки в качестве индекса таблицы
 - •3.4.9 Оператор удаления индекса drop index Оператор drop index
 - •Удаление группы или подстроки
 - •3.5 Операторы для работы с внешними источниками данных Создание внешнего источника данных
 - •Выполнение запросов к внешнему источнику данных
 - •Пакетное выполнение запросов к внешнему источнику данных
 - •Удаление внешнего источника данных
 - •3.6 Операторы для работы с генераторами Операторы create generator, set generator
 - •Операторы gen_id, drop generator
 - •Использование генератора
 - •4. Процедурные расширения sql диалекта субд HyTech
 - •4.1 Лексические элементы языка Лексические элементы - зарезервированные слова
 - •Зарезервированные слова
 - •Лексические элементы - константы Константы
 - •Константы целого типа
 - •Константы вещественного типа
 - •Строковые константы
 - •4.2 Переменные Переменные процедурного языка HyTech
 - •4.3 Типы данных Типы данных для хранения целочисленных и действительных значений Типы данных float, double, currency
 - •Типы данных byte, int, word, number, long, dword
 - •Типы данных процедурного языка HyTech.
 - •Типы данных для хранения символьных значений, дат и массивов Тип данных date
 - •Тип данных char
 - •Тип данных array
 - •4.4 Линейные операторы Выражения - арифметические операции Выражения
 - •Арифметические операции
 - •Выражения - операции отношения и присваивания Операции отношения
 - •Операция присваивания
 - •Выражения - логические операции
 - •Составной оператор, пустой оператор Составной оператор
 - •Пустой оператор
 - •Оператор вывода, оператор завершения работы программы Оператор вывода
 - •Оператор завершения работы программы
 - •Операторы ветвления Оператор ветвления
 - •Оператор цикла с предусловием в формате while
 - •Оператор цикла с предусловием в формате for
 - •Оператор цикла с постусловием
 - •Переход к выполнению очередной итерации цикла
 - •4.5 Хранимые процедуры и функции Хранимые процедуры
 - •Функции
 - •4.6 Триггеры Создание триггера
 - •Удаление триггера
 - •4.7 Совместное использование sql запросов и процедурных расширений Совместное использование sql-запросов и процедурных расширений
 - •Передача переменных в качестве параметра в sql-запрос
 - •Сохранение результата запроса в переменной
 - •Использование результата запроса Использование результата, сохраненного в переменной, в других запросах
 - •Чтение результата запроса
 - •Работа с триггерами Использование в триггерах переменных old и new
 - •Проверка ошибок триггера
 - •4.8 Встроенные sql функции Функции преобразования
 - •Функции преобразования
 - •Строковые функции
 - •Операции с таблицами, выполнение запросов
 - •Функции работы с датами и временем
 - •Импорт-экспорт
 - •Функции для получения информации о таблицах
 - •Числовые функции
 - •Функции обработки ошибок
 - •Интерфейсные и битовые функции Интерфейсные функции
 - •Битовые функции
 - •Функции отладки Функции отладки
 - •Разные функции
 - •Функции работы с кодификаторами
 - •4.9 Практические приемы и оптимизация sql запросов Навигационное соединение таблиц
 - •Использование кодификаторов вместо соединений
 - •Уточнение результатов соединения
 - •Использование конструкции in вместо соединения
 - •Использование группы для связки таблиц по нескольким ключам
 - •Получение декартового произведения
 - •Использование временных таблиц для промежуточных вычислений
 - •Оптимизация группировки и сортировки
 - •Различные приемы оптимизации Перенос условий из having в where
 - •Уменьшение размера поля, используемого для поиска по маске
 - •Перенос изменений в постоянную часть
 - •Использование пакетных sql-операций вместо одиночных
 - •4.11 Диагностика результатов выполнения sql запросов Работа с функциями обработки ошибок - функции lasthterr, lastsqlerr
 - •Функция lasthterr – Получить код последней ошибки HyTech
 - •Функция lastsqlerr – Получить код последней ошибки Sql
 - •Работа с функциями обработки ошибок - функции sqlermsg, htiomsg Функция sqlermsg – Получить текст сообщения об ошибке sql
 - •Функция htiomsg — Получить сообщение об ошибке ввода/вывода
 - •Работа с функциями обработки ошибок - функции htabort, htSetError Функция htabort – Завершает (или нет) выполнение sql-скрипта при ошибке в HyTech
 - •Функция htSetError – Установить пользовательский код ошибки
 - •Коды ошибок sql
 - •5. Администрирование субд HyTech Типовые задачи администрирования
 - •Инсталляция субд HyTech в Linux
 - •Настройка параметров работы сервера
 - •Файл инициализации - раздел «Параметры»
 - •Файл инициализации - раздел «sql процесс»
 - •Файл инициализации - другие разделы файла инициализации
 - •Пример файлов инициализации
 - •Типовые рекомендации по настройке параметров сервера в файле инициализации
 - •5.2 Запуск/останов работы сервера Управление сервером
 - •Запуск/останов HyTech sql сервера
 - •Настройка стартового файла
 - •Мониторинг действий сервера с использованием лог-файла
 - •Конфигурирование сервера по результатам мониторинга
 - •5.2.1 Запуск/останов работы сервера в режиме сервиса Регистрация и задание параметров сервиса
 - •Настройка параметров сервиса в конфигурационном файле
 - •Запуск, останов, удаление регистрации сервиса
 - •5.2.2 Запуск/останов работы сервера в режиме консольного приложения Администрирование запуска/останова работы сервера в режиме консольного приложения
 - •Запуск/останов/пауза сервера
 - •Запуск/останов сервера по расписанию
 - •Мониторинг действий сервера - мониторинг из окна приложения сервера
 - •Мониторинг и управление процессами
 - •5.3 Резервное копирование (архивирование) и восстановление бд Резервное копирование и восстановление бд
 - •Архивирование базы данных в автономном режиме
 - •Архивирование базы данных в оперативном режиме
 - •Архивирование таблиц пользователей
 - •Архивирование системных таблиц
 - •Архивирование файла инициализации
 - •Планирование стратегии архивирования базы данных
 - •Восстановление базы данных, архивированной в автономном режиме
 - •Восстановление базы данных, архивированной в оперативном режиме
 - •Восстановление базы данных, архивированной в оперативном режиме - восстановление таблиц
 - •Восстановление базы данных, архивированной в оперативном режиме - восстановление системных таблиц
 - •5.4 Проверка и исправление таблиц данных и системных таблиц Проверка и исправление таблиц
 - •Проверка таблиц
 - •Исправление поврежденного журнала
 - •Исправление повреждения постоянной части или ассоциатора
 - •Проверка целостности системных таблиц и восстановление системных таблиц сервера
 - •Примеры пакетной проверки таблиц
 - •Конфигурационный файл с именем htctlg.Ini
 - •5.5 Конфигурирование субд для использования прокси - сервера Назначение прокси - сервера
 - •Установка, запуск и останов прокси-сервера
 - •Конфигурирование прокси-сервера
 - •5.6 Индексирование и упаковка таблиц, снятие провисшего захвата Индексирование таблицы
 - •Упаковка таблицы (перенос журнала в постоянную часть)
 - •Снятие провисшего захвата с записи таблицы
 - •5.7 Управление безопасностью Управление безопасностью
 - •Создание пользователя
 - •Изменение/удаление пользователя
 - •Аутентификация пользователя при входе в систему
 - •Создание профиля безопасности
 - •Изменение/удаление профиля безопасности
 - •Создание/удаление роли
 - •Назначение права пользователю или роли
 - •Отмена права пользователю или роли
 - •Назначение/отзыв роли пользователю или другой роли
 - •Установка/изменение пароля на чтение/запись данных в таблицу
 - •Шифрование данных в таблицах
 - •Аудит действий пользователя
 - •6. Php как инструментальное средство создания web приложений Архитектура web-приложений с использованием php - клиент, http сервер
 - •Архитектура web-приложений с использованием php - интерпретатор php, cубд HyTech
 - •Установка и настройка сервера Apache и модуля php
 - •Установка для Windows
 - •Установка для gnu/Linux
 - •Типы данных и выражения
 - •Тип данных integer (целое число)
 - •Тип данных float (число с плавающей точкой)
 - •Тип данных boolean (логический)
 - •Тип данных строка
 - •Создание массива
 - •Доступ к элементам массива
 - •Операции работы с массивом
 - •6.1.2 Управляющие конструкции Условный оператор
 - •Оператор «переключатель»
 - •Примеры работы с циклами
 - •Операторы передачи управления - break
 - •Операторы передачи управления - continue
 - •Операторы включения - include
 - •Операторы включения - require
 - •6.2 Пользовательские функции в php, функции работы с массивами и строками
 - •6.2.1 Пользовательские функции в php, функции работы с массивами и строками Пользовательские функции
 - •Параметры пользовательских функций
 - •Параметры пользовательских функций - переменное число параметров
 - •Возвращаемое значение
 - •Локальные и глобальные переменные
 - •Статические переменные
 - •6.2.2 Встроенные функции для работы с массивами
 - •Функции поиска
 - •Примеры функций поиска
 - •Функции сортировки
 - •Примеры сортировок
 - •Итераторы
 - •Функции выборки и преобразования массивов
 - •Примеры работы с функциями выборки и преобразования массивов
 - •6.2.3 Строковые функции и регулярные выражения Строковые функции
 - •Примеры использования строковых функций
 - •Функции разбора регулярных выражений
 - •Примеры использования функций разбора регулярных выражений
 - •Шаблоны
 - •Шаблоны, продолжение
 - •Подшаблоны
 - •Модификаторы
 - •6.3 Технология использования php при создании Интернет - приложений
 - •6.3.1 Технология обработки http-запросов с помощью php Методы доступа
 - •Параметры и переменные
 - •Html - формы
 - •Html - формы, продолжение
 - •Более сложная html- форма
 - •6.3.2 Сессии Взаимодействие между клиентом и сервером
 - •Идентификатор сессии, использование механизма сессии
 - •Пример работы с сессиями
 - •6.4 Классы и объекты в php
 - •6.4.1 Общие сведения о классах и объектах Классы
 - •Примеры создания класса
 - •Особенности передачи объектов в классы
 - •6.4.2 Наследование Пример наследования
 - •Уровни доступа
 - •Пример с различными уровнями доступа
 - •Абстрактные классы и интерфейсы
 - •6.4.3 Конструкторы и деструкторы Создание конструктора и деструктора
 - •Конструктор в классах-потомках
 - •6.4.4 Полиморфизм Перегрузка методов
 - •Другие возможности полиморфизма
 - •6.4.5 Исключения Исключения
 - •Соединение с сервером HyTech, функция hytech_pconnect
 - •Отключение от сервера HyTech
 - •Функция для смены кодировки символов
 - •7.1.2 Функции для выполнения sql-запросов Выполнение sql-запроса и открытие результата запроса
 - •Выполнение sql-запроса без открытия результата
 - •7.1.3 Функции для работы с результатами sql-запросов Закрытие ранее открытого результата
 - •Получение количества полей в результате запроса
 - •Пример использования функций
 - •Получение значений полей в заданной строке результата
 - •Получение строки результата в виде объекта
 - •Получение значения поля в заданной строке результата
 - •Пример использования функций
 - •7.1.4 Функции для работы с типами date и array в HyTech Установка режима работы с датами и массивами
 - •Установка формата строки для преобразования даты
 - •Преобразование строки в дату (целое число)
 - •Преобразование даты(числа) в строку
 - •Пример работы с функциями преобразования
 - •7.1.5 Функции для пакетного ввода данных Пакетное добавление строк в таблицу
 - •Открытие таблицы
 - •Добавление строки в буфер пакетного ввода
 - •Сохранение в таблице строк из буфера пакетного ввода
 - •Пример работы с пакетным вводом информации
 - •7.1.6 Функции для диагностики ошибок Диагностика ошибок
 - •7.2 Комплексный пример работы приложения с использованием php и субд HyTech Описание сценария взаимодействия с пользователем
 - •Форма регистрации
 - •Скрипт формы регистрации
 - •Функции для работы с бд
 - •Страница для выбора таблицы
 - •Регистрация переменной "table"
 - •Выбор строк из таблицы
 - •Форма редактирования
 - •Сохранение информации
 - •Результат успешного добавления строки
 
Пример работы с сессиями
Пример:
<?php session_start(); if( !isset( $_SESSION[ "NEW_SESS_FLAG" ] ) ) { /* считаем, что новая сессия, поскольку переменная NEW_SESS_FLAG не была инициализирована, а по ней мы хотим проверять новая сессия или нет при первом входе, хотим например, ввести имя пользователя и пароль формируем страницу с формой ввода имени пользователя и пароля */ include "login.html"; session_register( "NEW_SESS_FLAG" ); // регистрируем переменную // далее будем ждать имя пользователя и пароль _SESSION["NEW_SESS_FLAG"] = 1; } else { if(_SESSION[ "NEW_SESS_FLAG"] == 1 ) { // вводили имя и пароль проверяем пароль и имя пользователя include "autorize.php"; if( !$good_login ) { // не те имя и пароль, либо нет параметров с именем и паролем // говорим, что пароль не правильный include "bad_passw.html"; // удаляем переменную, следующий запрос будет // восприниматься нами как новая сессия session_unregister( "NEW_SESS_FLAG" ); } else { _SESSION[ "NEW_SESS_FLAG" ] = 2; } } if(_SESSION[ "NEW_SESS_FLAG"] == 2 ) { // работаем, понятно с каким пользователем ; } } ?>
6.4 Классы и объекты в php
Дается описание объектно-ориентированного программирования в PHP.
6.4.1 Общие сведения о классах и объектах Классы
Класс понимается в PHP в традиционном для объектно-ориентированных языков смысле.
Упрощенный синтаксис определения класса:
class Имя_класса { // свойства модификатор_доступа $имя_свойства1; модификатор_доступа $имя_свойства2; ... модификатор_доступа $имя_свойстваN; // методы [модификатор_доступа] function имя_метода1( ) { тело_метода; } [модификатор_доступа] function имя_метода2( ) { тело_метода; } ... [модификатор_доступа] function имя_методаK( ) { тело_метода; } }
Имя класса не чувствительно к регистру. Класс может быть определен в любой части кода PHP. Внимание! В классе имя метода уникально (если не использовать специальных трюков, но не совсем понятно, зачем это нужно), т.е. нельзя определить два метода с одинаковым именем и различным числом параметров.
Обращение к классу может предшествовать его определению. Объект представляет собой экземпляр класса и создается при помощи ключевого слова new (в простейшем случае после new указывается имя класса и круглые скобки).
Для вызова метода объекта или для обращения к свойству используется сочитание символов ->.
Для доступа к свойствам и методам в теле метода используется префикс $this->. Внимание! Если свойство используется без $this->, то интерпретатор может воспринять его как локальную переменную, а метод, как функцию.
Примеры создания класса
Пример:
<?php // определяем класс class Fio_Class { // определяем свойства public $first_name; public $second_name; public $family; // определяем методы function set_name ($par1, $par2, $par3 ) { $this->first_name = $par1; $this->second_name = $par2; $this->family = $par3; // а вот так неправильно! // first_name = $par1; } } // создаем объект $obj1 = new Fio_Class(); // вызываем метод для объекта $obj1->set_name( "Иван", "Иваныч", "Иванов" ); ?>
