Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> 1. Зачем вам пятьсот однотипных таблиц словарей? Какие пятьсот однотипных таблиц словарей? Вы о чем? Пятьсот таблиц - это собственно и есть содержимое среднего размера базы данных, про организацию словарей я ни слова не сказал. А таблиц связей со словарем, соответственно, двести пятьдесят. > 2. Вас что, двести пятьдесят промежуточных таблиц пугает ? Нет, меня не пугает двести пятьдесят таблиц. Я не буду использовать решение, которое предполагает двести пятьдесят запросов к базе данных для достаточно простой операции. Вы что-то, помнится, говорили про производительность? Эта операция будет использоваться гораздо чаще, чем пример с Вашим отчетом о годовых продажах. Дело в том, что сущностей, которые требуют таких промежуточных таблиц, - даже не десяток. И пользователей такой системы - далеко не десяток. > Тогда вы внутрь SAPов/Peoplesoftов/JDEdvardсов лучше не смотрите, чтоб > кондратий не хватил - там счет таблицам идет на тысячи. Хм... а чего, собственно, критерий - количество таблиц? Кто сказал, что эти лавки с громкими имена используют оптимальную структуру данных? Ну, сидят там индусы-кодеры за относительно небольшие деньги и описывают себе детерминированные системы. И? > Причем, что характерно, работают на любой промышленной БД - Oracle, MS > SQL, Informix, DB2, Sybase... Я за них сильно рад. Вот только лично мне этот факт мои задачи решать как бы совсем никак не помогает. Т. е. абсолютно. Возвращаясь к теме обсуждения (напомню, речь шла об объектных надстройках): по моему мнению, есть ряд задач, которые не рационально решать традиционными для реляционных СУБД способами и структурами данных. Вот именно для решения таких задач реляционным СУБД необходима некая надстройка (объектная, квазиобъектная, постреляционная - это все не отражает ни ее назначения, ни функциональных особенностей). Не универсальное хранилище, универсальный классификатор, идеальная система и пр., - а механизм, позволяющий оптимизировать описание данных. Возражения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2005, 21:47 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Я все еще не вижу примера таких задач. Вы мне изложили не постановку, а свое понимание реализации - через какое-то поле связи всего со всеми. Вы попытайтесь _внятно_ рассказать, что надо сделать, а как это сделать без двухсотпятидесяти таблиц в одном запросе мы уж придумаем. Попробуйте обойтись без слов "сущность", "объект" и "связь" - замените их на что-то типа "Вася", "яблоко" и "принадлежит". А как только мы услышим пример задачи, которую нерационально решать реляционными методами - так сразу и перейдем к обсуждению альтернативных методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2005, 22:01 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Все правильно. Теперь считаем. Как я и говорил, база данных среднего размера (единицы сотен таблиц; для определенности примем 500). Пусть это отношение имеет смысл для половины сущностей (опустили служебные таблицы и связи). Получаем 250 (двести пятьдесят) промежуточных таблиц. Создали таблицы, заполнили их. Теперь выбираем сущности, связанные с определенным словом. Как по-Вашему, какие проблемы меня здесь ждут? Зачем вы разнесли сущности по пятистам таблицам ? У вас что, 500 разных словарей, и вы ищете слово по всем словарям ? Почему не поместить сущности в одну таблицу ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2005, 22:07 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Я все еще не вижу примера таких задач. ;) Извините, но лучше, чем я уже сформулировал, я сформулировать не могу. Давайте спишем это на мою косноязычность. > Вы мне изложили не постановку, а свое понимание реализации - через какое-то > поле связи всего со всеми. Ни о каких полях связи "всего со всеми" речи не было, откуда Вы это взяли? > Вы попытайтесь _внятно_ рассказать, что надо сделать, а как это сделать без > двухсотпятидесяти таблиц в одном запросе мы уж придумаем. А чем пример со словарем не годится? > Попробуйте обойтись без слов "сущность", "объект" и "связь" - замените их на > что-то типа "Вася", "яблоко" и "принадлежит". "Объект" я стараюсь не употреблять, поскольку для использования этого термина применительно к реляционным СУБД необходимо уточнять, о чем речь, - очень уж неоднозначно его можно интерпретировать. А "сущность" и "связь" - это как бы устоявшиеся термины; всегда думал, что они понимаются однозначно. ОК, еще раз про словарь. Есть база данных (тематика, структура - не важны). В этой базе данных есть некий словарь (иностранных слов, толковый, - неважно), который состоит из одной таблицы (его структура роли не играет). Необходимо связать этот словарь (т. е. таблицу словаря) со всеми другими таблицами этой базы данных (предположим, что такая связь имеет смысл для всех таблиц) отношением n:m в предположении, что любому слову в любой таблице может быть сопоставлено некоторое слово (в общем случае несколько) из словаря. Так нормально? > Зачем вы разнесли сущности по пятистам таблицам ? У вас что, 500 разных > словарей, и вы ищете слово по всем словарям ? Почему не поместить сущности > в одну таблицу ? Нет, словарь у меня один. ;) А вот других таблиц с остальными данными - пятьсот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2005, 22:40 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
1. Вы опять излагаете свою реализацию, а не постановку. 2. Если лень заводить 250 промежуточных таблиц - заведите одну, где будет дополнительно указываться "имя связанной таблицы". 3. Если вам надо выбрать записи из 500 таблиц, то вы явно не продумали структуру базы. Но если вам прям позарез хочется это сделать, то вы можете либо выполнить 500 запросов, либо один Union запрос с 500 подзапросами. Второй вариант - для тех любителей острых ощущений, которые считают, что у оптимизатора их субд отменное здоровье и крепкие нервы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2005, 22:58 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> 2. Если лень заводить 250 промежуточных таблиц - заведите одну, где будет > дополнительно указываться "имя связанной таблицы". Нет, не лень. Просто смысла нет заводить 250 лишних таблиц. А вот одна таблица - это хорошо, только тогда как быть с ссылочной целостностью? А удаление/добавление/хранение истории? А версионность структуры данных? > 3. Если вам надо выбрать записи из 500 таблиц, то вы явно не продумали > структуру базы. Уверяю Вас, это не так. 3 н. ф. - как норма проектирования. > Но если вам прям позарез хочется это сделать, то вы можете либо выполнить 500 > запросов, либо один Union запрос с 500 подзапросами. Не хочу. Эффект разреженной матрицы: запрос вернет очень немного записей. Из пушки по воробьям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2005, 23:23 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
guest_20040621> 2. Если лень заводить 250 промежуточных таблиц - заведите одну, где будет > дополнительно указываться "имя связанной таблицы". Нет, не лень. Просто смысла нет заводить 250 лишних таблиц. А вот одна таблица - это хорошо, только тогда как быть с ссылочной целостностью? А удаление/добавление/хранение истории? А версионность структуры данных? > 3. Если вам надо выбрать записи из 500 таблиц, то вы явно не продумали > структуру базы. Уверяю Вас, это не так. 3 н. ф. - как норма проектирования. > Но если вам прям позарез хочется это сделать, то вы можете либо выполнить 500 > запросов, либо один Union запрос с 500 подзапросами. Не хочу. Эффект разреженной матрицы: запрос вернет очень немного записей. Из пушки по воробьям. 3 нф - не панацея от неправильного проектирования. Если у вас однотипная информация разбросана по 500 таблицам - то со структурой явно что-то не так. Не вижу никаких проблем с удалением, добавлением и изменением записей - все как обычно, транзакцию открыли, добавили в одну, вторую, промежуточную - транзакцию закрыли. Если так хочется ссылочной целостности - в каждой из пятисот таблиц заведите FK на промежуточную таблицу, PK сделайте глобально уникальными - назначайте со сдвигом в 1000 для каждой таблицы (в первой - 1, 1001, 2001..., во второй - 2, 2002, 2003...). С внезапно возникшей версионностью делайте что хотите, обычно она нахрен не нужна, но если сильно хочется - заводите архивы. Если так сильно ломает опрашивать все пятьсот таблиц - заведите одну и в ней храните, в какой таблице слово встречается. Потом динамически генерируйте селекты и вперед. Я одно не пойму - куда вы клоните ? Сначала вы рассовали однородную информацию в пятьсот мест, а теперь жалуетесь, что ее трудно собирать. Ну дык ! А когда вам говорят, что не надо ее рассовывать - вы меня уверяете, что все сделано правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 00:13 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> 3 нф - не панацея от неправильного проектирования. > Если у вас однотипная информация разбросана по 500 таблицам - то со > структурой явно что-то не так. С чего Вы взяли, что я разбросал однотипные данные по 500 таблицам? - нет, все хорошо и с нормализацией, и с описанием. > Не вижу никаких проблем с удалением, добавлением и изменением записей - > все как обычно, транзакцию открыли, добавили в одну, вторую, > промежуточную - транзакцию закрыли. Да я тоже проблем не вижу. Хотелось, чтобы Вы это сформулировали. ;) > Если так хочется ссылочной целостности ;) > - в каждой из пятисот таблиц заведите FK на промежуточную таблицу, PK > сделайте глобально уникальными - назначайте со сдвигом в 1000 для каждой > таблицы (в первой - 1, 1001, 2001..., во второй - 2, 2002, 2003...). Не пойдет. Никто не гарантирует, что 1000 записей для одной таблицы хватит. > С внезапно возникшей версионностью делайте что хотите, обычно она нахрен > не нужна, но если сильно хочется - заводите архивы. ;)) Хм... у меня версионность внезапно не возникает. На самом деле еще много подзадач есть; мы ж не конкретный проект обсуждаем, а все-таки надстройку, правда? - чего ж я буду несущественными деталями грузить? О чем это я? Ага, версионность. Мне казалось, что обычно она как раз нужна. Ладно, забудем версионность. > Если так сильно ломает опрашивать все пятьсот таблиц - заведите одну и в > ней храните, в какой таблице слово встречается. Потом динамически > генерируйте селекты и вперед. ;) Н-да, про версионность я рановато забыл. В общем, Вы так или иначе сказали то, чего я от Вас добивался: используем одну таблицу. В общем неважно, что и как там хранить, имена таблиц со словами и идентификаторами или просто идентификаторы; отметим факт: имеем некоторую таблицу, которая по некоторым правилам позволяет нам связывать таблицы базы данных. > Я одно не пойму - куда вы клоните? Все, уже закончил клонить. ;) Берем предложенное Вами возможное решение: используем одну таблицу для связей между "супертаблицей" и остальными таблицами базы данных. Весь требуемый функционал (ссылочную целостность, апдейты, динамические запросы и пр.) реализуем за пределами базы данных. Собственно, получили часть той надстройки, о которой я говорил. ;)) Я всего лишь чуть видоизменил _предложенное Вами_ решение. ;)) Возражения? > Сначала вы рассовали однородную информацию в пятьсот мест, а теперь > жалуетесь, что ее трудно собирать. Да не рассовывал я ее никуда. Если мой пример не нравится, возьмите любую Вашу базу данных и попробуйте подключить к ней словарь. Ко всем таблицам, где это имеет смысл. Не то же самое получилось? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 01:36 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
guest_20040621> 3 нф - не панацея от неправильного проектирования. > Если у вас однотипная информация разбросана по 500 таблицам - то со > структурой явно что-то не так. С чего Вы взяли, что я разбросал однотипные данные по 500 таблицам? - нет, все хорошо и с нормализацией, и с описанием. > Не вижу никаких проблем с удалением, добавлением и изменением записей - > все как обычно, транзакцию открыли, добавили в одну, вторую, > промежуточную - транзакцию закрыли. Да я тоже проблем не вижу. Хотелось, чтобы Вы это сформулировали. ;) > Если так хочется ссылочной целостности ;) > - в каждой из пятисот таблиц заведите FK на промежуточную таблицу, PK > сделайте глобально уникальными - назначайте со сдвигом в 1000 для каждой > таблицы (в первой - 1, 1001, 2001..., во второй - 2, 2002, 2003...). Не пойдет. Никто не гарантирует, что 1000 записей для одной таблицы хватит. > С внезапно возникшей версионностью делайте что хотите, обычно она нахрен > не нужна, но если сильно хочется - заводите архивы. ;)) Хм... у меня версионность внезапно не возникает. На самом деле еще много подзадач есть; мы ж не конкретный проект обсуждаем, а все-таки надстройку, правда? - чего ж я буду несущественными деталями грузить? О чем это я? Ага, версионность. Мне казалось, что обычно она как раз нужна. Ладно, забудем версионность. > Если так сильно ломает опрашивать все пятьсот таблиц - заведите одну и в > ней храните, в какой таблице слово встречается. Потом динамически > генерируйте селекты и вперед. ;) Н-да, про версионность я рановато забыл. В общем, Вы так или иначе сказали то, чего я от Вас добивался: используем одну таблицу. В общем неважно, что и как там хранить, имена таблиц со словами и идентификаторами или просто идентификаторы; отметим факт: имеем некоторую таблицу, которая по некоторым правилам позволяет нам связывать таблицы базы данных. > Я одно не пойму - куда вы клоните? Все, уже закончил клонить. ;) Берем предложенное Вами возможное решение: используем одну таблицу для связей между "супертаблицей" и остальными таблицами базы данных. Весь требуемый функционал (ссылочную целостность, апдейты, динамические запросы и пр.) реализуем за пределами базы данных. Собственно, получили часть той надстройки, о которой я говорил. ;)) Я всего лишь чуть видоизменил _предложенное Вами_ решение. ;)) Возражения? > Сначала вы рассовали однородную информацию в пятьсот мест, а теперь > жалуетесь, что ее трудно собирать. Да не рассовывал я ее никуда. Если мой пример не нравится, возьмите любую Вашу базу данных и попробуйте подключить к ней словарь. Ко всем таблицам, где это имеет смысл. Не то же самое получилось? ;) С генерированием уникального ключа вы не поняли - я предлагаю не диапазон ключей выделать (1-1000 для первой таблицы, 1001-2000 для второй) а сдвиг и номер : для первой таблицы последние три разряда всегда 001, для второй - 002 и т.д. Так что для тысячи таблиц такой схемы вам должно хватить, а нет - увеличьте сдвиг. Я последний раз повторяю : в нормально спроектированной системе не бывает запросов к пятистам таблицам одновременно. Можете принять это за аксиому. Или лучше поступим как с адиском - вы рассказываете условие, я придумываю схему без пятисот таблиц , мы сверяем производительность. И какой такой словарь вы все время пытаетесь подключить "ко всем таблицам" ? Словарь чего ? Чем вас не устраивают systables / syscolumns ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 01:56 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> С генерированием уникального ключа вы не поняли - я предлагаю не диапазон > ключей выделать (1-1000 для первой таблицы, 1001-2000 для второй) а сдвиг и > номер: Да, действительно не понял. ОК, снимается. > Я последний раз повторяю : в нормально спроектированной системе не бывает > запросов к пятистам таблицам одновременно. Можете принять это за аксиому. Вот здесь я с Вами абсолютно согласен. Действительно не бывает. Но связать эти пятьсот таблиц между собой - просто необходимо. ;)) > Или лучше поступим как с адиском - вы рассказываете условие, я придумываю > схему без пятисот таблиц , мы сверяем производительность. У Вас содержимое баз данных на русском языке? Подключите к любой из Ваших баз данных словарь Ожегова. Любым образом. Ничего сверять не нужно, нужна только схема. > И какой такой словарь вы все время пытаетесь подключить "ко всем таблицам"? > Словарь чего ? Чем вас не устраивают systables / syscolumns ? ;) Да при чем здесь системные таблицы? Я ж говорю, просто обычный языковой словарь. Как пример. Не хотите словарь, - давайте представим, что есть куча картинок, документов или еще чего. Что больше нравится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 02:16 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Предлагаю опустить голову в пустую бочку и закричать: "Оу-а-а! Пятьсот табли-и-иц!", а оппоненту в это же время колотить по бочке палкой, стараясь его перешуметь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 04:43 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
guest_20040621 > Я последний раз повторяю : в нормально спроектированной системе не бывает > запросов к пятистам таблицам одновременно. Можете принять это за аксиому. Вот здесь я с Вами абсолютно согласен. Действительно не бывает. Но связать эти пятьсот таблиц между собой - просто необходимо. ;)) > Или лучше поступим как с адиском - вы рассказываете условие, я придумываю > схему без пятисот таблиц , мы сверяем производительность. У Вас содержимое баз данных на русском языке? Подключите к любой из Ваших баз данных словарь Ожегова. Любым образом. Ничего сверять не нужно, нужна только схема. > И какой такой словарь вы все время пытаетесь подключить "ко всем таблицам"? > Словарь чего ? Чем вас не устраивают systables / syscolumns ? ;) Да при чем здесь системные таблицы? Я ж говорю, просто обычный языковой словарь. Как пример. Не хотите словарь, - давайте представим, что есть куча картинок, документов или еще чего. Что больше нравится? Я как-то слабо понимаю что такое "подключите" в вашей трактовке. Если вы собираетесь каждое текстовое поле проверять на наличие в словаре, то (забыв про различные формы одного слова) достаточно навесить триггер на вставку. Поскольку словарь - вещь статичная, то никаких каскадных удалений и RI не надо. А если вас интересует, в каких таблицах встречается данное слово - то заведите себе козу, пардон, таблицу формата слово/таблица, и вставляйте туда записи при insert в любую из ваших таблиц. В чем проблема-то ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 05:08 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Я как-то слабо понимаю что такое "подключите" в вашей трактовке. Поздно было, спать хотелось. Под "подключить" имелись в виду связи. И связи не между таблицами, а связи к словарю, конечно же. > Если вы собираетесь каждое текстовое поле проверять на наличие в словаре, Yes! Получилось. ;)) > то (забыв про различные формы одного слова) достаточно навесить триггер на > вставку. Не, забывать про различные формы слова мы не будем. Будем корректны. Триггеры - триггерами, а связи нужны для того, чтобы иметь возможность сделать обратную выборку. Т. е. знать, в каких таблицах выбранное из словаря слово встречается. > Поскольку словарь - вещь статичная, то никаких каскадных удалений и RI не > надо. Ну, положим, словарь действительно относительно статичный. Но данным в остальных таблицах ничто меняться не мешает. ;) > А если вас интересует, в каких таблицах встречается данное слово - то > заведите себе козу, пардон, таблицу формата слово/таблица, и вставляйте > туда записи при insert в любую из ваших таблиц. В чем проблема-то ? Да нет проблем. ;) Вы снова предложили решение с одной таблицей. Так я ж об этом Вам и пытался рассказать с самого начала. ;)) Т. е. в результате _Ваших умозаключений_ мы пришли к решению, которое 1. не является типовым для реляционной базы данных, 2. тем не менее хорошо формализуется и может быть реализовано в виде внешнего (к базе данных) модуля. Теперь, надеюсь, нет возражений? ;)) Вы же все сами сформулировали, - я только немного _Ваше решение_ причесал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 12:15 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Статья относящаяся как раз к теме топика. http://www.ibase.ru/devinfo/oop_rdbms.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 12:44 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Думаю не только мне интересна тема данного форума. И поэтому вот еще ссылка про ОО над РБД: http://www.stikriz.narod.ru/art/oobd.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 15:09 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Реализвал вариант БД с одной таблицей. (где все данные зранятся в одной таблице) эксперимент проводил на FoxPro Для разных типов данных были созданы поля и витоге таблица с данными выглядела так: id_s - Numeric(20) код экземпляра id_p - Character (20) код свойства экземпляра (символьный) для чисел data_N - numeric(20,5) для строк data_С - character (50) для дат data_D - date Все как и описывал в предыдущих постах. Заполнил таблицу как кто-то предлагал выше: customers (id, name)- 100 000 записей orders (id, id_cust, sum, date, state)- 1 000 000 записей Получилось 6 200 000 строк! По 2 строки на 100 000 customers'ов и по 6 записей на 1 000 000 строк orders) Базу проиндексировал по всем полям. Чертовкси долго это проиходило. База заняла 450 Мегабайт. (без индеков) Конечно, из-за лишних полей. Требовалось получить сумму свойства sum с условиями state="Y" date between {^2004/01/01} and {^2004/12/31} с группировкой по customer'ам Работало около 10 секунд. (Cel-4 2200M / ОЗУ 512М ) Работаю над оптимизацией. Как снова буду на работе вышлю код программы с запросами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 15:36 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
2 adisk : Я знал, что вам понравятся 6 миллионов записей :-) Как насчет select ? фокс фоксом, но хотелось бы увидеть текст запроса на SQL. И, кстати, поля разных типов неплохо бы разнести по разным таблицам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 17:34 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Я как-то слабо понимаю что такое "подключите" в вашей трактовке. Поздно было, спать хотелось. Под "подключить" имелись в виду связи. И связи не между таблицами, а связи к словарю, конечно же. > Если вы собираетесь каждое текстовое поле проверять на наличие в словаре, Yes! Получилось. ;)) > то (забыв про различные формы одного слова) достаточно навесить триггер на > вставку. Не, забывать про различные формы слова мы не будем. Будем корректны. Триггеры - триггерами, а связи нужны для того, чтобы иметь возможность сделать обратную выборку. Т. е. знать, в каких таблицах выбранное из словаря слово встречается. > Поскольку словарь - вещь статичная, то никаких каскадных удалений и RI не > надо. Ну, положим, словарь действительно относительно статичный. Но данным в остальных таблицах ничто меняться не мешает. ;) > А если вас интересует, в каких таблицах встречается данное слово - то > заведите себе козу, пардон, таблицу формата слово/таблица, и вставляйте > туда записи при insert в любую из ваших таблиц. В чем проблема-то ? Да нет проблем. ;) Вы снова предложили решение с одной таблицей. Так я ж об этом Вам и пытался рассказать с самого начала. ;)) Т. е. в результате _Ваших умозаключений_ мы пришли к решению, которое 1. не является типовым для реляционной базы данных, 2. тем не менее хорошо формализуется и может быть реализовано в виде внешнего (к базе данных) модуля. Теперь, надеюсь, нет возражений? ;)) Вы же все сами сформулировали, - я только немного _Ваше решение_ причесал. Проверка на наличие в глобальном словаре - это не совсем связь. Так что 250 промежуточных таблиц вам изначально были не нужны. Как и RI, целостность изменений, версионность и прочие страсти, которые вы рассказывали. Не вижу ничего, что делает эту задачу неудобной для реляционной бд. И решение совершенно типовое, первое, что приходит в голову. Над такими решениями проектировщик вобще не должен задумываться. Так что пардон, но ваш пример лично мне ничего не доказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 17:45 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Проверка на наличие в глобальном словаре - это не совсем связь. А где я связь считал тождественной проверке? > Так что 250 промежуточных таблиц вам изначально были не нужны. Мне - действительно не нужны. Я уже говорил, что не буду пользоваться таким решением. > Как и RI, целостность изменений, версионность и прочие страсти, которые вы > рассказывали. Напрасно Вы решили, что ссылочная целостность мне не нужна. Я бы сказал, что в контексте обсуждения - это краеугольная штука. Версионность (а также разделение доступа, локализация, хранение истории изменений и пр. "страсти") на самом деле реально используется в этой задаче. Так что Ваш вывод - мимо кассы. ;) Но к обсуждению они действительно не имеют отношения, так что их можно было не упоминать. Ну, сказал и сказал, большой проблемы я в этом не вижу. > Не вижу ничего, что делает эту задачу неудобной для реляционной бд. И решение > совершенно типовое, первое, что приходит в голову. Над такими решениями > проектировщик вобще не должен задумываться. Так что пардон, но ваш пример > лично мне ничего не доказал. Хм... а и не было желания ничего никому доказать. ;) Было желание заставить Вас предложить такое решение, которое невозможно было бы описать в терминах "сущность" - "связь" без системных таблиц. Чего Вы очень не хотели, настаивая на традиционном связывании сущностей. Но что, собственно, практически без труда и получилось. ;) А нашли Вы в этом какие-то доказательства чего-то или не нашли, - мне лично совершенно наплевать. ;) Ы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 18:20 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Проверка на наличие в глобальном словаре - это не совсем связь. А где я связь считал тождественной проверке? > Не вижу ничего, что делает эту задачу неудобной для реляционной бд. И решение > совершенно типовое, первое, что приходит в голову. Над такими решениями > проектировщик вобще не должен задумываться. Так что пардон, но ваш пример > лично мне ничего не доказал. Хм... а и не было желания ничего никому доказать. ;) Было желание заставить Вас предложить такое решение, которое невозможно было бы описать в терминах "сущность" - "связь" без системных таблиц. Чего Вы очень не хотели, настаивая на традиционном связывании сущностей. Но что, собственно, практически без труда и получилось. ;) А нашли Вы в этом какие-то доказательства чего-то или не нашли, - мне лично совершенно наплевать. ;) Ы? Ну если вы согласны, что проверка наличия не есть связь, то в вашей задаче, увы, нет проблемы "сущность-связь". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 20:01 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Ну если вы согласны, что проверка наличия не есть связь, Кто с этим спорил? > то в вашей задаче, увы, нет проблемы "сущность-связь". Хех, да и проблемы-то такой нет. Т. е. вообще. Как класса. Н-да... жаль, что мы говорим на разных языках. Извините, но у меня нет ни желания, ни возможности пересказывать курс проектирования баз данных. Спасибо за обсуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 20:21 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
guest_20040621> 2. Если лень заводить 250 промежуточных таблиц - заведите одну, где будет > дополнительно указываться "имя связанной таблицы". Нет, не лень. Просто смысла нет заводить 250 лишних таблиц. А вот одна таблица - это хорошо, только тогда как быть с ссылочной целостностью? А удаление/добавление/хранение истории? А версионность структуры данных? > 3. Если вам надо выбрать записи из 500 таблиц, то вы явно не продумали > структуру базы. Уверяю Вас, это не так. 3 н. ф. - как норма проектирования. > Но если вам прям позарез хочется это сделать, то вы можете либо выполнить 500 > запросов, либо один Union запрос с 500 подзапросами. Не хочу. Эффект разреженной матрицы: запрос вернет очень немного записей. Из пушки по воробьям. Возможно я смогу решить ваши проблемы, если они примут форму коммерческого проекта. Иногда проще просто сделать чем теоретизировать, кто то же бывает первым ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2005, 13:35 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Возможно я смогу решить ваши проблемы, если они примут форму коммерческого > проекта. Ваша квалификация вызывает сомнения в том, что Вы хотя бы поняли, о чем речь. > Иногда проще просто сделать чем теоретизировать, кто то же бывает первым Для начала Вам неплохо было бы поиметь хотя бы небольшое представление о проектировании. А уж потом браться за коммерческие проекты. А со своими проблемами я как-нибудь сам разберусь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2005, 13:56 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Честно говоря теперь вы произвели на меня впечатление просто канцеляриста, которых во все времена было великое множество! Но вот создали они хоть что-нибудь? Во первых со скрытым забралом, а это явный признак не дискутировать и не замечать. Стремление скрыться тоже о чем то говорит. Ну и как водится ...мимикрия, т.е. человек усваивает определенное количество фраз и ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2005, 17:07 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Модератору: сообщение не флейма ради, но исключительно сохранения статус кво для. > Честно говоря теперь вы произвели на меня впечатление просто канцеляриста, Дружище, мне абсолютно наплевать, какое впечатление я на Вас произвел и почему. Не нужно прятать за словоблудием недостаток знаний. Не нужно браться за работу, которую Вы представления не имеете как делать. Не нужно использовать обсуждение для получения работы. Хотите кушать - есть форум "работа", там и развлекайтесь. Пожалуйста, не утруждайте себя комментариями, - потратьте это время с пользой, например, прочтите что-нибудь полезное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2005, 18:49 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32856098&tid=1545998]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
4ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 413ms |

| 0 / 0 |
