powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь многие ко многим
64 сообщений из 64, показаны все 3 страниц
Связь многие ко многим
    #34606971
Фотография Buga-buga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возник такой вопрос:
Есть связь многие ко многим, реализованная при помощи промежуточной таблицы. Первичный ключ в промежуточной таблице - это сочетание внешних ключей первых двух таблиц. Что изменится если удалить это ключ? Т.е. в промежуточной таблице столбцы останутся просто они не будут являться первичным ключом.
Заранее спасибо за ответы.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34607079
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы не задали ограничения на связи между таблицами то у вас образуется плохая запись - указывающая не несуществующие записи таблиц.

Ставьте ограничения ссылочной целостности чтобы не допустить появления такой ситации, либо периодически вылавливайте и обрабатывайте такие плохие записи.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34607290
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Buga-bugaЧто изменится если удалить это ключ? Т.е. в промежуточной таблице столбцы останутся просто они не будут являться первичным ключом.Тогда будет возможность добавить в таблицу множественные связи (например выставить три раза один и тот же признак), и начнутся проблемы с удалением множественных атрибутов.

Опишите ЗАЧЕМ вы это хотите сделать - тогда можно будет сказать будет плохо или не очень.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34607710
Фотография Buga-buga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительЕсли вы не задали ограничения на связи между таблицами то у вас образуется плохая запись - указывающая не несуществующие записи таблиц.
2 поля в связующей таблице - это Foreign Key - и здесь нам "ошибиться" не дадут - т.е. плохих записей не будет.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34607732
Фотография Buga-buga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyОпишите ЗАЧЕМ вы это хотите сделать - тогда можно будет сказать будет плохо или не очень.

Я изучаю SQL, и не могу ответить на этот вопрос, а ответ хотелось бы знать.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34607742
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я изучаю SQL, и не могу ответить на этот вопрос, а ответ хотелось бы знать.
тогда лучше всего начать с чтения что есть первичный ключ и зачем он нужен
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34610163
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Buga-bugaЯ изучаю SQL, и не могу ответить на этот вопрос, а ответ хотелось бы знать.1. Что такое Многое ко Многим.
Такую связь используют, например, при указании различных характеристик объекта

Унас есть таблицы: Товар и Характеристики товаров.
Есть товар: Пылесос. У него бывают характеристики: цвет, мощность, Тип используемых пакетов
Есть товар: Упаковка скрепок. У него есть характеристики: Кол-во штук в упаковке, размер.
Есть товар: Электрочайник. У него есть характеристики: Цвет, мощность, объем.

Для хранения таких признаков и используются связи многое ко многим

Таблица "Товар"
ID NAME1 Пылесос2 Упаковка скрепок3 Электрочайник
Таблица "Характеристики"
ID PROP_NAME1 Цвет2 Мощность3 Тип пакетов для пылесоса4 Кол-во штукв упаковке5 Размер6 Объем
Теперь указываем у какого товара какие характеристики есть.
Таблица: "Характеристики_Товара"
PRODUCT_ID PROP_ID1112132425313236

2. Теперь если мы удалим ограничение уникальности с таблицы "Характеристики_Товара", то у нас появится возможность указать два раза одну характеристику.
Например: у пылесоса указать два раза цвет.
PRODUCT_ID PROP_ID11111213
3. Теперь о проблемах - нам надо удалить одно свойство ЦВЕТ у пылесоса, а второе оставить.
Мы этого сделать не сможем по нормальному
Код: plaintext
1.
DELETE FROM "Характеристики_Товара"
WHERE PRODUCT_ID =  1  and PROP_ID =  1 
Этот запрос удалит две строки, хотя нам надо было удалить одну.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34618878
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyТеперь о проблемах - нам надо удалить одно свойство ЦВЕТ у пылесоса, а второе оставить.Этой ситуации нельзя допустить, система должна позволять вводить только уникальные комбинаци. Что хорошего в том, что ту-же комбинацию можно вставить 20 раз? Нужно либо чтоб комбинация была первичным ключём таблицы-посредника, либо (если первичный ключ - нумератор, другое поле) иметь ограничение unique.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34619212
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ursego BelyТеперь о проблемах - нам надо удалить одно свойство ЦВЕТ у пылесоса, а второе оставить.Этой ситуации нельзя допустить, система должна позволять вводить только уникальные комбинаци. Что хорошего в том, что ту-же комбинацию можно вставить 20 раз?Хосподи....
Смотрите на мир ШИРЕЕ. Где-то такое нельзя допустить, а где-то только так и нужно.

Например:
У нас есть системный блок, есть комплектующие.
Эти таблицы связаны друг с другом: Многие-ко-Многим
Сколько может быть установлено процессоров в компьютере?
Правильно - один или больше.
Про жесткие диски и память - тем более.
Уникальность здесь просто вредна.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34619391
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyСколько может быть установлено процессоров в компьютере?
Правильно - один или больше.
Про жесткие диски и память - тем более.
Уникальность здесь просто вредна.
Вы меняете условия задачи. У Вас не простая связь многие-ко-многим, а атрибутированная, ПК соответственно - связь+связь+id_детали (ну или подобная).
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34619431
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Правильно - один или больше

