Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
Templar Дедушка Добрый день. В умных книгах советуют... если обнаруживается связь "многие ко многим" между таблицами вводить дополнительную табл. связки и связывать через неё по "один ко многим". Подскажите что при этом мы выигрываем...? Спасибо. Попробуйте сначала найти как минимум еще одно решение, а потом уже определять, что выигрываем/проигрывеам. а вложенные таблицы Оракловские это что не то что ли ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 07:38 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
Sergey M Templar Дедушка Добрый день. В умных книгах советуют... если обнаруживается связь "многие ко многим" между таблицами вводить дополнительную табл. связки и связывать через неё по "один ко многим". Подскажите что при этом мы выигрываем...? Спасибо. Попробуйте сначала найти как минимум еще одно решение, а потом уже определять, что выигрываем/проигрывеам. а вложенные таблицы Оракловские это что не то что ли ?Не то. Это связь один ко многим, если проект правильный. То есть одной записи в мастер-таблице соответствует много записей во вложенной таблице. Если же вложенными таблицами пытаться сделать M:N, то хотя бы задумайтесь о проблемах согласованного обновления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 08:39 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
mir Sergey Mа вложенные таблицы Оракловские это что не то что ли ?Не то. Это связь один ко многим, если проект правильный. Хм. Запомним. mir То есть одной записи в мастер-таблице соответствует много записей во вложенной таблице. Мастер - это насколько я понимаю, ведущая таблица, та, в которой есть поле типа nested table. В таком случае я бы хотел увидеть пример "неправильного" проекта, в котором процитированное здесь утверждение не выполняется. Ну или понять, к чему было сказано про правильное/неправильное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 13:16 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
softwarer mir Sergey Mа вложенные таблицы Оракловские это что не то что ли ?Не то. Это связь один ко многим, если проект правильный. Хм. Запомним. mir То есть одной записи в мастер-таблице соответствует много записей во вложенной таблице. Мастер - это насколько я понимаю, ведущая таблица, та, в которой есть поле типа nested table. В таком случае я бы хотел увидеть пример "неправильного" проекта, в котором процитированное здесь утверждение не выполняется. Ну или понять, к чему было сказано про правильное/неправильное.Ну, скажем, храним данные о проектах и разработчиках. В проекте много разработчиков, разработчик участвует в нескольких проектах. Правильно: таблица "Разработчики", таблица "Проекты", таблица связности "Разработчики в проектах". Неправильно: таблица "Разработчики" с полем типа nested table "Проекты разработчика". Или же таблица "Проекты" с полем типа nested table "Разработчики проекта". Надо ли объяснять, почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 10:09 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
Во-первых, попрошу таки ответить на заданный вопрос. Напомню его: softwarer mir То есть одной записи в мастер-таблице соответствует много записей во вложенной таблице. В таком случае я бы хотел увидеть пример "неправильного" проекта, в котором процитированное здесь утверждение не выполняется. Ну или понять, к чему было сказано про правильное/неправильное. Надо ли объяснять, почему? Было бы интересно услышать, чем неправильна таблица "Проекты" с полем "Разработчики проекта" И таблица "Разработчики" с полем "Проекты разработчика". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 12:54 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
softwarerБыло бы интересно услышать, чем неправильна таблица "Проекты" с полем "Разработчики проекта" И таблица "Разработчики" с полем "Проекты разработчика". Нарушением 1-й нормальной формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 13:47 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
TemplarНарушением 1-й нормальной формы. Затрудняюсь предположить, как именно Вас учили, поэтому попрошу уточнить, что с Вашей точки зрения нарушается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 14:05 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
softwarerВо-первых, попрошу таки ответить на заданный вопрос. Напомню его: softwarer mir То есть одной записи в мастер-таблице соответствует много записей во вложенной таблице. В таком случае я бы хотел увидеть пример "неправильного" проекта, в котором процитированное здесь утверждение не выполняется. Ну или понять, к чему было сказано про правильное/неправильное. Надо ли объяснять, почему? Было бы интересно услышать, чем неправильна таблица "Проекты" с полем "Разработчики проекта" И таблица "Разработчики" с полем "Проекты разработчика".Да хотя бы тем, что пока не заведем хоть один проект, в котором участвует разработчик X, данные о нем просто некуда записать. Это в теории называется аномалией добавления. Вот вам аномалия удаления: если удалим запись о проекте, единственном пока для разработчика X, данные о нем тоже исчезнут. А вот аномалия обновления. Если разработчик X участвует в нескольких проектах, то для каждого такого проекта он войдет в одну из записей поля-таблицы (со всеми своими атрибутами). Теперь задача: изменить адрес разработчика X. Это придется сделать во всех копиях этой записи. Если где-то не обновить, то будет рассогласование данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 16:12 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
softwarer TemplarНарушением 1-й нормальной формы. Затрудняюсь предположить, как именно Вас учили, поэтому попрошу уточнить, что с Вашей точки зрения нарушается. ну рискну, пожалуй, влезть в дискуссию :) 1я нф - атомарность атрибутов. но... можно предусмотреть извращенную ситуацию, что вопрос, а какие проекты вел разработчик имярек1 никогда не возникнет, а список разработчиков применяется только вместе... хотя за такую модель надо вешать аналитика :) ибо, как показывает практика, таки возникнет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 17:00 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
mirДа хотя бы тем, что пока не заведем хоть один проект, в котором участвует разработчик X, данные о нем просто некуда записать. Ошибаетесь. Эта аномалия относится как раз к реализации таблицы вида ПроектыРазработчиков - там разработчик может быть добавлен только вместе с проектом. В данном случае все просто - добавляем запись в таблицу "Разработчики", поле "Проекты разработчика" оставляем пустым. Добавление проекта без разработчиков - аналогично. mirЭто в теории называется аномалией добавления. Вот вам аномалия удаления: если удалим запись о проекте, единственном пока для разработчика X, данные о нем тоже исчезнут. Боюсь, не очень интересно разговаривать с человеком, который цитирует книгу, не пытаясь соотнести цитируемое предмету обсуждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 18:53 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
авторЭта аномалия относится как раз к реализации таблицы вида ПроектыРазработчиков - там разработчик может быть добавлен только вместе с проектом. o.O вдумавшись пришёл к выводу что вы имеете ввиду что уже существующего разработчика нельзя внести в таблицу ПроектыРазработчиков пока он не включён в какой-либо проект. Я правильно понял? Если да, то "ну и что?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 19:00 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
aZmну рискну, пожалуй, влезть в дискуссию :) 1я нф - атомарность атрибутов. Согласен. А что есть атомарность атрибутов? Грубо говоря, означает, что тип атрибута адекватен требуемым по смыслу задачи и имеющимся в распоряжении операциям; нам не нужно писать substr (field, 2, 4) чтобы взять часть композитного значения и тому подобных действий. В данном случае - проблем нет: Код: 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. Посему - сугубо формально может и можно считать это значение неатомарным. Практически же оно атомарно не меньше, чем тип number. Я полагаю, что у нас - не скрижали моисеевы, но прикладная теория; проблемы, возникающие из-за нарушения первой нормальной формы, в данном случае не возникают. aZmно... можно предусмотреть извращенную ситуацию, что вопрос, а какие проекты вел разработчик имярек1 никогда не возникнет, Собственно, select выше - называет номера проектов, в которых участвовал разработчик номер 3 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 19:22 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
Naugo.O вдумавшись пришёл к выводу что вы имеете ввиду что уже существующего разработчика нельзя внести в таблицу ПроектыРазработчиков пока он не включён в какой-либо проект. Я правильно понял? Если да, то "ну и что?" То, что такой таблицей будет трудно отразить некоторые реалии нашего мира. Скажем, отдел HR не сможет внести в БД принятого на работу сотрудника, пока начальник не распределит его на тот или иной проект. Реально, конечно, можно с дополнительными усилиями работать и так, но такая структура БД требует изрядной и нетривиальной обвязки из ХП для нормальной работы, причем на пустом месте - это один из классических примеров по нормализации. Я не понимаю другого - мой оппонент приводит аргумент, относящийся к работе с одной таблицей, к схеме, в которой их ЧЕТЫРЕ. Собственно, три - то, что mir назвал изначально - это простой случай, целиком соответствующий обычной практике с таблицей-развязкой. Целиком - в смысле, физически генерируется именно такая структура данных. Поэтому я попросил прокомментировать более яркий пример, с денормализацией, чтобы недостатки были ярче видны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 19:30 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
автор То, что такой таблицей будет трудно отразить некоторые реалии нашего мира. Скажем, отдел HR не сможет внести в БД принятого на работу сотрудника, пока начальник не распределит его на тот или иной проект. Какая одна таблица? mirПравильно: таблица "Разработчики", таблица "Проекты", таблица связности "Разработчики в проектах". обычная псевдо м:м развязка. И разработчиков можно сколько угодно добавлять без проектов и ссылаться на них в других отношениях (РазработчикПродукт). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 19:36 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
2 softwarer давайте не путать теплое и мягкое :)? вложенная таблица это очень частный случай, применимый только (?) в оракл. а в общем случае, получаем тильда/комма/дот/etc сепаратед валуес, в виде строчки, которые в общем случае при помощи sql не обработать :) --- Vae victis! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 10:13 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
aZm2 softwarer давайте не путать теплое и мягкое :)? Согласен. aZm вложенная таблица это очень частный случай, применимый только (?) в оракл. И? Если посмотрите выше - там был задан примерно следующий вопрос: "а не являются ли оракловые вложенные таблицы альтернативой?". Вроде как начали объяснять, что не являются. Согласитесь, "общий случай" тут совершенно не при чем, и не надо путать теплое и мягкое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 10:49 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
softwarerИ? Если посмотрите выше - там был задан примерно следующий вопрос: "а не являются ли оракловые вложенные таблицы альтернативой?". Вроде как начали объяснять, что не являются. Согласитесь, "общий случай" тут совершенно не при чем, и не надо путать теплое и мягкое :) полностью согласен, в теме было много букв, прочел не все . в таком контексте - вы полностью правы. кроме того, по вложенным неплохо отписался mir, добавить, право, нечего. mir ... Не то. Это связь один ко многим, если проект правильный. То есть одной записи в мастер-таблице соответствует много записей во вложенной таблице. Если же вложенными таблицами пытаться сделать M:N, то хотя бы задумайтесь о проблемах согласованного обновления. однако... в классической теории вроде бы про nested tables не говорится? (хотя возможно я и ошибаюсь) следовательно, формально , это нарушение 1й нф ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 10:59 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
aZmа в общем случае, получаем тильда/комма/дот/etc сепаратед валуес, в виде строчки, которые в общем случае при помощи sql не обработать Хотя, сугубо вредности ради: Код: 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. К чему я это все: не надо относиться к подобным вещам как к заповедям. Надо понимать, откуда они идут и следовать не букве, но духу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 11:00 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
aZmкроме того, по вложенным неплохо отписался mir, добавить, право, нечего. Боюсь, неплохости этой отписки я абсолютно не понял. Такое впечатление, что mir понимает под вложенными таблицами что-то совершенно другое, нежели то, чем они в действительности являются. aZmоднако... в классической теории вроде бы про nested tables не говорится? (хотя возможно я и ошибаюсь) следовательно, формально , это нарушение 1й нф Следование неверно. Прежде чем показать почему - комментарий к такому методу доказательства вообще: я абсолютно уверен, что в классической теории нормализации ничего не говорится про blob поля. Значит ли это, что таблицы с такими полями заведомо не нормализованы? А "почему" - видите ли, nested table - это на самом деле обычная детальная таблица. Если мы рассмотрим варианты: "классический" (то есть создаются таблицы А, Б и развязочная таблица А_Б) и "вложенный" (создаются таблицы А, Б и в таблице Б есть поле типа "вложенная таблица с foreign key на таблицу А") - на самом деле в БД будут созданы абсолютно эквивалентные структуры данных. Глядя на ER-ку, вообще говоря, нельзя определить, какой именно из вариантов физической реализации имеется в виду. Разница в данном случае только в синтаксисе, в том, как мы логически рассматриваем эту таблицу и как предпочитаем с ней работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 11:08 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
Позволю себе вставить свои 5 копеек. ИМХО все эти NESTED TABLES, магические числа в полях и т.п. есть ничто иное как отход от теории заради практической выгоды. Ибо реляционная БД много в чем не удовлетворяет разработчиков, но все равно используется так как наиболее провереная временем. И они (разработчики) по всякому извращаются над ней (а кто сказал что это плохо) дабы подогнать под свои нужды. Иногда им в этом помагают даже производители РБД (NESTED TABLES тому пример). автор... Прежде чем показать почему - комментарий к такому методу доказательства вообще: я абсолютно уверен, что в классической теории нормализации ничего не говорится про blob поля. Значит ли это, что таблицы с такими полями заведомо не нормализованы? а это смотря что хранить в BLOB полях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 13:12 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
_hike_Позволю себе вставить свои 5 копеек. ИМХО все эти NESTED TABLES, магические числа в полях и т.п. есть ничто иное как отход от теории заради практической выгоды. Давайте не путать божий дар с яичницей. Магические числа в полях теорией никак не покрываются (за исключением разве что некоторых случаев), а говоря об отходе в случае nested table - будьте уж добры пояснить, в чем именно, причем так, чтобы из пояснения было понятно, что Вы хотя бы приблизительно знаете, что это такое. Практически - это примерно такой же отход от теории, как и любые доработки SQL, например появившееся относительно недавно предложение WITH. а это смотря что хранить в BLOB полях Вот именно что. Причем не только "что хранить", но и "как с этим работать". Как и в случае nested tables - само по себе их применение не говорит в пользу того либо другого варианта; надо смотреть, как они применены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 15:25 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
автор....надо смотреть, как они применены абсолютно согласен но беда в том что многие (может это только я таких встречал ????) пытаются использовать NESTED TABLE абсолютно неоправдано нарушая 1 н.ф. Может все дело в названии ? Может надаром в 10ке вместо него ввели XMLType ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 15:36 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
или там от него вообще отказались ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 15:38 |
|
||
|
Чем плоха связь "многие ко многим"...?
|
|||
|---|---|---|---|
|
#18+
softwarer mirДа хотя бы тем, что пока не заведем хоть один проект, в котором участвует разработчик X, данные о нем просто некуда записать. Ошибаетесь. Эта аномалия относится как раз к реализации таблицы вида ПроектыРазработчиков - там разработчик может быть добавлен только вместе с проектом. С чего это? Добавляю все данные о разработчике в таблицу «Разработчики». Вы считаете, что это невозможно? Почему это отсутствие проектов помешает мне это сделать? Признайтесь, что тут вы просто ошиблись. Как раз классическая схема из 3 таблиц позволяет вводить данные по обеим сущностям полностью независимо, а затем, по необходимости, добавлять данные об их связях. softwarerВ данном случае все просто - добавляем запись в таблицу "Разработчики", поле "Проекты разработчика" оставляем пустым. Добавление проекта без разработчиков - аналогично. Айн момент. Рассмотрим такой вариант проекта БД: таблица «Проекты» с полем «Разработчики проекта» типа nested table. Если у меня есть на бумажке данные о разработчике X, но в таблице «Проекты» пока нет записей о проектах, в которых он участвует, то куда в БД поместить данные о разработчике X? Ответ: некуда. Никакими тут пустыми полями не поможешь. Аномалия добавления налицо, а значит и парная аномалия удаления (см. мой пред. пост). softwarer mirЭто в теории называется аномалией добавления. Вот вам аномалия удаления: если удалим запись о проекте, единственном пока для разработчика X, данные о нем тоже исчезнут. Боюсь, не очень интересно разговаривать с человеком, который цитирует книгу, не пытаясь соотнести цитируемое предмету обсуждения.Вы можете со мной не разговаривать, но способны ли вы возразить по сути вопроса? В частности, вы ничего не сказали по поводу моего пример аномалии обновления. Итак, рассмотрим тот же вариант проекта БД: таблица «Проекты» с полем «Разработчики проекта» типа nested table. Пусть разработчик X участвует в проектах Y и Z. Это значит, что данные о нем продублированы: одна копия в записи (таблица «Проекты») по проекту Y, другая копия в записи (таблица «Проекты») по проекту Z. Возникает возможность некорректного обновления: в одной копии данные изменили, в другой нет. А по поводу цитирования книги... Я не держал перед глазами книгу, если вы об этом. Подобные сведения об аномалиях денормализации у каждого, по моему, в памяти, как 2*2=4. У вас разве нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 15:43 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33301840&tid=1545628]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 418ms |

| 0 / 0 |
