---
title: Сетевые интерфейсы к базам данных
date: 2008-03-31T10:00
tags: [университет]
---

Перевожу список вопросов-ответов для контрольной по предмету [Andmebaasi võrguliidesed](http://www.tlu.ee/%7Ematsak/oracle/index.htm) который в ТТУ ведёт сейчас [Erika Matsak](http://www.linkedin.com/pub/erika-matsak/12/b75/590) и где основная тема - [работа с Oracle](http://pitsa.pld.ttu.ee:1158/em/) из Java посредством JDeveloper. Впрочем я думаю и незнакомым с этой темой будет интересно…

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

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

---

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

Таблица считается в первой [нормальной форме](http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0) , если её поля атомарны и у неё есть _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&gt;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-драйверы. От этого часто говорят о "тонком клиенте".

## Related

- [Web-службы и архитектуры приложений для интернета](/ru/blog/универ/web-sluzhby-i-arhitektury-prilozheniy-dlya-interneta/)
- [Алгоритмы и структуры данных](/ru/blog/универ/algoritmy-i-struktury-dannyh/)
- [Анализ сетей](/ru/blog/универ/analiz-setey/)