Не приходит в голову, что, например, нельзя установить два разных процессора? Или можно установить процессор + заглушку?

> Про жесткие диски и память - тем более

Про валидированные компоненты слышали?
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34619600
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Buga-buga пишет:
> ключей первых двух таблиц. Что изменится если удалить это ключ? Т.е. в
> промежуточной таблице столбцы останутся просто они не будут являться
> первичным ключом.

Исчезнет требование уникальности значений в этих полях.
И исчезнет индекс как средство обеспечения хорошей производительности.
(но он возможно и не нужен).

Если сделать аналогичный ключу уникальный индекс, то вообще ничего
не изменится.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34619769
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer BelyСколько может быть установлено процессоров в компьютере?
Правильно - один или больше.
Про жесткие диски и память - тем более.
Уникальность здесь просто вредна.
Вы меняете условия задачи. У Вас не простая связь многие-ко-многим, а атрибутированная, ПК соответственно - связь+связь+id_детали (ну или подобная).Конечно меняю, потому что я рассказыва НЕ про задачу, а про использование связи МНОГО ко МНОГИМ.
У меня есть типовая конфигурация заказного компьютера.
В него можно поставить (на выбор) 1,2 процессора, до 3-х HDD, 0-1 видеокарту, 0-2 звуковые карты.
Это - определение конфигурации в рамках которой менеджер может вставить конкретные детали в заказ на сборку.
Конкретной детали здесь нет. Есть тип детали (диск или CPU или видеокарта или что там еще).
Вот такую конфигурацию я и собираюсь хранить в связи Много-ко-Многим.

Изначально задача вообще была поставлена так:
авторВозник такой вопрос:
Есть связь многие ко многим, реализованная при помощи промежуточной таблицы.Про предметную область - ни слова.

Да, в большинстве случаев много-ко-многим - уникальность будет нужна.
Но НЕ ВСЕГДА . В каждом случае - решается отдельно.
Я про это.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34619791
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Правильно - один или больше
Не приходит в голову, что, например, нельзя установить два разных процессора? Или можно установить процессор + заглушку?Это правила другого уровня.

guest_20040621> Про жесткие диски и память - тем более
Про валидированные компоненты слышали?Не знаю что именно вы имеете ввиду.
Скорее всего догадываюсь, но наверняка не скажу.

И какое это имеет отношение к данной теме?
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34619811
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Это правила другого уровня.

Какого "другого уровня"?

> И какое это имеет отношение к данной теме?

Если приводите примеры, попробуйте делать это без ошибок.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34619815
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> И какое это имеет отношение к данной теме?
Если приводите примеры, попробуйте делать это без ошибок.Ну так распишите в чем ошибка
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34621300
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely Ursego BelyТеперь о проблемах - нам надо удалить одно свойство ЦВЕТ у пылесоса, а второе оставить.Этой ситуации нельзя допустить, система должна позволять вводить только уникальные комбинаци. Что хорошего в том, что ту-же комбинацию можно вставить 20 раз?Хосподи....
Смотрите на мир ШИРЕЕ. Где-то такое нельзя допустить, а где-то только так и нужно.

Например:
У нас есть системный блок, есть комплектующие.
Эти таблицы связаны друг с другом: Многие-ко-Многим
Сколько может быть установлено процессоров в компьютере?
Правильно - один или больше.
Про жесткие диски и память - тем более.
Уникальность здесь просто вредна.Естественно, что одна и та же деталь может быть установлена более, чем один раз (болты - даже более наглядный пример, чем процессоры). Для этого в таблицу-посредник просто добавляется поле "количество". По Вашей версии выходит, что если в компе 20 одинаковых болтов, то добавляется 20 записей - это даже смешней, чем "if true then". Итак, попрошу другой пример когда "только так и нужно".
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34621393
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrsegoЕстественно, что одна и та же деталь может быть установлена более, чем один раз (болты - даже более наглядный пример, чем процессоры). Для этого в таблицу-посредник просто добавляется поле "количество". По Вашей версии выходит, что если в компе 20 одинаковых болтов, то добавляется 20 записей - это даже смешней, чем "if true then". Итак, попрошу другой пример когда "только так и нужно".1. Хранить кол-во элементов или хранить все варианты множественного выбора - варианты примерно равноценные.
Иногда удобнее так, иногда по другому.
Из одного представления можно получить другое и наоборот, хотя иногда с извращениями.

2. Вы к связи Многое-ко-Многим добавили поле и ушли от классического понимания этой связи.
softwarerУ Вас не простая связь многие-ко-многим, а атрибутированная,
3. Вы добавили новое поле, тогда добавлю и я поле - называться будет RANK.
Будет определять порядок элементов в списке.
Мы будем делать шаблон вывода на печать на кассовую ленту.
Есть таблица элементов, есть таблица шаблонов.
шаблон может выглядеть так:
Пропуск
Пропуск
Печать ИНН
Пропуск
Список Товаров
Прочерк
Сумма товара
Получено Денег
Пропуск
Фискальные данные

Здесь вы уже не сможете обойтись уникальностью пар и количеством.


Но все это постепенно уже удаляется от изначального вопроса...
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34624770
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyВы к связи Многое-ко-Многим добавили поле и ушли от классического понимания этой связи.Я не к связи добавил (она как была так и осталась посредством тех-же полей), а к таблице. Вполне естественно, что таблица, сущность которой - связь других таблиц many-to-many, может содержать и другие поля (причём нередко их больше, и намного, чем полей, непосредственно причастных к связи). Вот таблица, описывающая строку invoice-а (извиняюсь, не знаю как по-русски), это таблица связи между таблицей инвойсов (точнее, их заголовков, где дата, поинтер на покупателя и прочие поля) и таблицей продуктов. Так что, по-Вашему выходит, что если эта таблица содержит дополнительные поля кроме invoice_num и product_num (например, "цена единицы продукта в момент сделки" и "количество"), то это "уход от классического понимания этой связи"? Что-же это тогда, если не many-to-many?

Кстати, пример того, когда в связывающей таблице НЕОБХОДИМО разрешить дублирование комбинаций внешних ключей, так и не был преведен.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34624836
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrsegoКстати, пример того, когда в связывающей таблице НЕОБХОДИМО разрешить дублирование комбинаций внешних ключей, так и не был преведен.
Ну это тривиально. Допустим, слева - клиенты, справа - банки, развязка - банковские счета.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34625391
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrsegoТак что, по-Вашему выходит, что если эта таблица содержит дополнительные поля кроме invoice_num и product_num (например, "цена единицы продукта в момент сделки" и "количество"), то это "уход от классического понимания этой связи"? Что-же это тогда, если не many-to-many?Если добавлять атрибуты к связи, то это получится уже не связь, а новая сущность.

Иначе к связи многое ко многому можно причислить что угодно ссылающееся на две таблицы.
Например, есть таблица ORG у которой два поля являются FK на таблицы ORG_TYPE и ORG_ADDRES.
По вашему это связь много ко многим, чтоли?
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34625708
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyЕсли добавлять атрибуты к связи, то это получится уже не связь, а новая сущность.
Между этими понятиями нет принципиальной разницы. Вопрос терминологии, конечно, но исторически, еще до RDBMS, сложились понятия "запись" и "связь, в том числе атрибутированная связь". Скажем, если рассматривать мою связь с ВУЗом, в ней будут атрибуты дата поступления, дата окончания, номер диплома итп. Если связи нет - если у меня нет высшего образования - нет и этих атрибутов.

При введении RDBMS понятие связи как физического объекта убили, точнее, втянули в понятие записи. Например, вышеописанная ситуация решается включением атрибутов в мою запись плюс check constraint-ами, которые не позволят заполнить атрибуты без указания id ВУЗа. Поскольку логически такое понятие осталось - периодически и проявляются коллизии.

BelyИначе к связи многое ко многому можно причислить что угодно ссылающееся на две таблицы. Например, есть таблица ORG у которой два поля являются FK на таблицы ORG_TYPE и ORG_ADDRES. По вашему это связь много ко многим, чтоли?
Нет. Но стоит понимать, что это определяется неформально, исключительно той ролью, которую разработчик отводит таблице в своих рассуждениях, никак не фиксируя ее в схеме данных.

Чтобы показать это - пример, обратный Вашему. Возьмите любую пару таблиц, как Вы считаете, связанных многие-ко-многим, и добавьте в таблицу связи поля date_from, date_to. По-вашему, таблица теперь перестала быть связью многие-ко-многим?
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34626724
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЧтобы показать это - пример, обратный Вашему. Возьмите любую пару таблиц, как Вы считаете, связанных многие-ко-многим, и добавьте в таблицу связи поля date_from, date_to. По-вашему, таблица теперь перестала быть связью многие-ко-многим?Здесь, пожалуй, соглашусь.
Эта связь всеравно останется Много-ко-Многим.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34627263
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В реляционной БД нет связей, есть таблицы и ограничения ссылочной целостности. В процессе реижиниринга схемы БД в ER модель в зависимости от наших целей, мы можем обозвать одни таблицы связями, другие сущностями.

Например, связь двух сущностей может быть реализована целой цепочкой таблиц, но если эти промежуточные таблицы в данный момент нас не интересуют, в ER модели мы можем изобразить только связь этих сущностей, опустив детали реализации.

Фактически связи отношений (таблиц и представлений) реляционной БД возникают только в процессе выполнения SQL запроса. Как напишем условия соединения таблиц в запросе, такая связь и получиться. Она может быть отражена в ER модели, но может и отсутствовать. Более того, она может быть совершенно бессмысленной, с точки зрения бизнес логики, как например соединение поставщика и товара по № телефона и артикулу изделия. Иногда связь может иметь атрибуты, которых нет в БД, например, нужно получить исторические сведения о сотруднике и его зарплате на определённую дату в прошлом. Без этой даты связь будет 1:*, с датой, 1:1.

Очень хорошо связи (ассоциации) развиты в UML.

Что касается множественности связи, то иметь таблицу без PK не хорошо. Но и вводить суррогатный ключь, или счётчик кратности связи тоже не всегда удобно. Если использовать счётчик кратных связей, то он может стать узким местом, когда одновременно многие процессы создают связи некоторых объектов. Без счётчика может возникнуть ситуация, когда два пользователя пытаются уменьшить число связей на 1, например из 10 связей получить 9, но каждый удаляет по одной связи и в итоге получается не 9 а 8 связей. Здесь, для принятия решения нужно проанализировать предметную область.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34627350
Фотография BW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabВ реляционной БД нет связей, есть таблицы и ограничения ссылочной целостности. В процессе реижиниринга схемы БД в ER модель в зависимости от наших целей, мы можем обозвать одни таблицы связями, другие сущностями.

Например, связь двух сущностей может быть реализована целой цепочкой таблиц, но если эти промежуточные таблицы в данный момент нас не интересуют, в ER модели мы можем изобразить только связь этих сущностей, опустив детали реализации.

Фактически связи отношений (таблиц и представлений) реляционной БД возникают только в процессе выполнения SQL запроса. Как напишем условия соединения таблиц в запросе, такая связь и получиться. Она может быть отражена в ER модели, но может и отсутствовать. Более того, она может быть совершенно бессмысленной, с точки зрения бизнес логики, как например соединение поставщика и товара по № телефона и артикулу изделия. Иногда связь может иметь атрибуты, которых нет в БД, например, нужно получить исторические сведения о сотруднике и его зарплате на определённую дату в прошлом. Без этой даты связь будет 1:*, с датой, 1:1.


Во-первых, обязательно нужно делать ссыдку, что речь идет о реляционной модели.
Во-вторых, не нужно путать физическую и логическую модель данных. Физическая модель может отличаться от одной СУБД к другой на одной логической моделе БД.

С уважением,
bw.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34627366
Фотография BW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мнение г. Дейта, с которым я согласен :-)
"Что можно сказать о первичном ключе этой переменной-отношения? Одним из возможных способов его определения может быть комбинация внешних ключей, индетифицирующих участников соответсвующей связи (в случае базовой переменной-отношения SP ими являются атрибуты S# и P#). Это возможно, если данная комбинация имеет уникальное значение для каждого экземпляра данной переменной-отношения (обычно так и бывает, хотя могут быть и обратные случаи) и если разработчик базы данных не возражает против использования составных первичных ключей (на практике это в равной степени возможно и невозможно). В качестве альтернативного варианта первичного ключа можно использовать новый суррогатный атрибут "номер поставки" (подробности приводятся в [13.10], [13.16])." (К. Дж. Дейт "Введение в системы Баз Данных", седьмое изд., [13.5])

С уважением,
bw.

P.S. Knowledge is of two kinds. We know a subject ourselves, or we know where we can find information upon it. --Samuel Johnson
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34627385
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BW mcureenabВ реляционной БД нет связей, есть таблицы и ограничения ссылочной целостности. В процессе реижиниринга схемы БД в ER модель в зависимости от наших целей, мы можем обозвать одни таблицы связями, другие сущностями.

Например, связь двух сущностей может быть реализована целой цепочкой таблиц, но если эти промежуточные таблицы в данный момент нас не интересуют, в ER модели мы можем изобразить только связь этих сущностей, опустив детали реализации.

Фактически связи отношений (таблиц и представлений) реляционной БД возникают только в процессе выполнения SQL запроса. Как напишем условия соединения таблиц в запросе, такая связь и получиться. Она может быть отражена в ER модели, но может и отсутствовать. Более того, она может быть совершенно бессмысленной, с точки зрения бизнес логики, как например соединение поставщика и товара по № телефона и артикулу изделия. Иногда связь может иметь атрибуты, которых нет в БД, например, нужно получить исторические сведения о сотруднике и его зарплате на определённую дату в прошлом. Без этой даты связь будет 1:*, с датой, 1:1.


Во-первых, обязательно нужно делать ссыдку, что речь идет о реляционной модели.
Во-вторых, не нужно путать физическую и логическую модель данных. Физическая модель может отличаться от одной СУБД к другой на одной логической моделе БД.

С уважением,
bw.

1. Будем считать, что Вы её уже сделали.
2. Я имел в виду именно логическую модель данных, поскольку на физической модели верёвки между таблицами моделируют ограничения ссылочной целостности, а не логические связи, хотя выглядят почти также и во многих случаях однозначно трассируются на связи в логической модели. Когда смысл ясен из контекста их часто тоже называют связями.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34627389
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BWМнение г. Дейта, с которым я согласен :-)

А куда деваться?..
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34636509
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer UrsegoКстати, пример того, когда в связывающей таблице НЕОБХОДИМО разрешить дублирование комбинаций внешних ключей, так и не был преведен.
Ну это тривиально. Допустим, слева - клиенты, справа - банки, развязка - банковские счета.Неправильно. Этот пример - просто таблица банковских счетов. Именно в силу того, что комбинация "человек+банк" не является ключём-кандидатом (candidate key), таблица не является таблицей связи many-to-many между таблицей людей и таблицей банков, это ключевой момент! Да, в таблице имеются поинтеры (foreign keys) на эти две таблицы, ну и что? Могут иметься поинтеры на десятки каких угодно другх таблиц (например, на таблицу адресов, конкретно - адрес человека, как результат денормализации с целью уменьшить время запроса), так по-Вашему выходит, что мы можем кучу других связей many-to-many насчитать?
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34636521
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely softwarerЧтобы показать это - пример, обратный Вашему. Возьмите любую пару таблиц, как Вы считаете, связанных многие-ко-многим, и добавьте в таблицу связи поля date_from, date_to. По-вашему, таблица теперь перестала быть связью многие-ко-многим?Здесь, пожалуй, соглашусь.
Эта связь всеравно останется Много-ко-Многим....но не потому, что поля date_from и date_to не выглядят столь важными, а потому, что комбинация внешних ключей уникальна (UNIQUE или PRIMARY KEY - не важно что из них) и позволяет построить из двух связанных физических таблиц одну виртуальную двухмерную таблицу. Двухмерную - это значит, что пусть она не нормализована по всем полям, но в ней нет ни одной дублирующейся записи. Если же, как тут некоторые утверждают, построить такую таблицу по мнимой связи many-to-many (с разрешённым дублированием комбинаций), то развёртывание двух связанных физических таблиц даёт виртуальную N-мерную таблицу (N равно максимальному числу повторов комбинации внешних ключей). А в реляционной теории отношение (таблица) двумерно (имеет поля в одном измерении и записи во втором) - примем это за аксиому. Утверждение о том, что неуникальная комбинация внешних ключей реализует связь "many-to-many", опровергнуто путём прихода к противоречию.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34636526
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyЕсли добавлять атрибуты к связи, то это получится уже не связь, а новая сущность.Пардон, мсье, но связь между таблицами - это частный случай сущности (наряду, например, с предметами, которые можно пощупать, и событиями, например, приходом работника на работу). Говоря научным языком: раз какой-то фигне посвящена таблица, то эта фигня - сущность (entity). Даже связь таблиц!
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34636533
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrsegoИменно в силу того, что
Вы дошли до тавтологии. Сначала Вы сказали "примера никто не привел", а как получили пример, придумали левое определение, суть которого в том, что "такого вообще никогда не может быть".

Ursegoтак по-Вашему выходит, что мы можем кучу других связей many-to-many насчитать?
Я уже написал выше: трактовка таблицы как сущности или как связи зависит исключительно от восприятия проектировщика. Скажем, Вы делаете учетку - и для Вас банковские счета являются важнейшим реквизитом, а рядом крутят OLAP, для которого та же самая таблица - всего лишь малоинтересная развязка между двумя измерениями "Банки" и "Клиенты".
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34636536
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ursego...но не потому, что поля date_from и date_to не выглядят столь важными, а потому, что комбинация внешних ключей уникальна
Плюньте в лицо тому, кто Вам сказал такую глупость... и не придумывайте дополнительных условий, не фигурирующих в постановке задачи. Поля date_from/date_to чаще всего вводят именно тогда, когда прорезается "неуникальность комбинации внешних ключей" - скажем, нужно отразить тот факт, что сотрудник Путин сначала работал над проектом "Президент России", потом перестал работать, потом снова начал.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34636545
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в линковочной таблице не может быть дубликатов. В примере с банками в ней будет дополнительное поле, обеспечивающее уникальность - допустим,номер счета. :)
если ключ удалить, то это будет корзина(мусорка).
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34636571
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmв линковочной таблице не может быть дубликатов.
В любой таблице не может быть дубликатов.

iscrafmВ примере с банками в ней будет дополнительное поле, обеспечивающее уникальность - допустим,номер счета.
Правильно. Вот только не понял, к чему этот комментарий; такое впечатление, что Вам стоит перечитать то, на что Вы отвечаете.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34636964
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer iscrafmв линковочной таблице не может быть дубликатов.
В любой таблице не может быть дубликатов.
поразили

softwarer
iscrafmВ примере с банками в ней будет дополнительное поле, обеспечивающее уникальность - допустим,номер счета.
Правильно. Вот только не понял, к чему этот комментарий; такое впечатление, что Вам стоит перечитать то, на что Вы отвечаете.
И Вам того же. Перечитайте, особенно вопрос автора и свои изъяснения на этот счет.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34637092
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrsegoА в реляционной теории отношение (таблица) двумерно (имеет поля в одном измерении и записи во втором) - примем это за аксиому. Утверждение о том, что неуникальная комбинация внешних ключей реализует связь "many-to-many", опровергнуто путём прихода к противоречию.Круто! Придумать аксиому и свести к ней - это что-то новое в мат.логике

iscrafmв линковочной таблице не может быть дубликатов. В примере с банками в ней будет дополнительное поле, обеспечивающее уникальность - допустим,номер счета. :)
если ключ удалить, то это будет корзина(мусорка).А если ключ оставить, но сделать его суррогатным?
Мусорки не будет, а дубликаты останутся.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34637211
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm softwarer iscrafmв линковочной таблице не может быть дубликатов.
В любой таблице не может быть дубликатов.
поразили
Нет, всего лишь намекнул, что стоило бы следить за своими словами.

iscrafmИ Вам того же. Перечитайте, особенно вопрос автора и свои изъяснения на этот счет.
Не беспокойтесь, я как правило перечитываю до того, как ссылаться на ранее сказанное. Вы же, судя по всему, не перечитываете вообще (ну или считаете "номер счета" внешним ключом, но это пожалуй слишком уж идиотская версия, чтобы всерьез на нее рассчитывать).
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34637372
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer, Вы в голове у себя наведите порядок сначала. Мой ответ, во-первых , был не Вам. Во-вторых прочитайте что спрашивает автор.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34637817
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmsoftwarer, Вы в голове у себя наведите порядок сначала.
Готов и рад выслушать конкретные конструктивные предложения.

iscrafmМой ответ, во-первых , был не Вам.
Тогда во-вторых будьте добры явно указывать, кому и на что отвечаете. В ситуации, когда Вы пишете некий текст без обращений и цитат - создается впечатление, что он отвечает на пост непосредственно перед собой.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34651044
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer BelyЕсли добавлять атрибуты к связи, то это получится уже не связь, а новая сущность.
Между этими понятиями нет принципиальной разницы.
Как минимум, на уровне словаря данных: Если из множества связей вычесть множество сущностей, останется ли что-нибудь? Правильно, останутся ограничения целостности.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34652665
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, понятие связей many-to-many, можно объяснить на следующей модели.

Представим, что у нас есть таблица ЛЮДИ, с первичным ключом id.

1. Для хранения информации, кто из них кого знает, создаём таблицу ЗНАКОМСТВА, с полями id1, id2.

Это первый пример many-to-many, причём на каждую пару может быть от нуля до двух записей.

В этом случае достаточно построить уникальный индекс по (id1, id2)

2. Другая задача. Теперь нас интересует, кто с кем дружит. Создаём таблицу ДРУЗьЯ, с полями id1, id2.

Это второй пример many-to-many, причём на каждую пару может быть от нуля до одной записей.

В этом случае мы должны построить уникальный индекс по (id1, id2) и проверять при добавлении новой записи (id1, id2) есть ли уже запись (id2, id1). Вторую проверку скорее всего нужно выполнять в триггере.

3. Расширяем задачу номер 2, теперь нас интересует сохранить несколько типов двусторонних связей, например "друзья", "сослуживцы", "любовники" и т.д.

Отложим не совсем реляционные варианты типа битовых масок .

Если количество типов заранее неизвестно, то мы должны создать домен "тип связи". Это можно обеспечить разными способами, например, с помощью CHECK CONSTRAINT или создания таблицы ТИПЫ_СВЯЗЕЙ. Создаём таблицу СВЯЗИ, с полями id1, id2, type.

Это третий пример many-to-many, причём на каждую пару может быть от нуля до одной записей одного типа.

В этом случае мы должны построить уникальный индекс по (id1, id2, type) и проверять при добавлении новой записи (id1, id2, type) есть ли уже запись (id2, id1, type). Вторую проверку скорее всего нужно выполнять в триггере.

4. Усложним задачу номер 3. Теперь нас интересует даты начала и конца связи. Добавляем в таблицу СВЯЗИ поля started, ended.


Это четвёртый пример many-to-many, причём на каждую пару может быть от нуля до одной записей одного типа с заданным диапазоном дат. Диапазоны для тройки (id1, id2, type) не должны пересекаются.

В этой ситуации индекс нам не поможет вообще и все проверки мы вынуждены будем осуществлять в триггере.

Можно продолжать дальше, но, на мой взгляд, основные типы many-to-many описаны.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34652843
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drev
Представим, что у нас есть таблица ЛЮДИ, с первичным ключом id.
Можно продолжать дальше, но, на мой взгляд, основные типы many-to-many описаны.
А представим, что есть сущности от с1 до с99 и все они связаны между собой сущностью с100.
Вывод: связи n:m всегда есть самостоятельные сущности со своим уникальным id. А связи 1:n - это просто ссылки между сущностями. В примере сущность с100 ссылается на все (или не все) сущности с1-с99 по типу n:1.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34653194
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модА связи 1:n - это просто ссылки между сущностями.
Не обязательно. Связь 1:n - вполне может быть самостоятельной таблицей, хотя ее редко так оформляют, предпочитая включить атрибуты связи в одну из связываемых таблиц.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34653411
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerСвязь 1:n - вполне может быть самостоятельной таблицей, хотя ее редко так оформляют, предпочитая включить атрибуты связи в одну из связываемых таблиц.
Я имел ввиду связь между сущностями. Связи между таблицами м.б. более разнообразны.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34654622
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод drev
Представим, что у нас есть таблица ЛЮДИ, с первичным ключом id.
Можно продолжать дальше, но, на мой взгляд, основные типы many-to-many описаны.
А представим, что есть сущности от с1 до с99 и все они связаны между собой сущностью с100.
Вывод: связи n:m всегда есть самостоятельные сущности со своим уникальным id. А связи 1:n - это просто ссылки между сущностями. В примере сущность с100 ссылается на все (или не все) сущности с1-с99 по типу n:1.

1. Я не совсем понял как Ваши высказывания связанны с цитатой.

2. Вывод о обязательном наличии уникального id не следует из Вашего утверждения.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34654751
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модЯ имел ввиду связь между сущностями. Связи между таблицами м.б. более разнообразны.
Я тоже. На концептуальном уровне у нас есть понятия "сущность" и "связь", причем последняя - вовсе не обязательно "просто ссылка". На физическом уровне у нас есть два варианта реализации связи: "простой ссылкой" (поле в таблице + внешний ключ) либо дополнительной таблицей с внешними ключами.

