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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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