我们的数据库包含5个以上的表
user
----------
user_id (PK) int NOT NULL
name varchar(50) NOT NULL
photo
--------
photo_id (PK) int NOT NULL
user_id (FK) int NOT NULL
title varchar(50) NOT NULL
comment
-------
comment_id (PK) int NOT NULL
photo_id int NOT NULL
user_id int NOT NULL
message varchar(50) NOT NULL
所有主键ID都是唯一的ID。
所有数据都与http://domain.com/ {primary_key_id}
相关联用户访问带有id的链接后,这对所有表都是唯一的。
我应该如何实现查找此ID所属的表格?
解决方案1
select user_id from user where user_id = {primary_key_id}
// if not found, then move next
select photo_id from photo where photo_id = {primary_key_id}
... continue on, until we find which table this primary key belongs to.
解决方案2
第二种解决方案将是双重插入。 1插入行到实际表,包含完整数据,2插入用于在对象表中插入唯一ID和表名,我们在步骤1中创建。
select type from object_table where id = {primary_key_id}
解决方案3
我不知道如何在php中实现这个,但这个解决方案听起来更好!?你的建议是什么?
答案 0 :(得分:0)
我不知道评论中Facebook引用的含义,但我会进一步解释我的评论。
五个数据库表中不需要唯一的ID,每个表只需一个。您有多种选择如何创建链接(您可以自己创建链接吗?):
http://domain.com/page.html?pk={id}&table={table}
http://domain.com/{id}{table}
根据链接的语法,您可以选择要解析它的函数。例如,您可以使用以下一项或两项:
当您使简单模型工作时,您可以添加编码/解码/散列函数。但你真的需要它们吗?在什么水平? (我没有那方面的经验,所以我现在闭嘴。)
答案 1 :(得分:0)
保持表格的唯一性确实很重要吗?
1 看一下this answer的下半部分。这实际上是一种继承形式。