Сетевые интерфейсы к базам данных
Перевожу список вопросов-ответов для контрольной по предмету Andmebaasi võrguliidesed который в ТТУ ведёт сейчас Erika Matsak и где основная тема - работа с Oracle из Java посредством JDeveloper. Впрочем я думаю и незнакомым с этой темой будет интересно…
Модели данных
- Плоская. Одна таблица (сущность/класс) (MS Excel, телефонная книга). Есть заголовки таблиц, типы и собственно данные
- Иерархия. Много сущностей (классов/node'ов) между которыми есть только отношения 1:N. Например меню, страны-города-регионы и тд.
- Сеть. Объекты могут связаны N:M отношениями. Люди в соц.сетях, ссылочное ранжирование.
- Реляционная модель - расширенная модель сети, где связей может быть несколько.
- Продукционная модель - набор правил которые могут быть представлены в виде IF (условие) THEN (действие). Используется в промышленных экспертных системах. Наглядно, модульно, однозначно
- Семантическая сеть - расширенная модель сети, где отношения фиксированы и производятся над понятиями объектов и классов (иерархические, функциональные, количественные, пространственные, временные, логические и тп.)
- Фреймы Минского - собирательный образ данных для представления человеческого абстрактного восприятия. Состоит из структур, ролей, сценариев, ситуаций. Фреймы можно наследовать
Основы реляционных БД
Таблица считается в первой нормальной форме , если её поля атомарны и у неё есть primary key. Таблица считается во второй нормальной форме, если все поля зависят от primary key, но не зависят от его частей. Таблица в третьей нормальной форме, когда primary key полностью идентифицирует ряд.
Некоторые свойства таблиц:
-
Порядок рядов в таблице не имеет значения - это множество
-
Объекты уникальны
-
Объекты могут идентифицироваться через минимальный ключ (primary key) или несколько ключей (keys)
-
Объекты можно связать друг с другом внешними ключами (foreign key)
-
Любой параметр ряда может иметь значение 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-драйверы. От этого часто говорят о "тонком клиенте".