Chvalov
@Chvalov

Как реализовать мультиязычность с моделью Nested Sets?

Правильно ли я реализовал структуру категорий с использованием модели Nested Sets ?

CREATE TABLE category (
  id INT(10) UNSIGNED AUTO_INCREMENT,
  image VARCHAR(128) NULL,
  top BOOLEAN DEFAULT FALSE COMMENT 'Популярная',
  status BOOLEAN DEFAULT TRUE COMMENT 'Отражается',
  parent_id INT(10) UNSIGNED NULL DEFAULT NULL, -- Идентификатор родительского узла
  -- NS колонки
  left_key INT(10) UNSIGNED NOT NULL DEFAULT 0, -- Точка отсчета начала ветки
  right_key INT(10) UNSIGNED NOT NULL DEFAULT 0, -- Точка остановки конца ветки
  level INT(10) UNSIGNED NOT NULL DEFAULT 0, -- Уровень узла (Количество родителей узла)

  PRIMARY KEY (`id`),
  INDEX (`parent_id`),
  CONSTRAINT FK_category_parent_id_id FOREIGN KEY (`parent_id`) REFERENCES category(`id`)
) ENGINE=InnoDB;

Мультиязычность:
DROP TABLE IF EXISTS category__description;
CREATE TABLE category__description (
  category_id INT(10) UNSIGNED NOT NULL,
  language_id INT(10) UNSIGNED NOT NULL,
  name VARCHAR(128) NOT NULL,
  description MEDIUMTEXT,
  meta_description VARCHAR(255),
  meta_keyword VARCHAR(255),
  PRIMARY KEY (`category_id`,`language_id`),
  INDEX (`name`),
  FOREIGN KEY (`category_id`) REFERENCES category(`id`)
) ENGINE=InnoDB;

DROP TABLE IF EXISTS language;
CREATE TABLE language (
  id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  name VARCHAR(32) NOT NULL,
  iso_code VARCHAR(5) NOT NULL,
  status BOOLEAN DEFAULT TRUE,
  PRIMARY KEY (`id`),
  INDEX (`name`)
) ENGINE=InnoDB;
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега MySQL
Web developer
В принципе правильно.

Но если в тегах указано "PostgreSQL", то "unsigned", "mediumtext", "autoincrement", "innoDB" и пр. не будет там работать. Так что не надо спамить тегами, если даже не понимаете их значения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы