SQL: какое отношение (1:1, 1:м, м:м) существует между этими двумя таблицами?

какое отношение (1:1, 1:м, м:м, что угодно) существует между этими двумя таблицами?

CREATE TABLE IF NOT EXISTS `my_product` (
  `id` int(11) NOT NULL auto_increment,
  `price` float default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `my_product_i18n` (
  `id` int(11) NOT NULL,
  `culture` varchar(7) NOT NULL,
  `name` varchar(50) default NULL,
  PRIMARY KEY  (`id`,`culture`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


ALTER TABLE `my_product_i18n`
  ADD CONSTRAINT `my_product_i18n_FK_1` FOREIGN KEY (`id`) REFERENCES `my_product` (`id`);

person ziiweb    schedule 22.10.2010    source источник


Ответы (3)


Это 1:m у вас может быть несколько разных culture в my_product_i18n connected для каждого id.

Изменить:
Это PRIMARY KEY ('id','culture') в сочетании с ограничением, указывающим, что у вас может быть много my_product_i18n.

person Albin Sunnanbo    schedule 22.10.2010

1 на «может быть» — нет никакой гарантии, что в my_product_i18n будет строка, а составной первичный ключ идентификатора и культуры означает, что у вас может быть несколько строк для данного идентификатора при условии, что эти строки относятся к разным культурам.

person David T. Macknet    schedule 22.10.2010

Это отношения 1:М. Одна строка в my_product может иметь 0, 1 или более строк в my_product_i18n на основе столбца culture.

person Joe Stefanelli    schedule 22.10.2010