powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / SQL и ООП
25 сообщений из 195, страница 1 из 8
SQL и ООП
    #34575754
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложил свои мысли по этому вопросу
http://mynaf.narod.ru/OQL.html
Прошу обсуждения
...
Рейтинг: 0 / 0
SQL и ООП
    #34575826
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежде всего, изложенная мысль страдает традиционным недостатком - "процесс ради процесса". Не сделано попытки осмыслить цель, понять, чего хочется достичь, либо хотя бы - какие результаты будут достигнуты таким образом, и что в этом хорошего.

Обсуждение.... признаться, наиболее деликатное, что я могу сказать по этому поводу - "ничего интересного". Более точно на эту тему высказался некто Кнышев:

Пришейте к подушке куриную голову. Готово? А теперь попробуйте обьяснитъ, зачем вы это сделали.
...
Рейтинг: 0 / 0
SQL и ООП
    #34575867
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПрежде всего, изложенная мысль страдает традиционным недостатком - "процесс ради процесса". Не сделано попытки осмыслить цель, понять, чего хочется достичь, либо хотя бы - какие результаты будут достигнуты таким образом, и что в этом хорошего.
Мысль не изложил, виноват. Основная идея сделать SQL более модульным и гибким в разработке больших проектов. Появилась из раздумий какими бы хотелось видеть платформы типа 1C.
Результатов пока нет. Одна теория пока
...
Рейтинг: 0 / 0
SQL и ООП
    #34575890
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafОсновная идея сделать SQL более модульным и гибким в разработке больших проектов.
Замечательно. Раз так, значит, Вы можете назвать серию ситуаций, в который SQL проявляет немодульность и негибкость, и назвать для каждой из них существенно превосходящее решение. Так?
...
Рейтинг: 0 / 0
SQL и ООП
    #34575906
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafРезультатов пока нет. Одна теория пока
Это, уж простите, не теория. Это ближе к еще одной цитате:

Иногда, глядя с крыльца на двор и на пруд, говорил он о том, как бы хорошо было, если бы вдруг от дома провести подземный ход или чрез пруд выстроить каменный мост,....
...
Рейтинг: 0 / 0
SQL и ООП
    #34575945
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Те же грабли
отношение1=отношение2 операция отношение3 - работает
объект1=объект2 операция объект3 - просто чушь
...
Рейтинг: 0 / 0
SQL и ООП
    #34576118
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модТе же грабли
отношение1=отношение2 операция отношение3 - работает
объект1=объект2 операция объект3 - просто чушь
Наверное, при большом желании можно разработать свою строгую алгебру операций над множествами экземпляров (одного класса, различных не связанных классов, связанных различными типами связей классов). Написать прототипчик СУБД, показать, как его можно использовать в реальном проекте. Думаю, правда, что полученная вещь будет слишком сложна для реального использования, но докторскую по ней защитить всё равно будет можно :) .
...
Рейтинг: 0 / 0
SQL и ООП
    #34576148
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenДумаю, правда, что полученная вещь будет слишком сложна для реального использования, но докторскую по ней защитить всё равно будет можно :) .

Объектное расширение SQL уже существует и, например, довольно удачно реализовано в СУБД Оракл. ИМХО, оное, предназначено для работы с объектными БД в традиционном (реляционном) стиле, что полезно, например, для генерации отчётов, для систем разработки, которые не дружат с объектными БД.

Стыковкой объектноориентированных языков программирования с БД занимается Object Management Group (OMG). Эта инициатива направлена на то, чтобы не использовать SQL вообще, хотя бы для того, чтобы прикладная программа разрабатывалась на одном языке программирования.
...
Рейтинг: 0 / 0
SQL и ООП
    #34576276
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf пишет:

Инкапсуляция в БД не совсем возможна.
Во-первых, Инкапсуляция - это слияние данных и кода, невозможность использования
данных без кода. А кода в БД -то и нет. Или придется его туда засунуть. А на
каком он будет языке ?
Во-вторых, БД и инкапсуляция - вообще вещи несовместимые. БД должна хранить
данные, блюсти констрейнты, выполнять транзакции, индексировать данные для
поиска. Инкапсуляция же призвана служить тому, чтобы вместо структурированных
данных имелся лишь абстрактный BLOB с его адресом и размером. В итоге если
в БД применить инкапсуляцию, БД НЕ СМОЖЕТ РАБОТАТЬ С ДАННЫМИ. Потому что
она должна знать их структуру.

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

Почитай материалы ODMG, там все вполне доходчиво...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL и ООП
    #34576300
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВо-вторых, БД и инкапсуляция - вообще вещи несовместимые.
Крайне странное рассуждение. Just for example, updateable view - идеальный пример инкапсуляции в БД.

Более того, можно отметить тот факт, что из тринадцати правил Кодда шесть посвящены именно обеспечению инкапсуляции.

MasterZivИнкапсуляция же призвана служить тому, чтобы вместо структурированных данных имелся лишь абстрактный BLOB с его адресом и размером.
Это, простите, какая-то глупость. Все равно что сказать "инкапсуляция же призвана служить тому, чтобы вместо vector<int> имелся лишь абстрактный void* с размером".

MasterZivв БД применить инкапсуляцию, БД НЕ СМОЖЕТ РАБОТАТЬ С ДАННЫМИ. Потому что
она должна знать их структуру. Так что в объектных БД от инкапсуляции отказываются, вернее сказать, разрешают ее ослаблять.
Мне так представляется, Вы игнорируете тот факт, что понятие "инкапсуляция" относительно, и делаете его чем-то абсолютным.

Рассмотрим простейшую схему: есть объекты А и Б, А использует Б. Для работы А должен знать интерфейс Б, однако, он не публикует ничего из этого интерфейса наружу (не обязан публиковать). С точки зрения пользователя объекта А никакого Б не существует - пользователь его не видит, добраться до него не может.

Таким образом, несмотря на то, что "А довольно много знает о Б" никакого нарушения инкапсуляции не происходит. Теперь осталось соотнести объект Б например с таблицей в реляционной БД. Этот объект Б публикует свой интерфейс (колонки, методы запроса и модификации), и прячет весьма нетривиальную реализацию (которая учитывает, что например date колонки хранятся иначе, чем varchar, а blob - так и вовсе в другом месте). Объект Б пользователю часто недоступен (нет грантов). Вместо него гранты даются на объект А (view или procedure), который отгораживает "детали реализации" вторым слоем.

Как оно в объектных БД - не в курсе, но подозреваю, и для них Ваше высказывание черезчур резко.

MasterZivНо тут однако страшного-то ничего нет,
если сам объект опишит свою структуру и даст работать с ней БД-
что ж плохого ?
А вот тут Вы по сути соглашаетесь с тем, что я расшифровал чуть раньше, и следовательно опровергаете изначальную фразу.
...
Рейтинг: 0 / 0
SQL и ООП
    #34576389
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Naf пишет:

Инкапсуляция в БД не совсем возможна.
Во-первых, Инкапсуляция - это слияние данных и кода, невозможность использования
данных без кода. А кода в БД -то и нет. Или придется его туда засунуть. А на
каком он будет языке ?
Во-вторых, БД и инкапсуляция - вообще вещи несовместимые. БД должна хранить
данные, блюсти констрейнты, выполнять транзакции, индексировать данные для
поиска. Инкапсуляция же призвана служить тому, чтобы вместо структурированных
данных имелся лишь абстрактный BLOB с его адресом и размером. В итоге если
в БД применить инкапсуляцию, БД НЕ СМОЖЕТ РАБОТАТЬ С ДАННЫМИ. Потому что
она должна знать их структуру.

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

Почитай материалы ODMG, там все вполне доходчиво...
Posted via ActualForum NNTP Server 1.4Нигде и ни разу не согласен. :)
...
Рейтинг: 0 / 0
SQL и ООП
    #34577068
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenНаверное, при большом желании можно разработать свою строгую алгебру операций над множествами экземпляров (одного класса, различных не связанных классов, связанных различными типами связей классов).
Это вряд ли. Все отношения принадлежат к одному мн-ву и имеют общие св-ва. На этом построена алгебра. Про объекты разных классов этого не скажешь.
...
Рейтинг: 0 / 0
SQL и ООП
    #34577075
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivИнкапсуляция в БД не совсем возможна.
БД - это набор таблиц, таблица - это переменная. Следовательно их можно инкапсулировать как любые другие переменные. СУБД пытаются делать это своими средствами (ну уж как умеют :)).
...
Рейтинг: 0 / 0
SQL и ООП
    #34577359
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer пишет:

> Это, простите, какая-то глупость. Все равно что сказать "инкапсуляция же
> призвана служить тому, чтобы вместо vector<int> имелся лишь абстрактный
> void* с размером".

Ну почему же ? Собственно кроме возможных методов обработки данных
вектора тип vector<int> ничего не дает нам.

> Мне так представляется, Вы игнорируете тот факт, что понятие
> "инкапсуляция" относительно, и делаете его чем-то абсолютным.

Я не делаю. Я как раз на вашей стороне. И ODMG тоже.
(кстати, по правилам русского языка "вы" надо писать с прописной
буквы).

> нетривиальную реализацию (которая учитывает, что например date колонки
> хранятся иначе, чем varchar, а blob - так и вовсе в другом месте).
> Объект Б пользователю часто недоступен (нет грантов). Вместо него гранты
> даются на объект А (view или procedure), который отгораживает "детали
> реализации" вторым слоем.

Ой, мне лениво читать это. Но кажется вы путаете инкапсуляцию с доменной
целостностью. Ну да ладно.

> Как оно в объектных БД - не в курсе, но подозреваю, и для них Ваше
> высказывание черезчур резко.

> А вот тут Вы по сути соглашаетесь с тем, что я расшифровал чуть раньше,
> и следовательно опровергаете изначальную фразу.

Именно. Я за разумность во всем.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL и ООП
    #34577375
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод пишет:

> БД - это набор таблиц, таблица - это переменная.

Таблица - не переменная, а класс. Запись в таблице - переменная.

Следовательно их можно
> инкапсулировать как любые другие переменные.

Хде ? В БД ? Да, можно, закрыв доступ в БД и разрешив только
например процедуры. Данные внутри БД, внутри таблицы инкапсулировать
нельзя. Потому что СУБД должна с ними работать как-то.
Изолировать один класс от другого с помощью тех же процедур -
можно (и даже иногда нужно), но далеко не всегда эффективно.

СУБД пытаются делать это
> своими средствами (ну уж как умеют :)).

Эт как ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL и ООП
    #34577490
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТаблица - не переменная, а класс. Запись в таблице - переменная.к Дейту однозначно.
...
Рейтинг: 0 / 0
SQL и ООП
    #34577531
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivХде ? В БД ?
Да.

MasterZivДанные внутри БД, внутри таблицы инкапсулировать
нельзя.
Можно.

MasterZivПотому что СУБД должна с ними работать как-то.
Еще один странный аргумент. Полностью аналогичный "данные внутри программы инкапсулировать нельзя, поскольку компилятор должен с ними как-то работать".

Да, таблицы не инкапсулированы от СУБД, а внутренности классов не инкапсулированы от компилятора. Что не мешает тому и другому быть инкапсулированным от "пользователя" - где под пользователем понимается программный модуль, желающий получить сервис.

MasterZivИзолировать один класс от другого с помощью тех же процедур - можно (и даже иногда нужно), но далеко не всегда эффективно.
Эффективность - отдельный вопрос. Точно так же неэффективно использовать get/set методы для доступа к переменной.
...
Рейтинг: 0 / 0
SQL и ООП
    #34578110
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivТаблица - не переменная, а класс. Запись в таблице - переменная.
Таблица - это просто массив в терминах ЯП, т.е одна переменная.
В СУБД есть понятия схем, подсхем, права доступа, view. Суррогат, но все же.
[/quot]
...
Рейтинг: 0 / 0
SQL и ООП
    #34579451
