SQL:这两个表之间有什么样的关系(1:1,1:m,m:m,...)?

时间:2010-10-22 15:48:19

标签: sql relationship

这两个表之间有什么样的关系(1:1,1:m,m:m,等等)?

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`);

3 个答案:

答案 0 :(得分:2)

对于每个culture,您可以在my_product_i18n connected中有几个不同的id

修改
PRIMARY KEY ('id','culture')与约束相结合,表明您可以拥有多个my_product_i18n

答案 1 :(得分:2)

1到“maybe” - 不能保证my_product_i18n中会有一行,而id和culture的复合主键意味着你可以为给定的id设置多行,前提是这些行具有不同的文化

答案 2 :(得分:2)

这是一个1:M的关系。 my_product中的一行可以基于my_product_i18n列在culture中包含0行,1行或更多行。