|
|
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
Приложение разрабатываеться на базе Delphi 6.0. Проблема следующая. Есть две реляционные БД. Одна - база с договорами. Вторая - база с платежами по данным договорам. Как по одному договору может быть несколько платежей, так и один платеж может быть по нескольким договорам. Т.е. необходимо реализовать связь многие ко многим. Насколько мне известно, общепринятого решения этой задачи нет. Идей две. Обе мне не нравятся, так что если есть более простое решение или другие альтернативные пути решения просьба поделиться. Первый путь: Создаеться промежуточная база которая с каждой из БД в отношении один к одному. Т.е. она связывает одну запись платежей с одной записью договоров. Дальше уже дело построения запроса. Плюсы - кое как решает проблему. Минусы - громоздко и ужасно неудобно, некоторые ограничения при обработке. Второй путь: Поле в базе договоров, ссылающееся на ключ в проплатах делается типа Memo и каждый ключ проплат заноситься новой строкой, заключенной в какие-нибудь специфические символы (для удобства дальнейшего использования с like). Плюсы - опять же кое-какое решение проблемы, и никаких ограничений в обработке. Минусы - довольно сложный код, по сравнению с другими видами связей, громоздко. Кто-то решал подобные задачи? Делитесь :) p.s. Может уже вопрос поднимался. Но поиск по форуму результатов не дал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 21:32 |
|
||
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
MelancholicV Думаю, как только Вы начнете решать задачу не на Delphi, а на SQL, Вы обнаружите, что все совсем не так, как Вы оцениваете. И, кстати, не стоит употреблять слово "база" в значении слова "таблица". MelancholicVp.s. Может уже вопрос поднимался. Но поиск по форуму результатов не дал. Это был какой-то неправильный поиск. Только я раза два отвечал в подобных темах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 21:50 |
|
||
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
softwarer MelancholicV Думаю, как только Вы начнете решать задачу не на Delphi, а на SQL, Вы обнаружите, что все совсем не так, как Вы оцениваете. И, кстати, не стоит употреблять слово "база" в значении слова "таблица". MelancholicVp.s. Может уже вопрос поднимался. Но поиск по форуму результатов не дал. Это был какой-то неправильный поиск. Только я раза два отвечал в подобных темах. Спасибо. Я еще поищу. Но если те два ответа были похожи на этот, то информативности НОЛЬ. Благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 21:52 |
|
||
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
Table1 ID Table2 ID Table1_2 ID_Table1 ID_Table2 AnotherTable ID ID_Table1 ID_Table2 Если об этом то это случай 1. С промежуточной таблицей, базой, чем кому угодно. Громоздко. Ищется как раз более простое и элегантное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 21:58 |
|
||
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
А что громоздкого в стандартном подходе (с промежуточной таблицей)? Вариациями на эту тему является использование VARRAY или NESTED TABLE в Oracle. Подход с помощью Memo - бред. Ну если только для информационных целей, но никак не для поиска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 23:02 |
|
||
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
В случае возможности реализации вложеного запроса никаких проблем нет. Table1 ID Table2 ID AnotherTable ID ID_Table1 ID_Table2 Select * From Table2 Where ID IN (Select ID_Table2 From Another Where ID_Table1 = :ID) ,дге :ID - параметр с значением текущего ключа в Table1. А вот если вложеные запросы не поддерживаются... Тогда, лично у меня при, скажем, перемещении по таблице 1, возникает необходимость програмного перебора промежуточной таблицы для выбора всех необходимых записей Таблицы 2. Что очень неудобно. Вариант же с Мэмо позволяет этого избежать, и совершенно спокойно реализовать запрос без необходимости перебора. Но тогда проблемы с организацией занесения ключей в это самое Мэмо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 08:59 |
|
||
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
MelancholicVВ случае возможности реализации вложеного запроса никаких проблем нет. Table1 ID Table2 ID AnotherTable ID ID_Table1 ID_Table2 Select * From Table2 Where ID IN (Select ID_Table2 From Another Where ID_Table1 = :ID) ,дге :ID - параметр с значением текущего ключа в Table1. А вот если вложеные запросы не поддерживаются... Тогда, лично у меня при, скажем, перемещении по таблице 1, возникает необходимость програмного перебора промежуточной таблицы для выбора всех необходимых записей Таблицы 2. Что очень неудобно. Вариант же с Мэмо позволяет этого избежать, и совершенно спокойно реализовать запрос без необходимости перебора. Но тогда проблемы с организацией занесения ключей в это самое Мэмо. Никакие вложенные запросы не нужны: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 10:27 |
|
||
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
MelancholicVИщется как раз более простое и элегантное решение.Вы увидите что оно и есть - простое и элегантное, симметричное . Например, когда будете связывать счета-фактуры по договорам с платежами идя от платежа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 11:17 |
|
||
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
MelancholicVесли есть более простое решение или другие альтернативные пути решения просьба поделиться. Первый путь: ... Второй путь: ...С такими взглядами следует рассмотреть возможность применения ООБД, я серьезно. Их много в природе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:13 |
|
||
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
нет, с таким взглядом нужно учебник какой-нить полистать Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 17:07 |
|
||
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
1024 нет, с таким взглядом нужно учебник какой-нить полистать Учебник это во многом перечень общепринятых стереотипов (паттернов проектирования) Судя по применяемой терминологии, ИМХО, паттерны проектирования объектных моделей будут гораздо ближе к изложенным взглядам, чем патеррны, применяемые при проектировании РБД. Рекомендую документацию по ОБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 15:06 |
|
||
|
Связь многие ко многим
|
|||
|---|---|---|---|
|
#18+
при проектировании РБД. Рекомендую документацию по ОБД. ---------- стереотип это некое мнение не подтверждённое ни теорией ни практикой. В учебниках обычно такого стараются не допускать Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 15:14 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33621937&tid=1542926]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
174ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 507ms |

| 0 / 0 |
