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; 
Другие вопросы по тегам