Re: Объектная модель данных
От | Dmitriy Igrishin |
---|---|
Тема | Re: Объектная модель данных |
Дата | |
Msg-id | AANLkTinfDJaQLdfkBW-NahyR5bzwxb4LECGXAyZwMwuM@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Объектная модель данных ("Andrey N. Oktyabrski" <ano@bestmx.ru>) |
Ответы |
Re: Объектная модель данных
|
Список | 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 :-)На практике же, когда анализ предметной области выявляет концепции
проекта, следующим шагом после установления связей между ними,
является определение операций над этими концепциями. И если две
концепции связаны наследованием, то последнее не очень полезно
без полиморфизма.Не, мы всё-таки о разных вещах. Я о том, что операций над данными только четыре штуки - select, insert, update, delete.Так вот определить полиморфные операции непосредственно в
PostgreSQL (в том же PL/pgSQL) невозможно. Возможно только
прилагая большую сообразительность и мастерство.Почему только выборки? UPDATE/DELETE тоже.Что касается понятия наследования, реализованного в
PostgreSQL (INHERITANCE clause). Принимая в расчёт ограничения,
указанные в п. 5.8.1, я вообще не понимаю зачем этот функционал был
добавлен в PostgreSQL? Разве что только для выборки из всех таблиц,
олицетворяющих производные классы, через таблицу, представляющую
базовый класс (как в примере выше)? :-)
SELECT - это не операция, присущая концепциям, а средство
выборки сущностей концепций (т.е. объектов классов) по определённым
условиям.
Операции манипуляции с данными не дают даже малейшего
представления о том, что можно сделать с проектными понятиями,
то есть они являются лишь конструкциями SQL для создания новых и
изменения существующих объектов.
--
// Dmitriy.
В списке pgsql-ru-general по дате отправления: