Toxi MySQL производительность, тегирование.Помогите понять - PullRequest
1 голос
/ 15 ноября 2010

Я использую схему 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

Правильно ли я понимаю, что в таблице "Item2Tag" есть запись для каждые"item_id" до "tag_id"?Похоже, это будет огромная таблица, когда у меня будет ~ 3000 предметов, и каждый предмет может иметь ~ 5 тегов.Разве это не проблема / не очень большой стол?

Вопрос 2

Может ли кто-нибудь помочь мне понять важность наличия иностранных ключей / ссылок?Зачем мне это нужно и что они делают?

1 Ответ

1 голос
/ 15 ноября 2010

Вопрос 1: Да, это правильно.

Вопрос 2: На самом деле вам не нужно их для схемы Toxi до сих порнасколько я знаю.Но они помогают вам избежать записи в справочной таблице, а не в таблице предметов.Это скорее ограничение для предотвращения головной боли, чем необходимость.то есть.Вы удаляете номер элемента x , запись, связанная с номером элемента x , также удаляется.

...