Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010
Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
|
Есть таблицы
CODE ( SQL):
скопировать код в буфер обмена
CREATE TABLE `widgets_areas` ( `name` varchar(128) NOT NULL, `theme` varchar(128) NOT NULL, `label` varchar(255) NOT NULL, `description` text NOT NULL, `active` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`name`,`theme`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 CREATE TABLE `widgets_used` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `area_name` varchar(128) NOT NULL, `widget_name` varchar(255) NOT NULL, `additional_title` varchar(128) NOT NULL, `params` text NOT NULL COMMENT 'Serialized array of widget params', `order` int(11) NOT NULL DEFAULT '0', `active` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `widget_name` (`widget_name`), KEY `area_name` (`area_name`), CONSTRAINT `widgets_used_ibfk_1` FOREIGN KEY (`area_name`) REFERENCES `widgets_areas` (`name`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `widgets_used_ibfk_2` FOREIGN KEY (`widget_name`) REFERENCES `widgets_installed` (`name`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
дело в том, что глючит связь между таблицами, если widgets_areas.name повторяется.
то есть, если есть 2 записи, к примеру такие
то в widgets_used.area_name можно выбрать только 1 запись.
Если имена в widgets_areas сделать уникальными то все становится нормально.
К чему я это...
Мне интересно, это глюк phpmyadmin? Или такие связи на самом деле работаю не корректно? Или неверная структура?
(Добавление)
Как грамматически более правильно - widget areas или widgets areas? На русском смысл типо, Области для виджетов, или Области содержащие веджеты (Отредактировано автором: 08 Августа, 2013 - 21:08:17)
|