Заранее прошу прощения, если применяю неудачную терминологию - давно не открывал "концептуальных" трудов, мог забыть адекватные слова.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34655028
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПоля date_from/date_to чаще всего вводят именно тогда, когда прорезается "неуникальность комбинации внешних ключей" - скажем, нужно отразить тот факт, что сотрудник Путин сначала работал над проектом "Президент России", потом перестал работать, потом снова начал.ОК, в таком случае не два, как было в условии задачи, а три поля являются составным первичным ключом этой таблицы (или же на них висит юник констрейнт + имеется суррогатный ключ из одного дополнительного поля-нумератора, это не меняет дела). Это прекрасная таблица, не имею ничего против неё, но вот незадача - она НЕ является таблицей связи many-to-many между таблицами "Сотрудники" и "Проекты" ! Как известно, каждая таблица имеет своим назначением хранить сущности, и сущность описанной таблицы - фрагмент времени, когда сотрудник работал над проектом, а вовсе не факт, что сотрудник имеет к проекту отношение (т.е. хоть раз работал над ним - вот тогда выло бы many-to-many в строгом понимании: один сотрудник может работать над многими проектами; над одним проектом может работать много сотрудников). Поле времени добавляет новое измерение, меняя сущность - это ключевой момент! С ним сущность более не является связью many-to-many, а обретает абсолютно другой смысл, а именно - смысл каденции (вместо старого смысла - связи между сотрудниками и проектами).
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34655396
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНа концептуальном уровне у нас есть понятия "сущность" и "связь", причем последняя - вовсе не обязательно "просто ссылка".
ПМСМ связь - это всегда "просто ссылка" одной сущности на другую, т.е n:1. Такой подход позволяет всегда однозначно отделить сущности от связей.
зы физический уровень пока не очень интересен
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34655400
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevВывод о обязательном наличии уникального id не следует из Вашего утверждения.
Следует - сущность должна иметь уникальный id, даже если сначала это не очевидно - потом пригодится.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34655415
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ursegoно вот незадача
А в чем незадача ? Что в этом плохого ?
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34656409
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrsegoОК, в таком случае не два, как было в условии задачи,
В этом месте попрошу на секунду остановиться, и вспомнить, что мы сейчас обсуждаем Вами же поставленную задачу. Цитирую:

UrsegoКстати, пример того, когда в связывающей таблице НЕОБХОДИМО разрешить дублирование комбинаций внешних ключей, так и не был преведен.

Ursegoа три поля являются составным первичным ключом этой таблицы
И отметим, одно из них не является внешним ключом, что я и показывал (P.S. Вариант спровочника дат я не рассматриваю по понятным имхо причинам).

