【发布时间】:2010-11-14 23:00:01
【问题描述】:
我正在使用 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
有人可以帮助我了解拥有外键/引用的重要性吗?为什么我需要这些,它们是做什么用的?
【问题讨论】:
-
您可能想在这里查看我的“简单”答案:stackoverflow.com/questions/3534597/… 它有 1.25 亿个 Item2Tag(poster_category),“冷”查询运行时间为 0.02 秒
标签: mysql foreign-keys innodb tagging folksonomy