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" и пр. не будет там работать. Так что не надо спамить тегами, если даже не понимаете их значения.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы