|
|
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
Прежде всего, изложенная мысль страдает традиционным недостатком - "процесс ради процесса". Не сделано попытки осмыслить цель, понять, чего хочется достичь, либо хотя бы - какие результаты будут достигнуты таким образом, и что в этом хорошего. Обсуждение.... признаться, наиболее деликатное, что я могу сказать по этому поводу - "ничего интересного". Более точно на эту тему высказался некто Кнышев: Пришейте к подушке куриную голову. Готово? А теперь попробуйте обьяснитъ, зачем вы это сделали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 17:28 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
softwarerПрежде всего, изложенная мысль страдает традиционным недостатком - "процесс ради процесса". Не сделано попытки осмыслить цель, понять, чего хочется достичь, либо хотя бы - какие результаты будут достигнуты таким образом, и что в этом хорошего. Мысль не изложил, виноват. Основная идея сделать SQL более модульным и гибким в разработке больших проектов. Появилась из раздумий какими бы хотелось видеть платформы типа 1C. Результатов пока нет. Одна теория пока ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 17:36 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
NafОсновная идея сделать SQL более модульным и гибким в разработке больших проектов. Замечательно. Раз так, значит, Вы можете назвать серию ситуаций, в который SQL проявляет немодульность и негибкость, и назвать для каждой из них существенно превосходящее решение. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 17:41 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
NafРезультатов пока нет. Одна теория пока Это, уж простите, не теория. Это ближе к еще одной цитате: Иногда, глядя с крыльца на двор и на пруд, говорил он о том, как бы хорошо было, если бы вдруг от дома провести подземный ход или чрез пруд выстроить каменный мост,.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 17:45 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
Те же грабли отношение1=отношение2 операция отношение3 - работает объект1=объект2 операция объект3 - просто чушь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 17:57 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
модТе же грабли отношение1=отношение2 операция отношение3 - работает объект1=объект2 операция объект3 - просто чушь Наверное, при большом желании можно разработать свою строгую алгебру операций над множествами экземпляров (одного класса, различных не связанных классов, связанных различными типами связей классов). Написать прототипчик СУБД, показать, как его можно использовать в реальном проекте. Думаю, правда, что полученная вещь будет слишком сложна для реального использования, но докторскую по ней защитить всё равно будет можно :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 19:06 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
AlexTheRavenДумаю, правда, что полученная вещь будет слишком сложна для реального использования, но докторскую по ней защитить всё равно будет можно :) . Объектное расширение SQL уже существует и, например, довольно удачно реализовано в СУБД Оракл. ИМХО, оное, предназначено для работы с объектными БД в традиционном (реляционном) стиле, что полезно, например, для генерации отчётов, для систем разработки, которые не дружат с объектными БД. Стыковкой объектноориентированных языков программирования с БД занимается Object Management Group (OMG). Эта инициатива направлена на то, чтобы не использовать SQL вообще, хотя бы для того, чтобы прикладная программа разрабатывалась на одном языке программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 19:28 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
Naf пишет: Инкапсуляция в БД не совсем возможна. Во-первых, Инкапсуляция - это слияние данных и кода, невозможность использования данных без кода. А кода в БД -то и нет. Или придется его туда засунуть. А на каком он будет языке ? Во-вторых, БД и инкапсуляция - вообще вещи несовместимые. БД должна хранить данные, блюсти констрейнты, выполнять транзакции, индексировать данные для поиска. Инкапсуляция же призвана служить тому, чтобы вместо структурированных данных имелся лишь абстрактный BLOB с его адресом и размером. В итоге если в БД применить инкапсуляцию, БД НЕ СМОЖЕТ РАБОТАТЬ С ДАННЫМИ. Потому что она должна знать их структуру. Так что в объектных БД от инкапсуляции отказываются, вернее сказать, разрешают ее ослаблять. Но тут однако страшного-то ничего нет, если сам объект опишит свою структуру и даст работать с ней БД- что ж плохого ? Почитай материалы ODMG, там все вполне доходчиво... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 21:08 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
MasterZivВо-вторых, БД и инкапсуляция - вообще вещи несовместимые. Крайне странное рассуждение. Just for example, updateable view - идеальный пример инкапсуляции в БД. Более того, можно отметить тот факт, что из тринадцати правил Кодда шесть посвящены именно обеспечению инкапсуляции. MasterZivИнкапсуляция же призвана служить тому, чтобы вместо структурированных данных имелся лишь абстрактный BLOB с его адресом и размером. Это, простите, какая-то глупость. Все равно что сказать "инкапсуляция же призвана служить тому, чтобы вместо vector<int> имелся лишь абстрактный void* с размером". MasterZivв БД применить инкапсуляцию, БД НЕ СМОЖЕТ РАБОТАТЬ С ДАННЫМИ. Потому что она должна знать их структуру. Так что в объектных БД от инкапсуляции отказываются, вернее сказать, разрешают ее ослаблять. Мне так представляется, Вы игнорируете тот факт, что понятие "инкапсуляция" относительно, и делаете его чем-то абсолютным. Рассмотрим простейшую схему: есть объекты А и Б, А использует Б. Для работы А должен знать интерфейс Б, однако, он не публикует ничего из этого интерфейса наружу (не обязан публиковать). С точки зрения пользователя объекта А никакого Б не существует - пользователь его не видит, добраться до него не может. Таким образом, несмотря на то, что "А довольно много знает о Б" никакого нарушения инкапсуляции не происходит. Теперь осталось соотнести объект Б например с таблицей в реляционной БД. Этот объект Б публикует свой интерфейс (колонки, методы запроса и модификации), и прячет весьма нетривиальную реализацию (которая учитывает, что например date колонки хранятся иначе, чем varchar, а blob - так и вовсе в другом месте). Объект Б пользователю часто недоступен (нет грантов). Вместо него гранты даются на объект А (view или procedure), который отгораживает "детали реализации" вторым слоем. Как оно в объектных БД - не в курсе, но подозреваю, и для них Ваше высказывание черезчур резко. MasterZivНо тут однако страшного-то ничего нет, если сам объект опишит свою структуру и даст работать с ней БД- что ж плохого ? А вот тут Вы по сути соглашаетесь с тем, что я расшифровал чуть раньше, и следовательно опровергаете изначальную фразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 21:27 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
MasterZiv Naf пишет: Инкапсуляция в БД не совсем возможна. Во-первых, Инкапсуляция - это слияние данных и кода, невозможность использования данных без кода. А кода в БД -то и нет. Или придется его туда засунуть. А на каком он будет языке ? Во-вторых, БД и инкапсуляция - вообще вещи несовместимые. БД должна хранить данные, блюсти констрейнты, выполнять транзакции, индексировать данные для поиска. Инкапсуляция же призвана служить тому, чтобы вместо структурированных данных имелся лишь абстрактный BLOB с его адресом и размером. В итоге если в БД применить инкапсуляцию, БД НЕ СМОЖЕТ РАБОТАТЬ С ДАННЫМИ. Потому что она должна знать их структуру. Так что в объектных БД от инкапсуляции отказываются, вернее сказать, разрешают ее ослаблять. Но тут однако страшного-то ничего нет, если сам объект опишит свою структуру и даст работать с ней БД- что ж плохого ? Почитай материалы ODMG, там все вполне доходчиво... Posted via ActualForum NNTP Server 1.4Нигде и ни разу не согласен. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2007, 23:03 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
AlexTheRavenНаверное, при большом желании можно разработать свою строгую алгебру операций над множествами экземпляров (одного класса, различных не связанных классов, связанных различными типами связей классов). Это вряд ли. Все отношения принадлежат к одному мн-ву и имеют общие св-ва. На этом построена алгебра. Про объекты разных классов этого не скажешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 10:56 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
MasterZivИнкапсуляция в БД не совсем возможна. БД - это набор таблиц, таблица - это переменная. Следовательно их можно инкапсулировать как любые другие переменные. СУБД пытаются делать это своими средствами (ну уж как умеют :)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 11:01 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
softwarer пишет: > Это, простите, какая-то глупость. Все равно что сказать "инкапсуляция же > призвана служить тому, чтобы вместо vector<int> имелся лишь абстрактный > void* с размером". Ну почему же ? Собственно кроме возможных методов обработки данных вектора тип vector<int> ничего не дает нам. > Мне так представляется, Вы игнорируете тот факт, что понятие > "инкапсуляция" относительно, и делаете его чем-то абсолютным. Я не делаю. Я как раз на вашей стороне. И ODMG тоже. (кстати, по правилам русского языка "вы" надо писать с прописной буквы). > нетривиальную реализацию (которая учитывает, что например date колонки > хранятся иначе, чем varchar, а blob - так и вовсе в другом месте). > Объект Б пользователю часто недоступен (нет грантов). Вместо него гранты > даются на объект А (view или procedure), который отгораживает "детали > реализации" вторым слоем. Ой, мне лениво читать это. Но кажется вы путаете инкапсуляцию с доменной целостностью. Ну да ладно. > Как оно в объектных БД - не в курсе, но подозреваю, и для них Ваше > высказывание черезчур резко. > А вот тут Вы по сути соглашаетесь с тем, что я расшифровал чуть раньше, > и следовательно опровергаете изначальную фразу. Именно. Я за разумность во всем. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 12:47 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
мод пишет: > БД - это набор таблиц, таблица - это переменная. Таблица - не переменная, а класс. Запись в таблице - переменная. Следовательно их можно > инкапсулировать как любые другие переменные. Хде ? В БД ? Да, можно, закрыв доступ в БД и разрешив только например процедуры. Данные внутри БД, внутри таблицы инкапсулировать нельзя. Потому что СУБД должна с ними работать как-то. Изолировать один класс от другого с помощью тех же процедур - можно (и даже иногда нужно), но далеко не всегда эффективно. СУБД пытаются делать это > своими средствами (ну уж как умеют :)). Эт как ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 12:51 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
MasterZivТаблица - не переменная, а класс. Запись в таблице - переменная.к Дейту однозначно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 13:16 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
MasterZivХде ? В БД ? Да. MasterZivДанные внутри БД, внутри таблицы инкапсулировать нельзя. Можно. MasterZivПотому что СУБД должна с ними работать как-то. Еще один странный аргумент. Полностью аналогичный "данные внутри программы инкапсулировать нельзя, поскольку компилятор должен с ними как-то работать". Да, таблицы не инкапсулированы от СУБД, а внутренности классов не инкапсулированы от компилятора. Что не мешает тому и другому быть инкапсулированным от "пользователя" - где под пользователем понимается программный модуль, желающий получить сервис. MasterZivИзолировать один класс от другого с помощью тех же процедур - можно (и даже иногда нужно), но далеко не всегда эффективно. Эффективность - отдельный вопрос. Точно так же неэффективно использовать get/set методы для доступа к переменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 13:26 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
MasterZivТаблица - не переменная, а класс. Запись в таблице - переменная. Таблица - это просто массив в терминах ЯП, т.е одна переменная. В СУБД есть понятия схем, подсхем, права доступа, view. Суррогат, но все же. [/quot] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 15:33 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
модТаблица - это просто массив в терминах ЯП, т.е одна переменная. В СУБД есть понятия схем, подсхем, права доступа, view. Суррогат, но все же. Хм. А разве не таблица - класс, а поля таблицы - переменные/свойства/поля класса? Единственно, что методов у таблицы нет своих собственных для работы со своими данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 22:44 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
Анатолий Иванов модТаблица - это просто массив в терминах ЯП, т.е одна переменная. В СУБД есть понятия схем, подсхем, права доступа, view. Суррогат, но все же. Хм. А разве не таблица - класс, а поля таблицы - переменные/свойства/поля класса? Единственно, что методов у таблицы нет своих собственных для работы со своими данными. Таблица - не класс и не... Это просто таблица. Строки ее могут имет ссылки куда-нибудь, а столбцы могут подчиняться каким-то правилам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 23:26 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
Анатолий ИвановХм. А разве не таблица - класс, а поля таблицы - переменные/свойства/поля класса? Действительно, если есть вложенные таблицы, то одна строка корневой таблицы = один объект, поля строки = св-ва этого объекта, таблица - переменная-коллекция объектов одного типа. Но вот является ли эта коллекция классом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 13:57 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
MasterZiv> Мне так представляется, Вы игнорируете тот факт, что понятие > "инкапсуляция" относительно, и делаете его чем-то абсолютным. Я не делаю. Я как раз на вашей стороне. И ODMG тоже. (кстати, по правилам русского языка "вы" надо писать с прописной буквы). И что Вы в таком написании нашли ложного? http://deb.telenet.ru/know/grammar-09.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 17:00 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
NafВыложил свои мысли по этому вопросу http://mynaf.narod.ru/OQL.html Прошу обсуждения Мне не понравился (очень) один момент. Зачем объеты таскаются целиком? Этоведь эквивалентно "SELECT *" Я сейчас работаю над наложением объектной структуры на классическом MS SQL и пришел к нескольким выводам: 1. Объекты (ID) отдельно, атрибуты отдельно! 2. Чтение из базы объекта НЕ есть чтение ВСЕХ атрибутов. 3. Множество мелких скалярных запросов противопоставить одному большом селекту. Обсудим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 12:21 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
Дмитрий16 Мне не понравился (очень) один момент. Зачем объеты таскаются целиком? Этоведь эквивалентно "SELECT *" Не совсем, Код: plaintext Дмитрий16 1. Объекты (ID) отдельно, атрибуты отдельно! 2. Чтение из базы объекта НЕ есть чтение ВСЕХ атрибутов. 3. Множество мелких скалярных запросов противопоставить одному большом селекту. 1. разные таблицы что ли? объект- в вашем понятии только ссылка на него не кажется ли при этом будет слишком много внешних связей? 2. Согласен, уже написал про это 3. Подробнее здесь, не понял мысли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 12:43 |
|
||
|
SQL и ООП
|
|||
|---|---|---|---|
|
#18+
Дмитрий16Я сейчас работаю над наложением объектной структуры на классическом MS SQL И придете к той же классической декларации о несовместимости :) Не готов к подробному обсуждению, но в "множестве мелких запросов" также нет ровно ничего хорошего. Нужно просто понимать, что "выборка" - это отдельный, цельный объект, не имеющий "один к одному" ни к объектам в СУБД, ни к объектам на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 13:39 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=100&tid=1543750]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 421ms |

| 0 / 0 |
