- •Работа с субд PostgreSql
- •Работа с субд PostgreSql
- •Введение
- •1Установка PostgreSql
- •2Создание новой бд
- •2.1Создание новой бд
- •2.2Создание новой таблицы
- •2.3Создание связей между таблицами
- •3Создание индексов
- •4Доступ к PostgreSql из Java
- •4.1Соединение с PostgreSql
- •4.2Взаимодействие с бд
- •5Создание представлений
- •6Хранимые процедуры и Триггеры
- •6.1Хранимые процедуры
- •6.1.1Оператор Create Function языка pl/pgSql
- •6.1.2Создание хранимых процедур в pgAdmin III
- •6.1.3Вызов хранимых процедур в Java
- •6.2Триггеры бд
- •6.2.1Синтаксис определения триггера в PostgreSql
- •6.2.2Создание триггера в PgAdmin III
- •7Права доступа
- •Создание ролей;
- •7.1Создание ролей
- •7.2Назначение прав доступа
- •7.3Отмена прав доступа
- •7.4Проверка прав доступа
- •8Резервное копирование и восстановление бд
- •8.1Резервное копирование (BackUp) бд
- •8.2Восстановление (Restore) бд
- •8.3Создание sql-дампа бд
- •8.4Восстановление sql-дампа бд
- •8.5Восстановление sql-дампа средствами pgAdmin III
- •9Особенности взаимодействия субд access и PostgreSql
- •9.1Подготовка соединения PostgreSql с бд в Access
- •9.2Копирование таблиц Access в таблицы PostgreSql
- •9.3Подключение таблиц PostgreSql к бд в Access
- •10Администрирование PostgreSql
- •Литература
3Создание индексов
Индексы отличаются от первичных ключей тем, что не требуют непременной уникальности значений, входящих в их состав полей (колонок). Они устанавливаются по одной или нескольким колонкам, которые часто используются при поиске и сортировке данных: индексы [2] помогут системе значительно быстрее найти нужные данные или отсортировать их в нужной последовательности.
Для примера БД «Деканат ВУЗа» в качестве индекса можно определить колонку GrNo таблицы Students. Это позволит выполнить часто используемый запрос типа "Найти всех студентов учащихся в группе X", где X – некий параметр.
Для того чтобы создать индекс в pgAdmin III необходимо выполнить определенные действия.
Первоначально в окне Браузер объектов выделяется соответствующая таблица, активизируется ее контекстное меню, в нем выделяется пункт Новый объект -> Новый индекс (рисунок 3.1). В результате этого откроется окно Новый индекс (рисунок 3.2), в котором необходимо определить следующие свойства:
Имя – имя нового индекса;
Метод доступа (тип индекса [3], или тип индексного файла):
B-tree – индекс, представленный в виде структуры типа В-дерева;
hash – метод доступа, основанный на использовании хеш-адресации;
gist – обобщенное поисковое дерево, которое позволяет реализовывать индексную поддержку для различных типов данных [4, 5, 10];
gin – обобщенный обратный индекс [4, 6].
Уникально – указывает на то, что никакие две строки индексируемой таблицы не могут принимать одинаковое значение для индексируемой колонки (или комбинации колонок) в одно и то же время (для примера индекса в таблице Students это свойство выбирать не нужно).
Рисунок 3.1 – Контекстное меню создания индекса
Рисунок 3.2 – Закладка Свойства окна Новый индекс
После этого определяется колонка (или колонки) таблицы, образующие индекс (рисунок 3.3).
Рисунок 3.3 – Закладка Колонки окна Новый индекс
Соответствующий запрос создания нового индекса можно увидеть на закладке SQL (рисунок 3.4).
Рисунок 3.4 – Текст запроса создания нового индекса
4Доступ к PostgreSql из Java
4.1Соединение с PostgreSql
Соединение с БД на Java - JDBC (Java DataBase Connectivity) — платформо-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql, входящего в состав Java.
JDBC основана на концепции драйверов, позволяющих получать соединение с БД по специально описанному URL - единообразному локатору ресурса (Uniform Resource Locator). Драйверы могут загружаться динамически. Загрузившись, драйвер сам регистрирует себя и вызывается автоматически, когда программа требует URL, содержащий протокол, за который драйвер отвечает.
В случае, если JDBC не содержит драйвера к конкретной СУБД, можно использовать драйвер-мост JDBC-ODBC, а драйверы ODBC есть практически ко всем СУБД.
Любая программа, которая предполагает использовать JDBC должна импортировать пакеты java.sql.*:
import java.sql.*;
Следует подчеркнуть, что при загрузке драйвера из программы она становится зависимой от конкретной СУБД. Для перехода к другой СУБД в этом случае требуется перекомпилирование программы.
Для загрузки драйвера JDBC из программы следует выполнить:
для PostgreeSQL
Class.forName ("org.postgresql.Driver");
для MySQL
Class.forName ("com.mysql.jdbc.Driver");
для драйвера-моста JDBC-ODBC
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
Соединение с БД описывается классом, реализующим интерфейс java.sql.Connection:
Connection dbh = DriverManager.getConnection(url, user, password);
Здесь url - строка, по которой JDBC определяет с чем, где и чем устанавливать соединение. Она имеет один из следующих форматов
Для прямого обращения к серверам, например PostgreSQL:
PostgreSQL:
jdbc:postgresql://сервер/база_данных
jdbc:postgresql://сервер:порт/база_данных
MySQL:
jdbc:mysql://сервер/база_данных
jdbc:mysql://сервер:порт/база_данных
Для моста jdbc:odbc сервер указывать не надо. Он задается в odbc
jdbc:odbc:база_данных
где сервер – это адрес сервера, где расположена СУБД, порт – это tcp-порт, на котором будет устанавливаться соединение и база данных – это имя БД, которая будет использоваться.
Примечание. Что бы программа была независимой от конкретного драйвера целесообразно задать драйвер, url, user и password в отдельном текстовом файле и загружать его в начале программы. Лучше всего использовать понятие свойств программы и, соответственно, файл с расширением properties.