“路由器” - 如何做正确的事?

发布于 2024-11-29 22:06:45 字数 561 浏览 1 评论 0原文

我想向您询问路由器的最佳解决方案。

我的数据库中有一些表(文章、页面、类别等),它们都有 ID。 我想为每个人生成特定的 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;

但是有一个致命的问题 - 不可能为 enity_id 列设置外键,因为它应该引用更多列,这在 SQL 中是不可能的。

我的问题是: 您认为我应该坚持该解决方案(并忽略外键) 或者我应该忘记它并在 URL 中附加类型?

I want to ask you for best solution for the router.

I have some tables in my database (articles, pages, categories etc.) which all has IDs.
I want to generate specific URL for each of them, eg. /en/article/25-This-is-an-test-article.

But how to get rid of that /article, /page, ... ? Users don't want to see it - it just increases the length of url ...

My first idea was simple router table:

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;

But there is one fatal problem - It's impossible to set foreign key for the enitity_id column because it should refer to more columns and that is not possible in SQL.

My question is:
Do you think that I should stick with that solution (and ignore the foreign key )
or should I forgt about it and append the type in the URL ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嘿看小鸭子会跑 2024-12-06 22:06:45

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

该信息的最佳位置就在 URL 中,这样您就不必费力地进行脆弱的、最佳猜测的查找。

简短的回答:你已经做得很好了。

I want /en/article/55-something to become /en/55-something - with
the best performance, with the best and cleanest way (the problem is
WHERE and HOW to save the info that 55-something IS an article, not
the page)

The best place for that information is right there in the URL, so that you don't have to muck about with flimsy, best-guess lookups.

Short answer: you're already doing it properly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文