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 связь один к одному. Почитать думаю можно по многочисленным ссылкам любезно предоставленных гуглом:)