UrsegoЭто прекрасная таблица, не имею ничего против неё, но вот незадача - она НЕ является таблицей связи many-to-many между таблицами "Сотрудники" и "Проекты" ..... (т.е. хоть раз работал над ним - вот тогда выло бы many-to-many в строгом понимании: .....
Простите, но Вы уже ранее приводили некоторое самопридуманное определение many-to-many, и если я правильно понимаю, сейчас под "строгим пониманием" скрывается оно же.

Я не вижу смысла обсуждать именно Ваше понимание является/не является, по той причине, что с моей точки зрения, как я уже пару раз указывал выше, формальных критериев нет, вопрос в личном восприятии. Выше в топике было согласие с моей точкой зрения на эту таблицу одного из участников - то есть, она не уникальна, а пытаться голосовать по этому вопросу.... имхо бессмысленно.

UrsegoКак известно, каждая таблица имеет своим назначением хранить сущности,
Ну-ну.

UrsegoПоле времени добавляет новое измерение, меняя сущность - это ключевой момент!
Что ж, допустим. Как Вы тогда оцените ситуацию, при которой вместо поля времени добавляется, например, поле "должность" - разумеется, ссылка на справочник? Введено ли новое измерение? Изменена ли сущность? Осталась ли связь many-to-many?
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34656600
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer[ UrsegoКак известно, каждая таблица имеет своим назначением хранить сущности,
Ну-ну.

а нельзя ли чуть более развернуто?
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34656673
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модПМСМ связь - это всегда "просто ссылка" одной сущности на другую, т.е n:1. Такой подход позволяет всегда однозначно отделить сущности от связей.
А зачем нам шашечки? Мне так представляется, задача - "иметь удобный инструмент описания", а вовсе не "однозначно отделить".
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34656721
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proposed amendmentа нельзя ли чуть более развернуто?
Я думал об этом и не захотел этого делать. Если я начну высказываться на эту тему, наиболее вероятно мы придем к обсуждению терминологии, которое поглотит суть. Времени на пространные обсуждения у меня сейчас нет, поэтому я предпочту сосредоточиться на основном направлении, оставив нерешенными второстепенные вопросы.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34656843
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer proposed amendmentа нельзя ли чуть более развернуто?
Я думал об этом и не захотел этого делать.

я так и подумал...

Однако, ПМСМ, в таком случае, лучше было-бы обойтись без "ну-ну", извините.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34665721
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
UrsegoПоле времени добавляет новое измерение, меняя сущность - это ключевой момент!
Что ж, допустим. Как Вы тогда оцените ситуацию, при которой вместо поля времени добавляется, например, поле "должность" - разумеется, ссылка на справочник? Введено ли новое измерение? Изменена ли сущность? Осталась ли связь many-to-many?Сущность изменена. Упрощённо говоря, сущностью является работа такого-то над таким-то проектом в такой-то должности. Небось если бы, не приведи Господь, Вас или меня понизили бы в должности с программиста до уборщика (в рамках работы над проектом), это изменение сущности было бы особенно ощутимо на собственной шкуре.

Кстати, раз ни одного примера полезности неуникальности ключей не было проведено, я сам его приведу. Связь m2m осуществляется между таблицами "Заказ" (или там "Покупка") и "Продукт". Таблица, сущность которой - эта самая связь, является в то-же время таблицей "Строка заказа". По логике вещей её первичный ключ должен был бы состоять из комбинации поинтеров на заказы и на продукты, но это не делается умышленно (вводя дополнительный суррогатный нумератор чтоб всё-же иметь уникальный идентификатор записи). Попрошу обратить внимание, что никакого третьего поля (вроде номера строки внутри заказа) нет. Зачем это надо? Чтоб облегчить жизнь продавцам. Скажем, купил человек пол-кило колбасы "Останкинская", запись в таблицу зафигачена. Затем чувак решает взять ещё пол-кило той-же колбасы в рамках той-же покупки, тем самым грубо пиная реляционную теорию. Конечно, господин Дейт посоветовал бы сделать одну запись весом в килограмм, но на практике это не всегда удобно (особенно если числа не столь лёгкие для сложения или вообще изпользуются электронные весы, создающие запись нажатием кнопки - пришлось бы отменять взвешивание и производить новое). Но, повторяю, всё это умышленное отдаление от теории с целью поблегчить реальную жизнь (примерно как в случае денормализации), т.е. исключение, подтверждающее правило, о котором надоело талдычить. Думаю, дискуссия завершена, не так ли?
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34665722
Фотография Ursego
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лишь дополню сказнное одной фразой: в связывающей таблице не НЕОБХОДИМО разрешить дублирование комбинаций внешних ключей, а всего-лишь УДОБНО - т.е. всё-таки моя права, однако! :-)
...
Рейтинг: 0 / 0
Связь многие ко многим
    #34666139
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerА зачем нам шашечки? Мне так представляется, задача - "иметь удобный инструмент описания", а вовсе не "однозначно отделить".
Бритва Оккама - зачем вводить понятие связи, если оно сводится либо к сущностям либо к ссылкам.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Связь многие ко многим
    #38799182
eugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот есть более крутая задача.
Реализовать связь многие-ко-многим для 2 массивов.
Или на худой конец один-ко-многим
Да еще не используя структуры и массивы структур. Давали школьникам.
Короче есть массив уникальных значений - названия кинотеатров
и массив значений фильмов. (Ну массив филмов может быть с повторяющимися элементами)
Надо быстро находить фильмы для кинотеатра и списки кинотеатров для данного фильма
...
Рейтинг: 0 / 0
Связь многие ко многим
    #38821715
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eugeneА вот есть более крутая задача.
Реализовать связь многие-ко-многим для 2 массивов.
Или на худой конец один-ко-многим
Да еще не используя структуры и массивы структур. Давали школьникам.
Короче есть массив уникальных значений - названия кинотеатров
и массив значений фильмов. (Ну массив филмов может быть с повторяющимися элементами)
Надо быстро находить фильмы для кинотеатра и списки кинотеатров для данного фильма

Это чо, ты типо всех тут озадачил? Быстро метнулись, а я приду через пол-часа и удивлюсь?
...
Рейтинг: 0 / 0
Связь многие ко многим
    #38821792
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eugene,

3 поля в таблице: ID (PK) - ID кинотеатра - ID фильма. Какие сложности?
...
Рейтинг: 0 / 0
Связь многие ко многим
    #38822560
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Buga-bugaВозник такой вопрос:
Есть связь многие ко многим, реализованная при помощи промежуточной таблицы. Первичный ключ в промежуточной таблице - это сочетание внешних ключей первых двух таблиц. Что изменится если удалить это ключ? Т.е. в промежуточной таблице столбцы останутся просто они не будут являться первичным ключом.
Заранее спасибо за ответы.
"Есть связь многие ко многим" - вроде бы речь о БД. И вдруг - ", реализованная при помощи промежуточной таблицы." Уже не БД)). Если речь идет о "реляционной системе", то в ней связь не может моделироваться с помощью элементов структуры соответствующей МД, в ней просто нет таких элементов. Поэтому связь моделируется с помощью существующего единственного элемента структуры - отношения, и с помощью ограничений целостности, предусмотренных в этой МД. Со всеми вытекающими последствиями, и осуждаемыми здесь проблемами)) В БД таких проблем не возникает.
...
Рейтинг: 0 / 0
Связь многие ко многим
    #38823234
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Buga-bugaВозник такой вопрос:
Есть связь многие ко многим, реализованная при помощи промежуточной таблицы. Первичный ключ в промежуточной таблице - это сочетание внешних ключей первых двух таблиц. Что изменится если удалить это ключ? Т.е. в промежуточной таблице столбцы останутся просто они не будут являться первичным ключом.
Заранее спасибо за ответы.


принципиально с точки зрения данных не измениться ничего.
...
Рейтинг: 0 / 0
64 сообщений из 64, показаны все 3 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь многие ко многим
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]