MySQL « Реализация связи один ко многим в MySQL

Подскажите нормальный ресурс, желательно на русском языке, где можно почитать про реализацию связи один ко многим в MySQL.
Или приведите пожалуйста пример как это делается!

Заранее спасибо!

1 ответов


Такой вариант Вам подойдет?


CREATE TABLE `objs` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(32) NOT NULL,
  PRIMARY KEY  (`id`)
) AUTO_INCREMENT=1;
 

CREATE TABLE `tags` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(32) NOT NULL,
  PRIMARY KEY  (`id`)
) AUTO_INCREMENT=1;
 

CREATE TABLE `link_tag_obj` (
  `id_tag` int(11) NOT NULL,
  `id_obj` int(11) NOT NULL,
  UNIQUE KEY `id` (`id_tag`,`id_obj`)
);
 

upd: Для работы с этими таблицами используются запросы такого рода: скажем вам нужно узнать, с какими тэгами связан объект, скажем, №1.
Для этого нужно воспользоваться операцией объединения таблиц JOIN ( http://www.mysql.ru/docs/man/JOIN.html ) по условию.


select
  *
from
  objs O
  inner join link_tag_obj LTO on (O.id = LTO.id_obj)
  inner join tags T on (LTO.id_tag = R.id)
where
  O.id = 1
 
В случае связи один ко многим, разумеется, все упрощается.

LEFT JOIN это связь один ко многим, INNER JOIN связь один к одному. Почитать думаю можно по многочисленным ссылкам любезно предоставленных гуглом:)