Re: Объектная модель данных

Поиск
Список
Период
Сортировка
От Dmitriy Igrishin
Тема Re: Объектная модель данных
Дата
Msg-id AANLkTinfDJaQLdfkBW-NahyR5bzwxb4LECGXAyZwMwuM@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Объектная модель данных  ("Andrey N. Oktyabrski" <ano@bestmx.ru>)
Ответы Re: Объектная модель данных  ("Andrey N. Oktyabrski" <ano@bestmx.ru>)
Список pgsql-ru-general


25 февраля 2011 г. 17:23 пользователь Andrey N. Oktyabrski <ano@bestmx.ru> написал:
On 02/25/11 15:06, Dmitriy Igrishin wrote:
       Пример:
       create table A (id int, name text);
       create table B (txt text) inherits A;

       select id, name from A;

       Выбраны все записи как из A, так и из B. Чего тут сложного-то?
       Никаких чрезмерных усилий :-)

       Или это не о том?

Пример является надуманным. Даже имена выбраны так, что понять
их предназначение невозможно.
Естественно, я не буду приводить тут примеры из реальных приложений. Они занимают слишком много места.


На практике же, когда анализ предметной области выявляет концепции
проекта, следующим шагом после установления связей между ними,
является определение операций над этими концепциями. И если две
концепции связаны наследованием, то последнее не очень полезно
без полиморфизма.
И он есть, как показал мой надуманный пример. Как минимум, для операции select над концепциями A & B :-)


Так вот определить полиморфные операции непосредственно в
PostgreSQL (в том же PL/pgSQL) невозможно. Возможно только
прилагая большую сообразительность и мастерство.
Не, мы всё-таки о разных вещах. Я о том, что операций над данными только четыре штуки - select, insert, update, delete.


Что касается понятия наследования, реализованного в
PostgreSQL (INHERITANCE clause). Принимая в расчёт ограничения,
указанные в п. 5.8.1, я вообще не понимаю зачем этот функционал был
добавлен в PostgreSQL? Разве что только для выборки из всех таблиц,
олицетворяющих производные классы, через таблицу, представляющую
базовый класс (как в примере выше)?  :-)
Почему только выборки? UPDATE/DELETE тоже.

SELECT - это не операция, присущая концепциям, а средство
выборки сущностей концепций (т.е. объектов классов) по определённым
условиям.
Операции манипуляции с данными не дают даже малейшего
представления о том, что можно сделать с проектными понятиями,
то есть они  являются лишь конструкциями SQL для создания новых и
изменения существующих объектов.


--
// Dmitriy.


В списке pgsql-ru-general по дате отправления:

Предыдущее
От: "Andrey N. Oktyabrski"
Дата:
Сообщение: Re: Объектная модель данных
Следующее
От: "Andrey N. Oktyabrski"
Дата:
Сообщение: Re: Объектная модель данных