|
|
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
korda Николай , верно ли, что циклические ссылки - это плохо продуманный дизайн модели данных и без них всегда можно обойтись? Я не иронизирую, я просто спрашиваю.А как вы собираетесь, например, изображать иерархические справочники? Они ссылаются сами на себя - цикл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 14:46 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
korda Николай1 При построении таблицы ассоциаций необходимо помнить о циклических ссылках и предпринимать меры по избежанию зацикливания. Николай , верно ли, что циклические ссылки - это плохо продуманный дизайн модели данных и без них всегда можно обойтись? Я не иронизирую, я просто спрашиваю. Не видел ни одной базы без циклических ссылок. Например - филиалы и контрагенты. В циклических ссылках нет проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 15:40 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
BelyА как вы собираетесь, например, изображать иерархические справочники? Они ссылаются сами на себя - цикл. Опередили :) Наличие иерархических справочников ставит на все затею жирный крест. На самом деле автору нужно подумать о системе навигации по своим данным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 16:47 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
_мод BelyА как вы собираетесь, например, изображать иерархические справочники? Они ссылаются сами на себя - цикл. Опередили :) Наличие иерархических справочников ставит на все затею жирный крест. На самом деле автору нужно подумать о системе навигации по своим данным. Я понял, что циклические ссылки - явление совершенно законное и полезное. Так что, никакого креста... Просто, нужно учесть это. Алиасы для имен таблиц, разве не для подобных случаев выход? Если таблица ссылается на саму себя, то в одном предложении SQL она будет помечена различными алиасами T1 и T2, например. Или я что-то упускаю из вида? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 19:37 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Начал я анализировать ситуацию с циклическими ссылками... Например, таблица, в которой одно из полей ссылается на другую запись этой-же таблицы, а та, другая запись в свою очередь может ссылаться ещё на какую нибудь запись, опять-же из этой самой таблицы. И так можно линковать "до бесконечности"... Получается, что количество полей такого запроса в общем случае неопределено и в каком-то смысле зависит от количества записей в таблице. Понятно, что такая таблица, растущая по-горизонтали в бесконечность меня не устраивает. Этот рост можно искусственно ограничить, ограничив уровень "прилинковки" ссылок каким-то определенным значением. И это значение "напрашивается" быть равным единице. (Потому что, если это будет 2, 3 или 33, будет очень трудно объяснить логику по которой оно выбрано). Я пишу может быть излишне подробно, чтобы избежать разночтений. Итак, циклические ссылки ограничены первым уровнем. Это означает, что в таблице "Пассажиры самолета" мы имеем две записи: Иван Иванович, у которого дочь Наташа и запись самой дочери Ивана Ивановича т.е. Наташи. Если у Наташи тоже есть свои дети, то они в записи Ивана Ивановича отображаться не будут, а сама Наташа - будет. Здесь присутствует ещё один аспект. В записи Наташи будут ссылки на различные справочники, так вот, эти ссылки тоже не будут отображаться при выдачи записи Ивана Ивановича. Т.е. об Иване Ивановиче будет выдаваться вся имеющаяся информация, включая то, что у него есть дочь Наташа, но вот, чтобы посмотреть справочные данные этой самой Наташи нужно будет нажать кнопку в GUI, которая и перенесет нас в "мир Наташи". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 23:04 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaНачал я анализировать ситуацию с циклическими ссылками... Например, таблица, в которой одно из полей ссылается на другую запись этой-же таблицы, а та, другая запись в свою очередь может ссылаться ещё на какую нибудь запись, опять-же из этой самой таблицы. И так можно линковать "до бесконечности"... Получается, что количество полей такого запроса в общем случае неопределено и в каком-то смысле зависит от количества записей в таблице. Понятно, что такая таблица, растущая по-горизонтали в бесконечность меня не устраивает. Этот рост можно искусственно ограничить, ограничив уровень "прилинковки" ссылок каким-то определенным значением. И это значение "напрашивается" быть равным единице. (Потому что, если это будет 2, 3 или 33, будет очень трудно объяснить логику по которой оно выбрано). Я пишу может быть излишне подробно, чтобы избежать разночтений. Итак, циклические ссылки ограничены первым уровнем. Это означает, что в таблице "Пассажиры самолета" мы имеем две записи: Иван Иванович, у которого дочь Наташа и запись самой дочери Ивана Ивановича т.е. Наташи. Если у Наташи тоже есть свои дети, то они в записи Ивана Ивановича отображаться не будут, а сама Наташа - будет. Здесь присутствует ещё один аспект. В записи Наташи будут ссылки на различные справочники, так вот, эти ссылки тоже не будут отображаться при выдачи записи Ивана Ивановича. Т.е. об Иване Ивановиче будет выдаваться вся имеющаяся информация, включая то, что у него есть дочь Наташа, но вот, чтобы посмотреть справочные данные этой самой Наташи нужно будет нажать кнопку в GUI, которая и перенесет нас в "мир Наташи".Ура! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 08:29 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Это теоретически. А практически, чтобы что-то написать, самолет должен быть приземлен. Неконкретно все это. Почему бы не написать набор своих ручных запросов, как я предлагал? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 09:59 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaНапример, таблица, в которой одно из полей ссылается на другую запись этой-же таблицы, а та, другая запись в свою очередь может ссылаться ещё на какую нибудь запись, опять-же из этой самой таблицы. И так можно линковать "до бесконечности"... Получается, что количество полей такого запроса в общем случае неопределено и в каком-то смысле зависит от количества записей в таблице. Для этого придумали иерархические запросы. Например такой (Oracle). Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 10:35 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaно вот, чтобы посмотреть справочные данные этой самой Наташи нужно будет нажать кнопку в GUI, которая и перенесет нас в "мир Наташи". Вот так и должна быть построена вся система навигации без всяких безразмерных таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 10:55 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
мод! Может, мы еще, кроме навигации, разберем и систему управления полетами? Вернемся к нашим баранам. Почему мы абстрагируемся когда пишем нечто конкретное? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 11:07 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaНачал я анализировать ситуацию с циклическими ссылками... Вот только я не понял, Наташа то тоже в том же самолете сидит или неважно это автору? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 11:11 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Может быть, Вам нужен Hibernate? Он умеет строить SQL-запросы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 11:32 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaПисать самому такую программу мне страшно. Или мне лишь кажется, что это не просто? Начинать такую программу лучше после обеда, когда обычно бывает хорошее настроение, тогда как раз к завершению рабочего дня завершите эту программу. Чем страшнее начинать - тем приятнее кончать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 11:45 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Неизветный - Пустое. Задача крайне непростая... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 12:02 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
задача состоит в разрезании n-мерного куба на x двухмерных срезов построить все возможные срезы для существующей модели базы данных возможно, но имеет ли смысл? в своем проекте я реализовывал три вида ведомостей: бухгалтерские, тмц, основных средств все они предполагают неограниченную вложенность аналитики, тоесть фактически n-мерный куб задача получается сходная, справочников может быть каких угодно и сколько угодно, неограниченное количество и все они могут быть тем или иным образом прицеплены к базовой операции (проводке, движению тмц, движению ос) так вот, фактически определенный набор статических срезов я строю всегда, а остальной неограниченный набор срезов строятся только по запросу, тоесть пользователь должен указать какие срезы он хочет увидеть в результирующей выборке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 14:38 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
2Lenivec Он тебя вообще поймет? А если поймет, то хватит ли ему в реале квалификации? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 15:25 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Valentin Kotelnitski 2Lenivec Он тебя вообще поймет? А если поймет, то хватит ли ему в реале квалификации? Вам корона не жмет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 15:58 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Lenivecзадача состоит в разрезании n-мерного куба на x двухмерных срезов построить все возможные срезы для существующей модели базы данных возможно, но имеет ли смысл? в своем проекте я реализовывал три вида ведомостей: бухгалтерские, тмц, основных средств все они предполагают неограниченную вложенность аналитики, тоесть фактически n-мерный куб задача получается сходная, справочников может быть каких угодно и сколько угодно, неограниченное количество и все они могут быть тем или иным образом прицеплены к базовой операции (проводке, движению тмц, движению ос) так вот, фактически определенный набор статических срезов я строю всегда, а остальной неограниченный набор срезов строятся только по запросу, тоесть пользователь должен указать какие срезы он хочет увидеть в результирующей выборке Ну, типа того. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 17:13 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Valentin KotelnitskiПочему мы абстрагируемся когда пишем нечто конкретное? Абстракция - лучший способ достичь конкретных результатов :) Автору как раз ее и недостает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 17:38 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Valentin Kotelnitski Почему бы не написать набор своих ручных запросов, как я предлагал? Моя цель как раз состоит в отказе от "ручных" запросов. - Писать такие запросы скучно - Каждый такой запрос нужно отлаживать и проверять отдельно - Каждый такой запрос нужно поддерживать при добавлении/удалении полей из соответствующих таблиц. Каждый такой запрос похож на предыдущий, и поэтому написание его представляет собой рутину, так почему бы не автоматизировать этот процесс? Bely Для этого придумали иерархические запросы. Например такой (Oracle). Красиво, конечно, в Оракле... Но хотелось бы избежать привязки к конкретной СУБД. Я ещё понимаю, когда речь идет о разнице в названии встроенной процедуры получения последнего сгенерированного ключа, или чего-то в этом роде. Эту разницу не сложно поддержать програмно, обеспечивая тем самым совместимость с большинством БД. _мод kordaно вот, чтобы посмотреть справочные данные этой самой Наташи нужно будет нажать кнопку в GUI, которая и перенесет нас в "мир Наташи". Вот так и должна быть построена вся система навигации без всяких безразмерных таблиц. Т.е. не прилинковывать данные справочников вообще?... Это ведь не то, что Вы хотели сказать, правда? А если прилинковывать (связывать таблицу со справочниками), то почему-бы не делать это программно? _mashuta_Может быть, Вам нужен Hibernate? Он умеет строить SQL-запросы... Может быть... Но вся сложность, в данном случае, не в построении запросов, а в их автоматической генерации. Lenivecзадача состоит в разрезании n-мерного куба на x двухмерных срезов построить все возможные срезы для существующей модели базы данных возможно, но имеет ли смысл? В данном случае нет необходимости в построении всех возможных срезов, пусть этим занимаются специализированные инструменты. Запросы нужны для банальной программы ввода и модификации данных. Все возможные связи между таблицами жестко определены и неизменяются в процессе работы программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 20:51 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
2 korda либо вы сами себе противоречите, либо сами же не можете понять что конкретно хотите получить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 21:31 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Lenivec2 korda либо вы сами себе противоречите, либо сами же не можете понять что конкретно хотите получить Я действительно пока не представляю до конца, что конкретно я хочу получить. Понимание приходит во время дискуссии. На сегодняшний день я представляю себе задачу в следующем виде: 1. Имеется описание таблиц и связей между ними. 1.1 Во всех таблицах PRIMARY KEY - суррогатные, одного типа, генерируемые одним и тем-же методом. 1.2 Во всех таблицах PRIMARY KEY имеют одинаковое имя - ID. 2. Задано, какие поля и из каких таблиц должны присутствовать в запросе: 2.1 Все поля, всех связанных с таблицей справочника. 2.2 Если имеются циклические связи, то они ограничиваются первым уровнем. 3. Программа должна получить описание таблиц и связей между ними и сгенерировать предложения для требуемых SELECT -ов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 22:47 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Произведение "искусственного интеллекта", в том виде, в каком у него это выходит на сегодняшний вечер. (Извиняюсь, за полную нечитабельность данного опуса) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. В этом примере таблица PERSON связана с двумя справочниками WORKPLACE1 и WORKPLACE2. При этом на WORKPLACE1 есть одна связь, а на WORKPLACE2 - две. Справочник WORKPLACE2, в свою очередь, связан со справочником ZAVAL. Помимо этого, таблица PERSON ссылается на саму себя. Именно это и отражает данный VIEW . P. S. Может быть есть ещё ситуации, которые я не учел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 23:08 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
Об именах полей. Первое, что бросается в глаза при просмотре сгенерированного запроса, приведенного выше - это невообразимо длинные и трудночитаемые имена полей. Этот эффект имеет место быть вследствие того, что имя алиаса генерируется на основании имени соответствующей таблицы и собственно имени поля. Сылка на ссылку, таким образом наследует имя из ссылаемой таблице, так что результирующий алиас автоматически включает её в свое назавние. Такой подход позволяет избежать проблем с уникальностью алиасов в пространстве имен всех таблиц системы. Существует ещё одна, перекликающаяся с именами полей, проблема, которая уже обсуждалась в этой теме. Это отображаемые для конечного пользователя имена полей такого объединения. Ниже приведена выдержка из сообщения, посвященного именам полей: korda Об отображаемых пользователю текстах(именах) полей. Анализирую ситуацию с текстом полей и прихожу к выводу, что текст поля, в случае развернутого запроса (таблица, с прилинкованными полями справочников) не может быть задан в описании поля при создании таблицы. Так, если таблица Заказы имеет несколько связей со справочником Адреса, то нужно каким-то образом указать, что это поле - суть адрес клиента, а то - адрес исполнителя. Получается, что для каждого поля объединения нужен свой уникальный, рукотворный текст типа "Адрес клиента" и "Адрес исполнителя" Исходя из всего вышесказанного приходят на ум две вещи: 1. Отображаемые пользователю имена полей не ммогут задаваться в контексте описания полей физической таблицы, а должны быть заданы в контексте описания полей результата. Т.е. помимо описания исходных таблиц должно быть описание полей результатов запросов. 2. Эти описания результатов запросов должны содержать ссылки на ключи в текстовом файле (на стороне клиента), который ответственен за трансляцию текстов на разные языки. Кроме таких ссылок описание может содержать имя используемое в качестве алиса поля в результирующем view . Таким образом имена полей не будут представлять собой (как это имеет место быть в приведенном выше примере) генерируемые строки, а будут частью метаданных, которые будут поставляться генератору. Естественно, в этом случае возникает проблема уникальности алиаса. Нужно будет "вручную" следить, чтобы алиасы не "перекрывали" друг друга при генерации результирующего запроса, что не есть хорошо. Может быть у кого-нибудь есть идея лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 02:06 |
|
||
|
Оперативный файл и справочники. Автоматизация запросов.
|
|||
|---|---|---|---|
|
#18+
kordaМоя цель как раз состоит в отказе от "ручных" запросов. - Писать такие запросы скучно - Каждый такой запрос нужно отлаживать и проверять отдельно - Каждый такой запрос нужно поддерживать при добавлении/удалении полей из соответствующих таблиц. Каждый такой запрос похож на предыдущий, и поэтому написание его представляет собой рутину, так почему бы не автоматизировать этот процесс? Это понятно, что лень двигает прогресс... kordaПроизведение "искусственного интеллекта", в том виде, в каком у него это выходит на сегодняшний вечер. (Извиняюсь, за полную нечитабельность данного опуса) Вот именно, это совершенно нечитаемо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 07:48 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35579243&tid=1543584]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
92ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 572ms |

| 0 / 0 |
