-
Есть некий результат его необходимо сохранить в неких SQL-таблицах.
Таблицы следущие[название таблицы(ячейки)]:
- IP-адреса(id,ip)
- URL(id,url)
- request(время, ссылка на IP-адрес, ссылка на URL, GET-параметры, число байт)
Как сделать чтобы 2-я ячейка была ссылкой на IP адрес из таблицы IP адресов?
А 3-я ячейка была ссылкой на URL из таблицы URLов?
-
что значит ссылка? если id уникальные поля (скорее всего - первичные ключи), то в третьей таблице во втором и третьем поле храните их. в чем проблема?
-
Cinic
то что ты понимаешь под ссылками, насколько я понял, называется связями. Но таблицы в принципе простые - совсем не обязательно это разбивать на несколько таблиц можно хранить в одной. Но если очень хочется юзать связи - используй InnoDB таблицы в них есть возможность указывать для полей FOREIGN KEY аналогично другим СУБД. поддерживается каскадное удаление/обновление и пр. фишки. читай мануал короче
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
но вобщето можно все это делать и руками без использования связей - некрасиво конечно, но так в основном и делают
-
Вобщем вот как реализовал(для тестового задания все это нужно было, бесит):
Код:
CREATE TABLE `ips` (
*`ip_id` int(11) unsigned NOT NULL auto_increment,
*`address` varchar(15) NOT NULL,
*PRIMARY KEY *(`ip_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=9;
CREATE TABLE `request` (
*`id` int(11) unsigned NOT NULL auto_increment,
*`time` varchar(11) NOT NULL,
*`ip` int(11) NOT NULL,
*`link` int(11) NOT NULL,
*`get` text NOT NULL,
*`size` VARCHAR(64) NOT NULL,
*PRIMARY KEY *(`id`),
*FOREIGN KEY (`ip`) REFERENCES `ips` (`ip_id`),
*FOREIGN KEY (`link`) REFERENCES `urls` (`link_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=9;
CREATE TABLE `urls` (
*`link_id` int(10) unsigned NOT NULL auto_increment,
*`link` varchar(255) NOT NULL,
*PRIMARY KEY *(`link_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=9;