Mysql соединяет таблицы через внешний ключ, зависит от типа поля
Mysql вопрос базы данных. Есть система с объектами (Домены). Каждый домен имеет свою таблицу. Все объекты имеют уникальный 16 varchar id - guid
CREATE TABLE `guid` (
`guid` varchar(16) NOT NULL,
`obj_type` varchar(45) NOT NULL,
`obj_id` varchar(45) NOT NULL,
`actived` tinyint(4) NOT NULL DEFAULT '1',
PRIMARY KEY (`guid`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(150) NOT NULL,
/*....*/
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `catalog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(150) NOT NULL,
/*....*/
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Я хотел бы подключить таблицы guid(поля: obj_type, obj_id) и таблицы домена (поле:id) через внешний ключ.
1 ответ
Решение
Отношения внешнего ключа включают родительскую таблицу, в которой хранятся центральные значения данных, и дочернюю таблицу с идентичными значениями, указывающими на ее родителя. Предложение FOREIGN KEY указывается в дочерней таблице. Родительская и дочерняя таблицы должны быть таблицами InnoDB. Они не должны быть временными таблицами.
CREATE TABLE product
(
id INT(11) NOT NULL auto_increment,
name VARCHAR(150) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id) REFERENCES guid (guid )
)
engine=myisam
DEFAULT charset=utf8;