Фотография Анатолий Иванов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модТаблица - это просто массив в терминах ЯП, т.е одна переменная.
В СУБД есть понятия схем, подсхем, права доступа, view. Суррогат, но все же.

Хм. А разве не таблица - класс, а поля таблицы - переменные/свойства/поля класса? Единственно, что методов у таблицы нет своих собственных для работы со своими данными.
...
Рейтинг: 0 / 0
SQL и ООП
    #34579492
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Иванов модТаблица - это просто массив в терминах ЯП, т.е одна переменная.
В СУБД есть понятия схем, подсхем, права доступа, view. Суррогат, но все же.

Хм. А разве не таблица - класс, а поля таблицы - переменные/свойства/поля класса? Единственно, что методов у таблицы нет своих собственных для работы со своими данными.
Таблица - не класс и не... Это просто таблица. Строки ее могут имет ссылки куда-нибудь, а столбцы могут подчиняться каким-то правилам.
...
Рейтинг: 0 / 0
SQL и ООП
    #34580962
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ИвановХм. А разве не таблица - класс, а поля таблицы - переменные/свойства/поля класса?
Действительно, если есть вложенные таблицы, то одна строка корневой таблицы = один объект, поля строки = св-ва этого объекта, таблица - переменная-коллекция объектов одного типа. Но вот является ли эта коллекция классом ?
...
Рейтинг: 0 / 0
SQL и ООП
    #34581808
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv> Мне так представляется, Вы игнорируете тот факт, что понятие
> "инкапсуляция" относительно, и делаете его чем-то абсолютным.

Я не делаю. Я как раз на вашей стороне. И ODMG тоже.
(кстати, по правилам русского языка "вы" надо писать с прописной
буквы).
И что Вы в таком написании нашли ложного?
http://deb.telenet.ru/know/grammar-09.shtml
...
Рейтинг: 0 / 0
SQL и ООП
    #34604341
Дмитрий16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafВыложил свои мысли по этому вопросу
http://mynaf.narod.ru/OQL.html
Прошу обсуждения


Мне не понравился (очень) один момент.
Зачем объеты таскаются целиком? Этоведь эквивалентно "SELECT *"

Я сейчас работаю над наложением объектной структуры на классическом MS SQL и пришел к нескольким выводам:
1. Объекты (ID) отдельно, атрибуты отдельно!
2. Чтение из базы объекта НЕ есть чтение ВСЕХ атрибутов.
3. Множество мелких скалярных запросов противопоставить одному большом селекту.

Обсудим?
...
Рейтинг: 0 / 0
SQL и ООП
    #34604449
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий16
Мне не понравился (очень) один момент.
Зачем объеты таскаются целиком? Этоведь эквивалентно "SELECT *"

Не совсем,
Код: plaintext
SELECT object FROM MyClass INTO: MyObjectVariable
тащит за собой только указатель на объект то есть UID объекта. Ну и еще если запрос на клиента, то магический DisplayName (пользовательское отображение объекта)
Дмитрий16
1. Объекты (ID) отдельно, атрибуты отдельно!
2. Чтение из базы объекта НЕ есть чтение ВСЕХ атрибутов.
3. Множество мелких скалярных запросов противопоставить одному большом селекту.

1. разные таблицы что ли? объект- в вашем понятии только ссылка на него
не кажется ли при этом будет слишком много внешних связей?
2. Согласен, уже написал про это
3. Подробнее здесь, не понял мысли
...
Рейтинг: 0 / 0
SQL и ООП
    #34604717
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий16Я сейчас работаю над наложением объектной структуры на классическом MS SQL
И придете к той же классической декларации о несовместимости :) Не готов к подробному обсуждению, но в "множестве мелких запросов" также нет ровно ничего хорошего.

Нужно просто понимать, что "выборка" - это отдельный, цельный объект, не имеющий "один к одному" ни к объектам в СУБД, ни к объектам на клиенте.
...
Рейтинг: 0 / 0
25 сообщений из 195, страница 1 из 8
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / SQL и ООП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]