Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/105: Рейтинг темы: голосов - 105, средняя оценка - 4.58
Исследователь
 Аватар для Jallik Lich
196 / 175 / 13
Регистрация: 30.10.2011
Сообщений: 605
Записей в блоге: 7

Необходимо-ли создавать связи между таблицами в MySQL

30.11.2011, 14:31. Показов 21034. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, господа...
Я уже задавал подобный вопрос, но так и не получил на него ответ.
Вопрос такой: Связи между таблицами в MySQL создаются только програмно, или можно (необходимо) создавать связи в самой MySQL?
И второй вопрос: При создании таблицы, указывать нужно только первичный ключ (PRIMARY_KEY) или еще как-то указываются вторичные (внешние) ключи?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2011, 14:31
Ответы с готовыми решениями:

Связи между таблицами в Mysql
Всем привет! При создании схемы БД, наткнулся на такой вопрос: Например у нас есть таблица пользователей и таблица новостей. Пускай у...

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

Связи между таблицами в phpmyadmin
При создании таблицы catimg указывал FOREIGN KEY(category) REFERENCES catalog(category), но связь не отображается. Почему? И вообще как...

18
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
30.11.2011, 14:42
Цитата Сообщение от Jallik Lich
Вопрос такой: Связи между таблицами в MySQL создаются только програмно, или можно (необходимо) создавать связи в самой MySQL?
Что значит "в самой"? Связи (а сейчас принят термин constraint или ограничение) в любом случае создаются в "самой" БД

Цитата Сообщение от Jallik Lich
И второй вопрос: При создании таблицы, указывать нужно только первичный ключ (PRIMARY_KEY) или еще как-то указываются вторичные (внешние) ключи?
PK - это всего лишь уникальный Id строки в пределах таблицы, он никаких "связей" не задает.
"Связи" задает именно constraint Foreign Key

PS
К слову сказать, а причем здесь PHP?
1
127 / 127 / 25
Регистрация: 20.11.2009
Сообщений: 498
30.11.2011, 14:47
Связи проставляются в зависимых таблицах. Связывают через вторичные ключи. Нельзя удалить запись из главной таблицы если есть связные записи в зависимой. тип таблиц InnoDB
1
Исследователь
 Аватар для Jallik Lich
196 / 175 / 13
Регистрация: 30.10.2011
Сообщений: 605
Записей в блоге: 7
30.11.2011, 15:03  [ТС]
Хорошо... Спасибо...
Теперь для закрепления можно маленький примерчик...
Таблица users (id, login, pass)
Таблица users_info (user_id, bio)

Можете написать SQL запросы для создания этих таблиц и связей между ними...


Цитата Сообщение от Grossmeister Посмотреть сообщение
а причем здесь PHP?
Когда я пользуюсь базай данных, в ней у меня несколько таблиц, в которых внешние ключи одной указывают на внутренние ключи другой... Все манипуляции с данными (для примера на PHP) я провожу в скрипте, где примерно такие запросы:
PHP
1
2
$db_rez = mysql_fetch_array(mysql_query("SELECT id, name, pass FROM users WHERE id='1'"));
$db_rez2 = mysql_fetch_array(mysql_query("SELECT bio FROM users_info WHERE id='{$db_rez['id']}'"));
0
127 / 127 / 25
Регистрация: 20.11.2009
Сообщений: 498
30.11.2011, 16:39
Цитата Сообщение от Jallik Lich Посмотреть сообщение
Когда я пользуюсь базай данных, в ней у меня несколько таблиц, в которых внешние ключи одной указывают на внутренние ключи другой... Все манипуляции с данными (для примера на PHP) я провожу в скрипте, где примерно такие запросы:
Это в любом случае придется делать
0
Исследователь
 Аватар для Jallik Lich
196 / 175 / 13
Регистрация: 30.10.2011
Сообщений: 605
Записей в блоге: 7
30.11.2011, 16:41  [ТС]
Цитата Сообщение от вандал Посмотреть сообщение
Это в любом случае придется делать
У моем коде ошибка! Везде говорится, что подобные запросы необходимо объеденять!
0
127 / 127 / 25
Регистрация: 20.11.2009
Сообщений: 498
30.11.2011, 16:47
Удобнее
PHP
1
2
3
4
5
$query = mysql_query('SELECT u.id, u.name, u.pass, ui.bio 
                     FROM users u 
                     LEFT JOIN users_info ui ON(u.id = ui.user_id) 
                     WHERE u.id = '1'');
mysql_fetch_assoc($query);
Добавлено через 3 минуты
Цитата Сообщение от Jallik Lich Посмотреть сообщение
$db_rez2 = mysql_fetch_array(mysql_query("SELECT bio FROM users_info WHERE id='{$db_rez['id']}'"));
так писать нельзя
пиши сначала mysql_query
после mysql_fetch_array
вместе нельзя
1
Исследователь
 Аватар для Jallik Lich
196 / 175 / 13
Регистрация: 30.10.2011
Сообщений: 605
Записей в блоге: 7
30.11.2011, 16:51  [ТС]
Цитата Сообщение от вандал Посмотреть сообщение
так писать нельзя
В рабочих проэктах я так не пишу... Это для демонстрации...


Цитата Сообщение от вандал Посмотреть сообщение
пиши сначала mysql_query
после mysql_fetch_array
вместе нельзя
Можна... Работает корректно и без ошибок
0
127 / 127 / 25
Регистрация: 20.11.2009
Сообщений: 498
30.11.2011, 16:58
SQL
1
2
ALTER TABLE `users_info`
  ADD CONSTRAINT `users_info` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`);
запрос на связывания таблиц помоему так пишется, точно не скажу потому что обычно соединяю через phpmyadmin
user_id обязательно должен быть index
таблицы InnoDB
0
Исследователь
 Аватар для Jallik Lich
196 / 175 / 13
Регистрация: 30.10.2011
Сообщений: 605
Записей в блоге: 7
30.11.2011, 17:00  [ТС]
Цитата Сообщение от вандал Посмотреть сообщение
обычно соединяю через phpmyadmin
А можешь скрин кинуть... Или ссылочку на статью... Или вкратце описать, что нажимать
0
127 / 127 / 25
Регистрация: 20.11.2009
Сообщений: 498
30.11.2011, 17:09
user_id там где выбираешь PRIMARY там есть INDEX. также во вкладке структура(в самой таблице) напротив поля есть значок таблицы с молнией. если нажать на значок то поле станет INDEX.
далее ниже полей есть ссылка "связи". нажимаешь на нее и там выбираешь во внешних связях поле таблицы, с которым связать. На статью ссылку не знаю
2
Исследователь
 Аватар для Jallik Lich
196 / 175 / 13
Регистрация: 30.10.2011
Сообщений: 605
Записей в блоге: 7
30.11.2011, 17:15  [ТС]
Спасибо... Вроде-бы получилось...
Вообщем, суть понял... Дальше подскажет Google
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
30.11.2011, 19:24
Цитата Сообщение от Jallik Lich Посмотреть сообщение
Можна... Работает корректно и без ошибок
В этом способе нет ни проверки ошибок, ни освобождения результата.
0
Исследователь
 Аватар для Jallik Lich
196 / 175 / 13
Регистрация: 30.10.2011
Сообщений: 605
Записей в блоге: 7
30.11.2011, 19:25  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
В этом способе нет ни проверки ошибок, ни освобождения результата.
Вот поэтому
Цитата Сообщение от Jallik Lich Посмотреть сообщение
В рабочих проэктах я так не пишу... Это для демонстрации...
0
6 / 3 / 0
Регистрация: 09.01.2012
Сообщений: 296
16.04.2012, 09:56
http://php-myadmin.ru/learning/
1
2 / 2 / 1
Регистрация: 29.08.2011
Сообщений: 150
16.04.2012, 17:36
Выбрав любую таблицу ниже есть вот такая строчка Relation view вот там и можно указать связи!
0
6 / 3 / 0
Регистрация: 09.01.2012
Сообщений: 296
19.04.2012, 22:05
Один добрый человек посоветовал, решил воспользоваться им и не пожалел чего и Вам желаю:
dbForge Studio for MySQL
http://www.devart.com/ru/dbforge/mysql/studio/

Без проблем создал, связал!
0
11 / 11 / 1
Регистрация: 26.04.2012
Сообщений: 104
15.08.2012, 17:40
"MySQL называют системой управления реляционными базами данных, потому что в её таблицах содержатся не только данные, но и отношения между ним".

Из книги Робина Никсона "Создаём динамические веб-сайты с помощью PHP, MySQL и JavaScript".
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
16.08.2012, 09:47
Цитата Сообщение от ilikeMagic
"MySQL называют системой управления реляционными базами данных, потому что в её таблицах содержатся не только данные, но и отношения между ним".

Из книги Робина Никсона "Создаём динамические веб-сайты с помощью PHP, MySQL и JavaScript".
Скорее всего плохой перевод. В самих таблицах отношения не содержатся, только данные. Для реализации отношений существуют отдельные объекты, называемые constraint
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.08.2012, 09:47
Помогаю со студенческими работами здесь

Связи между таблицами не отображаются
У меня в phpmyadmin в designer есть таблицы, но связи между ними не отображаются. В чем проблема подскажите

Связи между таблицами в MyPhpAdmin
Здравствуйте. Создала таблицы: Страны, Страны-туры, Туры. Связала таблицы Страны и Страны-туры по Id,а вот связать Страны-туры и...

Как создать связи между таблицами и вывести их RedBean
Доброго времени суток, форумчане. Прошу Вас оказать помощь, объясните мне, на примере: Имеется БД с таблицами tickets и clients, в...

Передача автогенерируемого ключа между таблицами MySQL
Есть 3 таблици. В одной (data) поле id уникально и генерируется автоматически автоинкрементом при внесении новых записей. Во второй таблице...

Установка связи между таблицами MySQL с помощью PHP
Как ето зделать в PHP


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru