1

Тема: Внутренние связи без InnoDB

MySQL version  4.1.14-nt
параметр: have innodb - DISABLED
.
Кусок из дампа:
-- Структура таблицы `material`
--
CREATE TABLE `material` (
  `id` int(4) NOT NULL auto_increment,
  `pid` int(4) NOT NULL default '0' COMMENT 'Владелец',
  `name` varchar(128) collate cp1251_ukrainian_ci default NULL COMMENT 'Наименование',
  `id_redaktor` int(4) NOT NULL default '0' COMMENT 'Журналист',
  PRIMARY KEY  (`id`),
  KEY `pid` (`pid`),
  KEY `id_redaktor` (`id_redaktor`),
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_ukrainian_ci;
--
-- Соотношения в таблице `material`:
--   `id_redaktor`
--       `user` -> `id`
--
-- Структура таблицы `user`
--
CREATE TABLE `user` (
  `id` int(4) NOT NULL auto_increment,
  `pid` int(4) NOT NULL default '0' COMMENT 'Владелец',
  `name` varchar(24) collate cp1251_ukrainian_ci NOT NULL default '' COMMENT 'Наименование',
  PRIMARY KEY  (`id`),
  KEY `pid` (`pid`),
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_ukrainian_ci;
.
эту штуку ("Соотношения в таблице") делает phpMyAdmin, причем она работает - при попытке вставить "левое" значение выдается ошибка.
.
вопрос: КАК?
что это за финт ушами и как его повторить?

2

Re: Внутренние связи без InnoDB

Chop
Тема немного непонятна... т.е. тебя удивляет, что при MyISAM возможна реализация связей таблиц? Так она реализуется через служебную таблицу (по умолчанию pma_relation), где содержатся все данные по связям. А попытка твоя переиначить эту связь с помощью правки дампа, без предварительной правки данной таблицы и вызвала ошибку.

что это за финт ушами и как его повторить?

Это называется связи таблиц.

На вопрос "КАК?" ответ ищи здесь:
- Установка phpMyAdmin для "чайников". Пункт 7.
- Инсталляция phpMyAdmin. Инфраструктура связанных таблиц

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

3

Re: Внутренние связи без InnoDB

Lokki
Пасибки, нашел smile
БД: phpmyadmin
Таблица: PMA_relation
там все связи и сидят...
.
Вопрос:
сравнение двух вариантов реализации связей посредством "индексной таблицы" либо InnoDB
плюсы/минусы

4

Re: Внутренние связи без InnoDB

Chop

сравнение двух вариантов реализации связей посредством "индексной таблицы" либо InnoDB
плюсы/минусы

Главным преимуществом использования Foreign Keys с таблицами InnoDB по сравнению с использованием служебной таблицы `pma_relation` является "косметичность" второго метода, т.е. насколько я понимаю, используется он главным образом для построения наглядных PDF-схем баз данных. Foreign Keys, же наглядности дают меньше, но позволяют выполнять манипуляции с данными, например, каскадное удаление и обновление.

Т.о. это разные вещи, с разными задачами: Foreign Keys - манипулирование даными таблиц, `pma_relation` - наглядное отображение связей таблиц. Со всеми вытекающими плюсами и минусами. Первый может использоваться только с таблицами InnoDB, второй только используется при работе с phpMyAdmin.

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

5

Re: Внутренние связи без InnoDB

Пасибки.
Будем ставить InnoDB...