toxi mysql性能,标记。帮助理解

时间:2010-11-14 23:00:01

标签: mysql foreign-keys innodb tagging folksonomy

我正在使用Toxi计划在我的网站上标记项目。对于mysql来说很新,更不用说标记了,我只是在做一个健全性检查。这是我的表初始化脚本。

CREATE TABLE IF NOT EXISTS Items (
  item_id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  item_name VARCHAR(45) NULL ,
  media_type VARCHAR(20) NULL ,
  file VARCHAR(45) NULL ,
  description VARCHAR(500) NULL ,
  PRIMARY KEY (item_id)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS Tags (
 tag_id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
 tag_text VARCHAR(25) NOT NULL ,
 PRIMARY KEY (tag_id) ,
 UNIQUE INDEX (tag_text)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS Item2Tag (
 item_id INT UNSIGNED NOT NULL ,
 tag_id INT UNSIGNED NOT NULL  ,
 PRIMARY KEY (item_id, tag_id) ,
 INDEX (tag_id) ,
 FOREIGN KEY fk_Item (item_id) REFERENCES Items (item_id) ,
 FOREIGN KEY fk_Tag (tag_id) REFERENCES Tags (tag_id)
) ENGINE=InnoDB;

http://forge.mysql.com/wiki/TagSchema

问题1

我的理解是否正确每个“item_id”到“tag_id”的“Item2Tag”表中都有一个条目?当我有~3000个项目并且每个项目可以有~5个标签时,看起来这将是一个巨大的桌子。这不是一个问题/不是一个真正的大桌子吗?

问题2

有人可以帮我理解拥有外键/参考资料的重要性吗?我为什么需要这些以及他们做了什么?

1 个答案:

答案 0 :(得分:1)

问题1:是的,这是正确的。

问题2:据我所知,你并不真正需要他们的Toxi架构。但它们可以帮助您避免在参考表中有条目而不在条目表中。这比预防头痛更具限制性。即。您删除商品编号 x ,与商品编号 x 相关联的商品也会被删除。