Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/37: Рейтинг темы: голосов - 37, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 10

Связь один ко многим

10.07.2010, 02:52. Показов 7830. Ответов 7
Метки нет (Все метки)

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

Если все так, то у меня вот такой вопрос: как реализуется добавление данных в эту третью таблицу при добавлении записей в основные две?

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

Можно все это сделать в одним запросом как то?

Или какой тут правильный алгоритм решения?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.07.2010, 02:52
Ответы с готовыми решениями:

Связь один ко многим
Привет! Вопрос нубский, но я завис... пытаюсь связать одну таблицу с другой.

Связь БД один к многим
Как осуществить такую связь. Есть Таблицыа User где хранится id пользователя и name. А вторая Message содержит в поле toid - набор ИД...

Связь один - к многим
Добрый день. Есть две таблицы, связанные между собой 1:М. Я делал выборки с помощью JOIN но строка из первой таблицы повторяется столько...

7
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
10.07.2010, 06:08
Для связи "один ко многим" 1:N никакой третьей таблицы не надо. Есть так называемая мастер таблица и детэйл таблица. Каждой записи в мастер таблице может соответствовать некоторое множество N в детэйл таблице. Связь обычно осуществляется через вторичный ключ.
0
0 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 10
10.07.2010, 06:36  [ТС]
SAMZ, спасибо.
0
Комбинатор
 Аватар для DenQ
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
10.07.2010, 09:18
underW, вообще связать таблицы можно посредством триггеров.
К примеру если в одной таблице обновляются какие-то данные ,то, в зависимости от значений/содержания этих данных изменяются содержание других таблиц, которые в свою очередь тоже влияют на другие таблицы. Тут можно сделать даже рекурсию.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
12.07.2010, 06:45
Можно, конечно, и так, но для большинства СУБД механизм вторичного ключа являеся более строгим средством поддержки целостности и связи между таблицами
0
Комбинатор
 Аватар для DenQ
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
12.07.2010, 10:51
Еще можно с помощью языка программирования, в котором есть АПИ для данной СУБД, можно написать много кода, который бы и отслеживал изменения в таблицах, - в общем я называю это искусственными связями. Да и механизм этот не такой уж и безобидный...Если нам нужна скорость работы приложения, и минимум нагрузки на ЦП сервера, - то от такой идеи лучше отказаться...

Цитата Сообщение от SAMZ Посмотреть сообщение
Можно, конечно, и так, но для большинства СУБД механизм вторичного ключа являеся более строгим средством поддержки целостности и связи между таблицами
Что-то я не понял, что вы хотели этим сказать...
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
12.07.2010, 11:05
Что-то я не понял, что вы хотели этим сказать
Я хотел сказать следующее. Когда для поддержки целостности и связи используется механизм триггеров и (или) эта проблема решается на уровне программного приложения то такое решение всегда реализуется в контексте конкретной транзакции. Механизм вторчный ключей работает чаще всего вне контекста транзакции и для многопользовательских клиен - серверных систем это немаловажно. Согласен с Вами в том, что у вторичного ключа есть свои недостатки. Напрмер иногда это приводит к так называемым "плохим" индексам. Но тут приходится выбирать, где использовать вторичные ключи, где что - иное
0
Комбинатор
 Аватар для DenQ
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
12.07.2010, 11:10
SAMZ, ясно
Я сейчас везде использую триггеры и транзакции... Заметил, что в большинстве СМS совершенно не такой подход/механизм... Наверное это связано с тем, что когда они создавались(cms), то мускул еще не давал таких возможностей, в силу тех версий которые были доступны на тот час.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.07.2010, 11:10
Помогаю со студенческими работами здесь

Связь многие к одному/ один к многим
Вот не могу понять эти связи, как они действуют. Например у меня есть две таблицы: Автомобиль create table car( id int(2) NOT...

Связь "один-ко-многим"
Каким скриптом установить связь "один-ко-многим"? CREATE DATABASE Uspevaimost;   USE Uspevaimost; CREATE TABLE Students( ...

Связь многие-ко-многим
Здравствуйте. Подскажите, пожалуйста, для организации связи "многие-ко-многим" обязательна дополнительная таблица, или можно без...

Связь многие ко многим
Есть 3 таблицы: Таким запросом всё как - бы отлично выводится как мне надо книга и под ней авторы, 1,2,3 сколько их писало эту книгу....

Запрос Многие-ко-Многим ( связь большого количества таблиц)
К таблице Application нужно как то прикрепить некоторое оборудование, нужно получить название или id используемого оборудования. Голову...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru