«Маршрутизатор» - как это сделать правильно? - PullRequest
0 голосов
/ 13 августа 2011

Я хочу попросить вас о лучшем решении для маршрутизатора.

У меня есть несколько таблиц в моей базе данных (статьи, страницы, категории и т. Д.), У которых есть идентификаторы. Я хочу создать конкретный URL для каждого из них, например. /en/article/25-This-is-an-test-article.

Но как избавиться от этого / article , / page , ...? Пользователи не хотят его видеть - он просто увеличивает длину URL ...

Моей первой идеей была простая таблица маршрутизатора:

CREATE TABLE `router` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `type` varchar(50) NOT NULL,
  `entity_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

Но есть одна фатальная проблема - невозможно установить внешний ключ для столбца enitity_id, поскольку он должен ссылаться на большее количество столбцов, а это невозможно в SQL.

Мой вопрос: Как вы думаете, я должен придерживаться этого решения (и игнорировать внешний ключ) или я должен забыть об этом и добавить тип в URL?

1 Ответ

5 голосов
/ 13 августа 2011

Я хочу, чтобы /en/article/55-something стал /en/55-something - с лучшая производительность, с самым лучшим и чистым способом (проблема в том, ГДЕ и КАК сохранить информацию о том, что 55-я статья, а не страница)

Лучшее место для этой информации - в URL-адресе, так что вам не придется возиться с хрупкими поисками с наилучшими угадываниями.

Краткий ответ: вы уже делаете это правильно.

...