Re: Объектная модель данных - Mailing list pgsql-ru-general

From Dmitriy Igrishin
Subject Re: Объектная модель данных
Date
Msg-id AANLkTinfDJaQLdfkBW-NahyR5bzwxb4LECGXAyZwMwuM@mail.gmail.com
Whole thread Raw
In response to Re: Объектная модель данных  ("Andrey N. Oktyabrski" <ano@bestmx.ru>)
Responses Re: Объектная модель данных  ("Andrey N. Oktyabrski" <ano@bestmx.ru>)
List 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 by date:

Previous
From: "Andrey N. Oktyabrski"
Date:
Subject: Re: Объектная модель данных
Next
From: "Andrey N. Oktyabrski"
Date:
Subject: Re: Объектная модель данных