'路由器' - 如何使它正确?

时间:2011-08-13 00:14:55

标签: php mysql foreign-keys routes url-routing

我想问你路由器的最佳解决方案。

我的数据库(文章,页面,类别等)中有一些表都有ID。 我想为每个人生成特定的URL,例如。 /en/article/25-This-is-an-test-article

但是如何摆脱 / article / page ,......?用户不希望看到它 - 它只会增加网址的长度......

我的第一个想法是简单的路由器表:

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 个答案:

答案 0 :(得分:5)

  

我希望/en/article/55-something成为/en/55-something -   最好的表现,最好和最干净的方式(问题是   在哪里以及如何保存55-something是一篇文章的信息,而不是   页面)

该信息的最佳位置就在URL中,这样您就不必使用脆弱的,最佳猜测的查找。

简短的回答:你已经正确地做到了。