|
|
| (не показаны 3 промежуточные версии 2 участников) |
| Строка 88: |
Строка 88: |
| | ##Забалансовые счета. | | ##Забалансовые счета. |
| | ###Хозяйственная операция: понятие и сущность. | | ###Хозяйственная операция: понятие и сущность. |
| | + | # Знакомство с регулярными выражениями. |
| | | | |
| − | == Новый учебный план ==
| + | [[Category:Учебный курс]] |
| − | | + | |
| − | === Занятие 1 ===
| + | |
| − | | + | |
| − | * Платформа Гедымин, как пост-реляционные технологии. Использование реляционной СУБД для хранения объектов. Объектный и традиционный доступ к данным в базе.
| + | |
| − | * Сервер Interbase/Firebird. Экскурс в историю. Основные возможности. Преимущества перед конкурирующими продуктами. РСУБД с открытым исходным кодом.
| + | |
| − | * Архитектура клиент-сервер. Клиентская и серверная части. Взаимодействие между клиентом и сервером по протоколу TCP/IP. Настройка брандмауэра.
| + | |
| − | * Структура папок и файлов серверной части Interbase/Firebird. Обзор содержимого папки BIN. Ручная установка сервера. Утилиты instreg и instsvc.
| + | |
| − | * Обеспечение надежной и бесперебойной работы сервера:
| + | |
| − | ** Использование памяти ECC
| + | |
| − | ** Использование блока бесперебойного питания
| + | |
| − | ** Активизация режима forced writes на уровне базы данных
| + | |
| − | ** Использование файловой системы NTFS
| + | |
| − | ** Использование RAID контроллеров с батарейкой или отключение кэша на запись на жестком диске
| + | |
| − | * Утилита архивного копирования gbak. Регулярное архивирование базы данных. Архивирование поврежденной базы данных. Восстановление базы данных их архива. Восстановление поврежденной базы данных.
| + | |
| − | * Понятие страницы базы данных. Размер страницы и размер буффера кэша. Поиск оптимальных значений.
| + | |
| − | | + | |
| − | === Занятие 2 ===
| + | |
| − | | + | |
| − | * Язык запросов к базе данных SQL. Подмножества языка SQL: язык определения структур данных DDL и язык манипуляции данными DML.
| + | |
| − | * Основные объекты метаданных реляционной базы данных: таблицы, домены, триггеры, хранимые процедуры, ограничения.
| + | |
| − | * Таблицы. Создание таблицы с помощью оператора CREATE TABLE. Изменение таблицы с помощью оператора ALTER TABLE. Удаление таблицы с помощью DROP TABLE.
| + | |
| − | * Правила именования объектов базы данных. Использование префиксов для разделения пространств имен.
| + | |
| − | * Типы данных: числовые (целые, с плавающей и фиксированной точкой), дата и время, строковые типы.
| + | |
| − | ** INTEGER, SMALLINT
| + | |
| − | ** DOUBLE PRECISION, SINGLE PRECISION
| + | |
| − | ** NUMERIC, DECIMAL
| + | |
| − | ** DATE, TIME, TIMESTAMP
| + | |
| − | ** CHAR, VARCHAR
| + | |
| − | * Ограничения на колонки данных: NOT NULL, UNIQUE, CHECK
| + | |
| − | * Задание значения по-умолчанию с помощью секции DEFAULT. Метапеременные для полей типа дата и время: CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, NOW.
| + | |
| − | * Вставка данных с помощью оператора INSERT. Полный и сокращенный формат синтаксиса оператора INSERT.
| + | |
| − | * Создание вычисляемого поля.
| + | |
| − | * Создание своих типов данных. Операторы CREATE DOMAIN, ALTER DOMAIN, DROP DOMAIN. Использование доменов при добавлении колонок в таблицу.
| + | |
| − | * Ограничение PRIMARY KEY. Понятие первичного ключа таблицы.
| + | |
| − | * Внешние ссылки на записи в других таблицах. Создание ограничения FOREIGN KEY.
| + | |
| − | | + | |
| − | === Занятие 3 ===
| + | |
| − | | + | |
| − | * Натуральные и суррогатные первичные ключи. Кандидат на первичный ключ.
| + | |
| − | * Формирование значения суррогатного первичного ключа с помощью генератора.
| + | |
| − | ** Создание генератора CREATE GENERATOR
| + | |
| − | ** Присвоение начального значения генератору SET GENERATOR TO...
| + | |
| − | ** Получение значения генератора GEN_ID
| + | |
| − | * Понятие триггера. События: BEFORE INSERT, AFTER INSERT, BEFORE UPDATE, AFTER UPDATE, BEFORE DELETE, AFTER DELETE.
| + | |
| − | * Порядок выполнения триггеров. Позиция триггера. Включение и выключение триггера.
| + | |
| − | * Создание триггера, изменение триггера, удаление триггера.
| + | |
| − | * Доступ к данным записи в триггере. Метапеременные OLD и NEW.
| + | |
| − | * Учебный пример.
| + | |
| − | ** Создание необходимых типов данных. Понятие кодовой таблицы CHARACTER SET и сличения COLLATION для строковых полей.
| + | |
| − | ** Создание таблицы со списком футбольных команд.
| + | |
| − | ** Создание триггера для присвоения значения первичному ключу.
| + | |
| − | ** Создание таблицы для хранения результатов матчей.
| + | |
| − | ** Настройка внешних ссылок. Секции ON UPDATE и ON DELETE при определении FOREIGN KEY.
| + | |
| − | ** Создание таблицы для хранения статистики.
| + | |
| − | ** Настройка триггеров для обновления статистической информации.
| + | |
| − | | + | |
| − | === Занятие 4 ===
| + | |
| − | | + | |
| − | * Понятие транзакции, как логической группы операций над данными в базе. Применение транзакций для поддержания логической целостности данных в базе. Подтверждение (COMMIT) транзакции. Откат (ROLLBACK) транзакции.
| + | |
| − | * Понятие конкурирующих транзакций (чтение и изменение одной и той же записи в двух разных транзакциях). Версионность записей.
| + | |
| − | * Параметры транзакции:
| + | |
| − | ** READ COMMITTED и SNAPSHOT транзакции.
| + | |
| − | ** WAIT и NOWAIT транзакции.
| + | |
| − | * Конфликты блокировок записи (deadlock).
| + | |
| − | * Реализация вложенных транзакций с помощью точек сохранения. Создание точки сохранения SAVEPOINT. Откат данных до точки сохранения ROLLBACK TO SAVEPOINT. Удаление точки сохранения RELEASE SAVEPOINT.
| + | |
| − | * Работа с транзакциями из макросов. Компонент TIBTransaction.
| + | |
| − | ** Создание компонента.
| + | |
| − | ** Присваивание параметров транзакции. Параметры по-умолчанию.
| + | |
| − | ** Связывание с компонентом подключения к базе данных.
| + | |
| − | ** Связывание с компонентом запросом к базе данных TIBSQL.
| + | |
| − | ** Старт транзакции.
| + | |
| − | ** Чтение и\или изменение данных в рамках транзакции.
| + | |
| − | ** Подтверждение или откат транзакции.
| + | |
| − | ** Поведение транзакции в случае возникновения ошибки в программном коде.
| + | |
| − | * Автоматическая обработка транзакций в бизнес-объектах. Ручное управление транзакциями в бизнес-объектах.
| + | |
| − | * Понятие мягкого комита или отката транзакции (COMMIT RETAINING, ROLLBACK RETAINING).
| + | |
| − | | + | |
| − | === Занятие 5 ===
| + | |
| − | | + | |
| − | * Хранимые процедуры. Преимущества: выполнение на сервере, компиляция в момент создания.
| + | |
| − | * Создание хранимой процедуры. Два вида хранимых процедур. Входящие и исходящие параметры.
| + | |
| − | * Создание хранимых процедур. Команды CREATE PROCEDURE и RECREATE PROCEDURE.
| + | |
| − | * Язык хранимых процедур:
| + | |
| − | ** Объявление и использование локальных переменных
| + | |
| − | ** Присвоение значений переменным
| + | |
| − | ** FOR SELECT ... INTO ... DO ...
| + | |
| − | ** IF () THEN ... ELSE ...
| + | |
| − | ** WHILE () DO ...
| + | |
| − | ** WHEN ... DO ...
| + | |
| − | * Использование хранимых процедур в запросе.
| + | |
| − | * Исключения. Создание исключения -- команда CREATE EXCEPTION. Вызов исключения из тела процедуры или триггера.
| + | |
| − | * Представление. Преимущества использования представлений. Создание представления -- команда CREATE VIEW. Использование представлений в запросе. Обновляемые представления.
| + | |
| − | * Индексы. Создание индекса -- команда CREATE INDEX. Использование индекса в запросе.
| + | |
| − | | + | |
| − | === Занятие 6 ===
| + | |
| − | | + | |
| − | * Системные таблицы Interbase/Firebird:
| + | |
| − | ** RDB$RELATIONS -- список таблиц и представлений;
| + | |
| − | ** RDB$RELATION_FIELDS -- список полей таблиц и представлений;
| + | |
| − | ** RDB$FIELDS -- список доменов (типов данных);
| + | |
| − | ** RDB$PROCEDURES -- список хранимых процедур;
| + | |
| − | ** RDB$TRIGGERS -- список триггеров;
| + | |
| − | ** RDB$TRIGGERS -- список генераторов;
| + | |
| − | ** RDB$DEPENDENCIES -- список зависимостей между объектами БД;
| + | |
| − | ** Другие RDB$ таблицы;
| + | |
| − | * Определение зависимостей между объектами в БД;
| + | |
| − | * Изменение информации в системных таблицах: за и против. Пример модификации формулы вычисляемого поля через изменение записи в системных таблицах:
| + | |
| − | * Применение встроенных функций в SQL запросах:
| + | |
| − | ** IIF
| + | |
| − | ** COALESCE
| + | |
| − | ** NULLIF
| + | |
| − | ** CASE
| + | |
| − | ** SUBSTRING, LENGTH
| + | |
| − | ** EXTRACT
| + | |
| − | * Преобразование типов данных с помощью оператора CAST;
| + | |
| − | * Использование JOIN и LEFT JOIN в запросах;
| + | |
| − | * Использование UNION и UNION ALL.
| + | |
| − | | + | |
| − | === Занятие 7 ===
| + | |
| − | | + | |
| − | * Обзор системы разграничения прав доступа стандарта SQL.
| + | |
| − | * Обзор системы разграничения прав доступа платформы Гедымин.
| + | |
| − | | + | |
| − | === Занятие 8 ===
| + | |
| − | | + | |
| − | * Аутентификация пользователя сервера Interbase/Firebird. Понятие учетной записи.
| + | |
| − | * Cоздание/изменение/удаление учетных записей с помощью утилиты командной строки gsec. Синтаксис подключения к базе данных. Работа в интерактивном режиме. Основные команды.
| + | |
| − | * Хранение списка учетных записей на сервере в базе данных [[isc4.gdb]].
| + | |
| − | * Учетная запись [[SYSDBA]]. Ее предназначение. Понятие владельца объекта метаданных.
| + | |
| − | * Назначение привелегий доступа с помощью команды GRANT. Отзыв привелегий с помощью команды REVOKE.
| + | |
| − | ** Виды привелегий: SELECT, UPDATE, DELETE, REFERENCE, EXECUTE, ALL.
| + | |
| − | ** Назначение привелегий на таблицу/представление целиком или на отдельные колонки.
| + | |
| − | ** Назначение привелегий доступа пользователю, группе пользователей или всем пользователям (PUBLIC).
| + | |
| − | ** Назначение привелегий хранимой процедуре или триггеру для доступа к таблице.
| + | |
| − | * Понятие роли. Создание роли с помощью команды CREATE ROLE. Присвоение учетной записи права на использование роли с помощью команды GRANT. Хранение списка ролей в базе данных. Таблица [[RDB$ROLES]].
| + | |
| − | * Организация аутентификации пользователя платформы Гедымин.
| + | |
| − | ** Понятие учетной записи платформы Гедымин. Хранение учетных записей в базе данных. Таблица [[GD_USER]].
| + | |
| − | ** Связь между учетной записью платформы Гедымин и учетной записью сервера Interbase/Firebird. Создание учетной записи сервера Interbase при создании учетной записи платформы Гедымин.
| + | |
| − | ** Учетная запись Administrator и ее сопоставление пользователю [[SYSDBA]].
| + | |
| − | ** Процесс подключения к базе данных платформы Гедымин и его основные элементы:
| + | |
| − | *** Окно выбора базы данных, ввода учетной записи и пароля.
| + | |
| − | *** Считывание информации о подключении из системного реестра.
| + | |
| − | *** Подключение к серверу под учетной записью [[STARTUSER]].
| + | |
| − | *** Процедура [[GD_P_SEC_LOGINUSER]].
| + | |
| − | *** Подключение под учетной записью пользователя.
| + | |
| − | * Перенос файла базы данных на другой сервер. Пересоздание учетных записей пользователей сервера Interbase/Firebird.
| + | |
| − | * Перенос базы данных на "чистый" сервер. Создание учетной записи STARTUSER.
| + | |
| − | * Разграничение доступа к файлу базы данных:
| + | |
| − | ** Использование выделенного сервера для работы с базой данных.
| + | |
| − | ** Использование съемных носителей информации для работы с базой данных.
| + | |
| − | ** Использование шифрования файлов операционной системой.
| + | |
| − | | + | |
| − | === Занятие 9 ===
| + | |
| − | | + | |
| − | * Группы пользователей. Таблица [[GD_USER]]. Ограничение на количество групп пользователей в системе. Идентификатор группы пользователей. Шесть стандартных групп и их предназначение.
| + | |
| − | * [[Дескриптор безопасности]] как 32-х битная маска групп пользователей. Дескрипторы AVIEW, ACHAG и AFULL.
| + | |
| − | * Понятие о доступе к классу и экземпляру класса (записи).
| + | |
| − | * Назначение прав доступа на классы для групп пользователей в Исследователе системы.
| + | |
| − | * Назначение прав доступа на существующие записи в базе с помощью диалогового окна редактирования группы пользователей.
| + | |
| − | * Назначение прав доступа на запись с помощью команды Свойства.
| + | |
| − | * Блокировка периода. Реализация блокировки с помощью триггеров на таблицы проводок, документов и складского движения. Исключение заданных групп пользователей и типов документов из блокировки периода. Хранение даты блокировки в генераторе GD_G_BLOCK.
| + | |
| − | * Политики системной безопасности.
| + | |
| − | * Сложные сценарии разграничения доступа. Присваивание значений дескрипторам безопасности в методе BeforePost бизнес-класса.
| + | |
| − | | + | |
| − | === Занятие 10 ===
| + | |
| − | | + | |
| − | * Понятие уникального идентификатора записи [[РУИД]]. Формирование РУИДа на основе идентификатора записи и идентификатора базы данных. Генераторы [[gd_g_unique]], [[gd_g_offset]], [[gd_g_dbid]]. Первоначальное присвоение значения генератора [[gd_g_dbid]]. Алгоритм формирования уникального идентификатора базы данных.
| + | |
| − | * [[Хранилище]] и его предназначение для хранения структурированной иерархической информации. Применение Хранилища для хранения настроек программы. Сравнение с реестром операционной системы Windows. Почему в Гедымине применяется своя система хранения настроек?
| + | |
| − | * Объекты Хранилища: Папки и Значения. Древовидная структура папок. Типы данных значений: целочисленный, дробный, дата и время, строка, двоичный объект.
| + | |
| − | * Работа с Хранилищем с точки зрения пользователя. Окно Хранилища. Создание, изменение, удаление папок и значений. Поиск папок и значений. Просмотр свойств папки.
| + | |
| − | * Добавление в настройку элементов Хранилища. Почему следует добавлять значение, а не папку? Какие существуют исключения из этого правила?
| + | |
| − | * Перенос данных хранилища между базами данных. Сохранение данных Хранилища в файле. Форматы файлов данных Хранилища.
| + | |
| − | * Виды Хранилищ платформы Гедымин: Глобальное, Пользовательское, Хранилище Компании и Рабочего стола.
| + | |
| − | * Хранение данных Хранилища каждого вида в базе. Таблицы: [[GD_GLOBALSTORAGE]], [[GD_USERSTORAGE]], [[GD_COMPANYSTORAGE]] и [[GD_DESKTOP]].
| + | |
| − | * Работа с Хранилищем с точки зрения разработчика. Глобальные объекты и их методы и свойства.
| + | |
| − | * Загрузка Хранилища в оперативную память компьютера. Кэширование данных Хранилища на локальном жестком диске. Синхронизация данных Хранилища в оперативной памяти компьютера с базой данных. В чем особенности функционирования глобального хранилища? В чем особенности работы с хранилищем под учетной записью [[Администратор]]?
| + | |
| − | * Типовые приемы работы с хранилищем из макросов. Считывание/изменение одиночного значения. Считывание/изменение группы значений. События экранных форм: LoadSettingsAfterCreate и SaveSettings.
| + | |
| − | | + | |
| − | ==Трехдневный учебный курс==
| + | |
| − | ===День 1===
| + | |
| − | ====Реляционная база данных и язык SQL====
| + | |
| − | * Общие принципы организации клиент-серверных приложений. Сервер баз данных Interbase/Firebird. Роль реляционной базы данных в объектно-ориентированной платформе Гедымин.
| + | |
| − | * Язык запросов к базе данных SQL. Структура базы данных (метаданные) и данные. Основные команды создания метаданных:
| + | |
| − | ** Типы данных (домены) -- CREATE DOMAIN, ALTER DOMAIN, DROP DOMAIN. Встроенные типы данных и типы данных, определяемые пользователем. Наложение ограничений на значения колонки: NOT NULL и CHECK.
| + | |
| − | ** Генераторы -- CREATE GENERATOR, SET GENERATOR, DROP GENERATOR. Использование генераторов для создания уникальных последовательностей идентификаторов.
| + | |
| − | ** Таблицы -- CREATE TABLE, ALTER TABLE, DROP TABLE. Понятие первичного ключа таблицы (PRIMARY KEY). Понятие внешнего ключа (FOREIGN KEY). Наложение ограничений при создании колонок таблицы. Уникальные колонки (UNIQUE).
| + | |
| − | ** Триггеры -- CREATE TRIGGER, ALTER TRIGGER, DROP TRIGGER. Триггер, как подпрограмма. вызываемая в ответ на определенное событие в базе данных. Шесть типов событий: BEFORE INSERT, AFTER INSERT, BEFORE UPDATE, AFTER UPDATE, BEFORE DELETE, AFTER DELETE.
| + | |
| − | ** Хранимые процедуры -- CREATE PROCEDURE, ALTER PROCEDURE, DROP PROCEDURE. Понятие селективной и автономной процедуры. Выполнение хранимой процедуры с помощью команды EXECUTE PROCEDURE.
| + | |
| − | * Язык написания хранимых процедур и триггеров:
| + | |
| − | ** Определение и использование входных и исходящих параметров, локальных переменных.
| + | |
| − | ** Цикл по запросу: FOR ... SELECT ... INTO ... DO ...
| + | |
| − | ** Цикл WHILE ... DO ...
| + | |
| − | ** Условный переход IF (...) THEN ... ELSE ...
| + | |
| − | ** Обработка ошибок WHEN ... DO ...
| + | |
| − | * Язык извлечения информации SQL:
| + | |
| − | ** Команда извлечения информации SELECT ... FROM ... WHERE.
| + | |
| − | ** Объединение таблиц: операторы JOIN и LEFT JOIN.
| + | |
| − | ** Группировка записей и сортировка результирующего набора: секции GROUP BY и ORDER BY.
| + | |
| − | ** Применение функций IIF, COALESCE, NULLIF, CASE.
| + | |
| − | * Изменение информации в базе данных:
| + | |
| − | ** Вставка записей с помощью команды INSERT INTO ...
| + | |
| − | ** Изменение записей с помощью команды UPDATE ... SET ... WHERE
| + | |
| − | ** Удаление записей с помощью команды DELETE FROM ...
| + | |
| − | | + | |
| − | ====Организация пользовательского интерфейса платформы Гедымин====
| + | |
| − | | + | |
| − | * Главное окно программы.
| + | |
| − | ** Меню главного окна.
| + | |
| − | ** Список рабочих столов.
| + | |
| − | *** Понятие рабочего стола. Создание и сохранение рабочего стола. Выбор рабочего стола.
| + | |
| − | ** Выбор рабочей организации.
| + | |
| − | *** Понятие рабочей организации. Добавление организаций в список рабочих организаций.
| + | |
| − | *** Понятие холдинга. Добавление структурных подразделений в холдинг.
| + | |
| − | ** Список активных окон.
| + | |
| − | *** Свернуть и Закрыть окно, в чем разница?
| + | |
| − | | + | |
| − | ===День 2===
| + | |
| − | ===День 3===
| + | |