Сетевые интерфейсы к базам данных

Перевожу список вопросов-ответов для контрольной по предмету Andmebaasi võrguliidesed который в ТТУ ведёт сейчас Erika Matsak и где основная тема - работа с Oracle из Java посредством JDeveloper. Впрочем я думаю и незнакомым с этой темой будет интересно…

Модели данных

  1. Плоская. Одна таблица (сущность/класс) (MS Excel, телефонная книга). Есть заголовки таблиц, типы и собственно данные
  2. Иерархия. Много сущностей (классов/node'ов) между которыми есть только отношения 1:N. Например меню, страны-города-регионы и тд.
  3. Сеть. Объекты могут связаны N:M отношениями. Люди в соц.сетях, ссылочное ранжирование.
  4. Реляционная модель - расширенная модель сети, где связей может быть несколько.
  5. Продукционная модель - набор правил которые могут быть представлены в виде IF (условие) THEN (действие). Используется в промышленных экспертных системах. Наглядно, модульно, однозначно
  6. Семантическая сеть - расширенная модель сети, где отношения фиксированы и производятся над понятиями объектов и классов (иерархические, функциональные, количественные, пространственные, временные, логические и тп.)
  7. Фреймы Минского - собирательный образ данных для представления человеческого абстрактного восприятия. Состоит из структур, ролей, сценариев, ситуаций. Фреймы можно наследовать

Основы реляционных БД

Таблица считается в первой нормальной форме , если её поля атомарны и у неё есть primary key. Таблица считается во второй нормальной форме, если все поля зависят от primary key, но не зависят от его частей. Таблица в третьей нормальной форме, когда primary key полностью идентифицирует ряд.

Некоторые свойства таблиц:

  1. Порядок рядов в таблице не имеет значения - это множество
  2. Объекты уникальны
  3. Объекты могут идентифицироваться через минимальный ключ (primary key) или несколько ключей (keys)
  4. Объекты можно связать друг с другом внешними ключами (foreign key)
  5. Любой параметр ряда может иметь значение NULL

Oracle и доступ из интернета

Из интернета редактируется в Enterprise Manager = Apex = HTML DB. Также есть SQL*Plus - консоль с расширенными SQL-коммандами (например DESCRIBE)
Пользователь может иметь

  • Системную привилегию, например на создание таблиц/пользователей/соединения
  • Объектную привилегию на доступк конкретной таблице
  • Группы привелегий. Например RESOURCE группирует в себе создание триггеров и процедур, DBA - привилегии админов

Основы SQL

Комманды можно разделить на:

  • SELECT/INSERT/UPDATE/DELETE - основные комманды принципа CRUD.
  • WHERE/HAVING/IF/CASE/THEN/IN/LIKE/EXISTS - основные комманды логической фильтрации
  • ORDER/GROUP - аггрегирующие и сортирующие комманды
  • SYSDATE/TO_CHAR/ROUND/...- функции работающие с одним рядом
  • JOIN - объединение таблиц
PL/SQL

Очень похож на Pascal/Delphi. Используется для обработки данных в таблицах.

DECLARE
a NUMBER;
b NUMBER;
d VARCHAR(20); //инициализация
c NUMBER := 3; //присваивание
BEGIN
SELECT e,f INTO a,b FROM T1 WHERE e>1; //чтение в переменные
INSERT INTO T1 VALUES(b,a);
END;

БД, Java и роль JDeveloper

Соединение создаётся через класс DriverManager.getConnection. В Jdeveloper'е большинство кода можно генерировать визуальными компонентами.

Java beans

Это java-классы, созданные по правилам:

  • конструктор без аргументов
  • параметры имеют методы доступа (get/set/is)
  • наследуют интерфейс java.io.Serializeable

На основе таких правил созданы большинство компонентов графических библиотек Swing. Благодаря своей иерархической структуре, IDE могут легко анализировать и показывать внутренности визуальных компонентов.

Oracle JDBC драйверы

JDBC имеет четыре типа драйверов для работы с БД (библиотеки java.sql и javax.sql) - т.н. толстые (нуждающиеся в дополнительных библиотеках - OCI к примеру) и тонкие (написанные полностью на java - thin). Рекомендуется использовать thin-драйверы. От этого часто говорят о "тонком клиенте".

RSS