Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Связь по составному ключу

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Bio man
Отправлено: 08 Августа, 2013 - 21:06:26
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Есть таблицы
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `widgets_areas` (
  3.  `name` varchar(128) NOT NULL,
  4.  `theme` varchar(128) NOT NULL,
  5.  `label` varchar(255) NOT NULL,
  6.  `description` text NOT NULL,
  7.  `active` tinyint(1) NOT NULL DEFAULT '1',
  8.  PRIMARY KEY (`name`,`theme`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  10.  
  11.  
  12. CREATE TABLE `widgets_used` (
  13.  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  14.  `area_name` varchar(128) NOT NULL,
  15.  `widget_name` varchar(255) NOT NULL,
  16.  `additional_title` varchar(128) NOT NULL,
  17.  `params` text NOT NULL COMMENT 'Serialized array of widget params',
  18.  `order` int(11) NOT NULL DEFAULT '0',
  19.  `active` tinyint(1) NOT NULL DEFAULT '1',
  20.  PRIMARY KEY (`id`),
  21.  KEY `widget_name` (`widget_name`),
  22.  KEY `area_name` (`area_name`),
  23.  CONSTRAINT `widgets_used_ibfk_1` FOREIGN KEY (`area_name`) REFERENCES `widgets_areas` (`name`) ON DELETE CASCADE ON UPDATE CASCADE,
  24.  CONSTRAINT `widgets_used_ibfk_2` FOREIGN KEY (`widget_name`) REFERENCES `widgets_installed` (`name`) ON DELETE CASCADE ON UPDATE CASCADE
  25. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
  26.  


дело в том, что глючит связь между таблицами, если widgets_areas.name повторяется.
то есть, если есть 2 записи, к примеру такие

CODE (htmlphp):
скопировать код в буфер обмена
  1. name    | theme
  2. -----------------
  3. w_name1 | default
  4. w_name1 | other


то в widgets_used.area_name можно выбрать только 1 запись.
Если имена в widgets_areas сделать уникальными то все становится нормально.

К чему я это...
Мне интересно, это глюк phpmyadmin? Или такие связи на самом деле работаю не корректно? Или неверная структура?
(Добавление)

Как грамматически более правильно - widget areas или widgets areas? На русском смысл типо, Области для виджетов, или Области содержащие веджеты

(Отредактировано автором: 08 Августа, 2013 - 21:08:17)

 
 Top
Bio man
Отправлено: 08 Августа, 2013 - 23:30:58
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Походу я нашел ответ на свой вопрос по этой ссылке http://www[dot]askdev[dot]ru/mysql/1182/[dot][dot][dot]%86%D0%BE%D0%B2/

Завтра попробую на деле.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB