русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Замечание.


Дата добавления: 2015-07-09; просмотров: 544; Нарушение авторских прав


1) У объектного типа может не быть методов.

2) Объекты могут быть двух типов: устойчивые (те, которые хранятся в таблицах, т.е. являются либо строками, либо столбцами таблицы); и неустойчивые (все остальные).

Пример.

Создать объектный тип, содержащий сведения об отделе.

CREATE[OR REPLACE] TYPE DEPT_ T AS OBJECT

(ID NUMBER(2), -- номер отдела

NAME VARCHAR2(15), -- фамилия начальника

LOC VARCHAR2(15)); -- месторасположение отдела

Создать таблицу, строкой которой будет данный объектный тип.

CREATE TABLE DEPT OF DEPT_T;

Такая таблица называется объектной таблицей, объектом является строка, атрибуты которой определены в объектном типе DEPT_T и ID, NAME, LOC являются столбцами таблицы.

Вставка новых значений в таблицу осуществляется через конструктор.

Конструктор – это функция, создаваемая системой по умолчанию, имя которой совпадает с именем типа, а список параметров – со списком атрибутов и возвращаемым типом является объект.

INSERT INTO DEPT

VALUES(DEPT_T(30,'JONSON','CHIKAGO'));

Для того чтобы создать объектную таблицу, в целях сопряжения с реляционными методами, которые были до этого в БД, допускается и обычная вставка, при условии, что в списке атрибутов нет других встроенных объектных типов.

INSERT INTO DEPT

VALUES(20,'SCOTT','WASHINGTON');

В таком случае можно выполнять операции DELETE и UPDATE как над обычными реляционными таблицами.

Создать таблицу, столбцом которой является объектный тип.

CREATE TABLE EMP

(EMPNO NUMBER(4),

ENAME VARCHAR2(11),

OTDEL DEPT_T);

В данном случае ввести данные без конструктора нельзя, т.е. ввод новых значений будет иметь вид:

INSERT INTO EMP

VALUES(1111,'KLARK',DEPT_T(40,'JONSON','ATLANTA'));

В противном случае будет выдана ошибка.

Выбрать информацию можно с помощью обычного оператора SELECT:



SELECT * FROM EMP;

На экран будет выведено:

EMPNO ENAME OTDEL(ID, NAME, LOC)

1111 KLARK DEPT_T(40,'JONSON','ATLANTA')

Т.е. OTDEL рассматривается как единое целое, и обратиться непосредственно к какому-то отдельному элементу нельзя.

Если необходимо выбрать некоторую информацию по объекту, то выполнить эку операцию как в реляционной БД нельзя.

SELECT ENAME FROM EMP

WHERE OTDEL=DEPT_T(40,'JONSON','ATLANTA');

Тоже самое касается операторов DELETE, UPDATE.

Это не совсем удобно, поэтому на практике такие таблицы строят следующим образом, учитывая, что существует таблица, где эти строки присутствуют:

CREATE TABLE EMP12

(EMPNO NUMBER(4),

ENAME VARCHAR2(11),

OTDEL REF DEPT_T);

REF – ссылка на объект, которая получает адрес объекта.

Когда формируется объектная таблица, где объекты – строки, то каждому объекту присваивается уникальный номер (идентификатор). Если даже объект удаляется, этот номер никакому другому объекту никогда не присваивается. Номер может достигать значения 2128.

Для вставки информации в такую таблицу, используют следующую конструкцию:

INSERT INTO EMP

SELECT 1111,'JOHN', REF(D)

FROM DEPT1 D

WHERE ID=10

Строка с ID=10 имеет уникальный номер, с помощью REF(D) получаем адрес объекта, и он станет на место третьего параметра.

В данном случае необходимо использовать синонимы. D не является синонимом в чистом виде, это так называемая переменная корреляции.

Если необходимо просмотреть нашу таблицу, то можно использовать следующий оператор:

SELECT * FROM EMP;

Но в этом случае на экран выведется следующее:

EMPNO ENAME OTDEL

1111 KLARK (здесь будет выведено ОЧЕНЬ длинное число)

Поэтому для выдачи более понятной информации используем:

SELECT EMPNO, ENAME, DEREF(OTDEL) FROM EMP12;

В результате получим:

1111 KLARK DEPT_T(40,'JONSON','ATLANTA')

Здесь DEREF возвращает по ссылке объект.

Если необходимо изменить, то:

UPDATE EMP SET ENAME='SASHA'

WHERE DEREF(OTDEL)=DEPT_T(40,'JONSON','ATLANTA');

Так как ссылку никому присваивать нельзя, в противном случае выдаст ошибку, что присваивается слишком большое значение.


 

Литература

 



<== предыдущая лекция | следующая лекция ==>
Замечания. | Основная


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.685 сек.