|
|
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
возможно, я формулирую его немного коряво, но проблема состоит в следующем: необходимо по схеме базы (скорее объектной) построить максимальные джойны ее отношений, т.е. в некотором роде максимальные взгляды (представления, views). Может быть это близко к задаче соединения без потерь или что-то в этом роде. Если кто видел статьи, все равно на каком языке, или что-то слышал об этом или думает, что это невозможно и может обьяснить почему или у него есть какие-то соображения то пожалуйста, поделитесь!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 11:54 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
Возможно, Вы действительно формулируете немного коряво, но: 1. Граф БД (ER-диаграмма) несвязен. В этом случае можно строить только по связным частям графа. Алгоритм поиска связанных частей тривиален. 2. Для связного набора таблиц можно сгенерить запрос, который свяжет все таблицы по внешним ключам. На первый взгляд это довольно просто, хотя потребуется аккуратно действовать в случае, если таблицы связаны несколькими ключами сразу. Связи сам на себя, видимо, придется игнорировать, хотя можно попытаться как-то обработать этот случай, если есть дополнительная информация о вложенности такой связи. 3. Смысла в получившемся запросе не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 12:03 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
softwarerНа первый взгляд это довольно просто не совсем просто: проблемы возникают когда 1. в зависимостях появляются циклы 2. если есть связи 1-много, много-много 3. необходимо учитывать функции я немного не понимаю будет ли такой запрос (набор запросов) отражать всю информацию, хранящуюся в базе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 12:12 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
UPD как я понимаю, это процесс обратный нормализации, т.е. denoramlization. так вот, есть ли статьи раскрывающие процесс построения максимально возможного денормализованного отношения с сохранением всех функциональных зависимостей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 12:38 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
На примере состава изделия: Детали Код Наименование1Велосипед2Колесо3Гайка4Лопата Спецификация КодЧто КодКуда Количество211321314 что хотелось бы получить то? Про то, что Спецификация - суть ориентированный граф и тем более, как он ориентирован в словаре БД естественно не написано:). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 15:19 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
например, если есть информация, что Код = КодЧто, то нужное соединить так, чтобы в результат вошла вся имеющаяся информация, т.е. 5 строк. если Код != КодЧто, то таблицы считаются несвязными. это задача о денормализации. вопрос, есть ли где описанный алгоритм этого процесса. Желательно для объектного случая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 15:45 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
Детали Код Наименование КодЧто КодКуда Количество1Велосипед2111Велосипед3142Колесо2112Колесо3213Гайка3213Гайка3144Лопата314 В общем случае если все таблицы БД связаны прямо или косвенно получится одна большая таблица = БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 17:26 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
все это ясно всякие сложные трудности - это когда таблица ссылается сама на себя или есть циклы. Но допустим, есть возможность задавать рекурсивные запросы и эти данные вытягивать на верх. Допустим времени на все это не жалко. Вопрос: кто видел алгоритм, где все это уже решено? или статью. никак не могу найти! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 17:45 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
OK, два раза FULL JOIN итого семь в Представление1 CHLD_IDCHLD_NAMEP_IDP_NAMEQTY2Колесо1Велосипед13Гайка1Велосипед43Гайка2Колесо13Гайка4Лопата1Велосипед4Лопата Рядом лежит еще Спецификация2 КодЧто КодКуда Количество347 Опять два FULL JOIN, получаем Представление2. CHLD_IDCHLD_NAMEP_IDP_NAMEQTY3Гайка4Лопата72Колесо1Велосипед3Гайка1Велосипед2Колесо4Лопата Что с предсталениями 1 и 2 - декартово произведение ? UNION ALL ? Все зависит от того, как потом декомпозировать. Что-то не хватает в условиях... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 17:53 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
модДетали Код Наименование КодЧто КодКуда Количество4Лопата314 В общем случае если все таблицы БД связаны прямо или косвенно получится одна большая таблица = БД теориявсе это ясно Что-то ни фига не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 18:02 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
ХОЧУ НАПОМНИТЬ! ВОПРОС В ЭТОМ ТРЕДЕ ТАКОЙ: задача о денормализации. есть ли где описанный алгоритм этого процесса?Желательно для объектного случая. всякие идиотизмы с таблицами прошу здесь не распространять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 18:43 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
теорияпроблемы возникают когда 1. в зависимостях появляются циклы Ну появился, и что? Тут возможны ровно два варианта: если работать без дополнительной информации, можно только прервать этот цикл (не подключать еще раз ранее подключенную таблицу). Если иметь дополнительную информацию, в частности знать, что этот цикл ссылается на другую запись в той же таблице, можно начать заново раскручивать эту другую запись. Логика при этом та же, что и при обработке связи сам к себе. теория2. если есть связи 1-много, много-много Хм. Без ограничения общности можно считать, что в базе присутствуют исключительно связи 1-много. А.. Вы полагали, имеются в виду какие-то другие? теория3. необходимо учитывать функции С каких пор функции стали частью схемы БД? Впрочем, если есть такое желание и есть информация по ним, почему бы и не учитывать? теорияя немного не понимаю будет ли такой запрос (набор запросов) отражать всю информацию, хранящуюся в базе? Такой запрос будет отражать полный бред. Когда говорят о процессе нормализации БД, рассказ иногда начинают с того, что теоретически всю базу можно уложить в одну таблицу. На первый взгляд кажется, что таким макаром можно будет как раз получить такую одну таблицу. Но.... мне представляется, что результат будет.. см. выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 21:59 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
обьяните мне, что значит - полный бред - по вашему? аномалии при изменениях? их никто и не собирался вносить. т.е. неудобность использования - этот не тот критерий, который мне интересен. а вот, если вы проясните ситуацию, когда говорят, что при денормализации нарушается целостность данных, я был бы благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 23:20 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
> когда говорят, что при денормализации нарушается целостность данных Кто говорит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 01:03 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
например в этой статье есть такая фраза: "Внутренняя гармония базы данных",Мишель Пуле По мере того как уровень нормализации снижается от третьего до второго или даже до первого, приходится учитывать возможность нарушения целостности данных, что может произойти в результате процесса денормализации. Это правда? Или в этом причина лишь когда денормализацию делают криво, а в принципе проблем не должно быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 09:07 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
теориянапример в этой статье есть такая фраза: "Внутренняя гармония базы данных",Мишель Пуле По мере того как уровень нормализации снижается от третьего до второго или даже до первого, приходится учитывать возможность нарушения целостности данных, что может произойти в результате процесса денормализации. Это правда? Или в этом причина лишь когда денормализацию делают криво, а в принципе проблем не должно быть?Всё наоборот - нормализацию проводят для того, чтобы избежать проблем с потерей целостности. Денормализованная БД характерезуется аномалиями обновления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 09:21 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
> Это правда? В общем случае - нет. P.S. Нормальных материалов на osp.ru нет и никогда не было. Напрасно тратите время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 10:34 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
а что почитать посоветуете? в книгах о DWH что-то об это пишут, но уж очень не всесторонне и только с точки зрения улучшения быстродействия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 10:43 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
Денормализованная база может быть целостно обновляемой. Просто это будет стоить очень дорого т.к. процедуры обновления будут сложными и будут затрагивать значительную часть базы. Но раз автораномалии при изменениях? их никто и не собирался вносить. то тема рисков обновления закрыта. Остается вопрос про максимальные представления. Очевидно, без дополнительных ограничений максимума не существует вообще. Если даже речь идет только о представлениях, содержащих в каком-то смысле новую, вычисленную информацию, то и в этом случае, задача логичекого вывода всех возможных следствий из ограниченного числа аксиом не имеет конечного решения. Про исследования каких-то частных случаев не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 10:58 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
автор Если даже речь идет только о представлениях, содержащих в каком-то смысле новую, вычисленную информацию, то и в этом случае, задача логичекого вывода всех возможных следствий из ограниченного числа аксиом не имеет конечного решения. задача ставится так: есть конечное множество отношений {Ri} нужно построить максимально возможные конъюнкции вида: Rk(проекция)&...&Rn(проекция)&<boolean expression> так чтобы вся информации сохранилась. как сформулировать фразу - вся информация сохранилась - более формально я не знаю количество таких представлений = количеству связных подграфом в графе зависимостей отношений. вопрос составляет неизвестноть истинности предположения о том, что такие представления можно построить и они в действительности будут отражать всю информацию базы. явно выводить все возможные следствия не требуется. алгоритм построения таких представлений в действительности не сложен, но, как отмечал в том числе softwarer , проблемы возникают с обработками петель (циклов) зависимостей и связи 1-много. поэтому насколько полно будут отражать такие представления информацию в базе - это вопрос. второй вопрос - могут ли они породить аномальные связи, которых не было в исходной базе. третий вопрос - если бы можно было создавать представления с использованием рекурсии, т.е. как так: r:-R1&...Rn&C r:-Ri&...r&...Rm&C то насколько бы это изменило ситуацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 14:30 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. А простым join'ом не выйдет все данные вытянуть - например, во одной таблице нет данных по ключу из другой таблицы и все. Даже если в базе всего две таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 14:58 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
это не совсема оно. мне нужна интенсиональная полнота, а не экстенсиональная. если я не правильно употребил эти слова, то я хотел чтобы это означало, что рассматриваем не потерю конкретных значений, а тот факт, что результирующее представление отражает все функциональные связи между отношениями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 16:47 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
теорияэто не совсема оно. мне нужна интенсиональная полнота, а не экстенсиональная. если я не правильно употребил эти слова, то я хотел чтобы это означало, что рассматриваем не потерю конкретных значений, а тот факт, что результирующее представление отражает все функциональные связи между отношениями И для чего это нужно? Достаточно одной таблицы в БД с 0 количеством строк, чтобы получить в результате 0 строк. Чего этот запрос выражать будет я никак не пойму? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 17:07 |
|
||
|
теоретический вопрос по базам данных
|
|||
|---|---|---|---|
|
#18+
теорияэто не совсема оно. мне нужна интенсиональная полнота, а не экстенсиональная. если я не правильно употребил эти слова, то я хотел чтобы это означало, что рассматриваем не потерю конкретных значений, а тот факт, что результирующее представление отражает все функциональные связи между отношениямиВы весьмо вольно оперируете с терминами. Между отношениями нет функциональных связей - только между атрибутами одного отношения. Внешний ключ - это ограничение подмножества (проекция родителя содержит проекцию ребенка), а не ФЗ. Из них вытекают понятные следствия про ФЗ в естественном соединении этих отношений. Если потеря информации не смущает - то это оно. Но про максимальность не ясно. Используя все тот же пример, кто максимальнее: представление1 из 2483105 или Представление 3ITM_IDITM_NAMEITM_CHILD_IDCHILD_QTYITM_PARENT_IDPARENT_QTY1Велосипед211Велосипед342Колесо31113Гайка143Гайка214Лопата В обоих Full join, для наглядности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 11:16 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33621866&tid=1545350]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 333ms |

| 0 / 0 |
