首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用字段值选择要连接的数据库表。

问使用字段值选择要连接的数据库表。
EN

Stack Overflow用户
提问于 2011-02-25 14:34:01
回答 3查看 180关注 0票数 0

我正在建设的网站有一个表格,存储网站上所有上传图像的信息。这些上传的图片可以来自不同的资源,如留言簿、新闻部分或议程项目。

当然,我希望图像继承它所拥有的资源的权利。例如:如果用户A不允许查看留言簿,我不希望他能够通过转到image/ view /id/12 (这是在留言簿中使用的图像请求)查看在留言簿上发布的图像。

我现在要知道的是,系统会记住所使用的资源(在本例中是留言簿),映像id与资源id耦合在一起。但是,我不知道该图片是与哪个留言簿链接起来的(当然,我也知道它是另一回事)。

中是否有一种将一个表字段连接到另一个表中的字段的方法,在那里我连接的哪个表可以根据第一个表的字段值之一而有所不同?

在我的例子中,我希望将图像连接到资源,这可以是表gb_posts中的留言簿文章,也可以是表agenda_items中的议程项目。

或者,这是一个解决问题的愚蠢方法,我不应该对上传的图像使用一个表,而应该将图像附加到资源(例如,表中的一个列)?听起来,使用一个表至少要慢得多(但我会对一个地方的所有图像有一个很好的概述)。

希望你们能帮我一把。

编辑:额外的解释: db模型,我将尽我所能解释它是如何工作的。

首先:我使用Zend_Acl,因此我也使用Zend_Acl来处理priveleges。

我的DB结构:-用户连接到角色(直接或通过连接到一个连接到角色的组)--有一个表资源包含连接到priveleges的所有资源。例如:留言簿是一种资源,视图或编辑是最重要的。除了控制器/操作之外,此表中还可以有其他资源,例如议程中的类别或文件位置。-角色与君主相关联

例如,当请求留言簿进行查看时,我可以检查用户是否被允许查看。

简而言之,类似于:用户->角色-> priveleges <- resources

当用户添加带有图像的留言簿帖子时,使用的资源(在本例中为留言簿保存):guestbook_posts ->图像->资源

我希望这能稍微解释一下我的DB模型,如果没有解释的话,我将尝试创建表的映像。

EN

回答 3

Stack Overflow用户

发布于 2011-02-25 14:39:07

听起来你想要一个外键约束。

更新:显然,完全误解了这个问题。

这里有两种方法:

  1. 目前,架构中没有禁止从多个资源链接相同映像的任何内容。如果希望这样做,那么外键约束和反向引用索引可能是最好的解决方案,尽管它不能很好地扩展,并且需要额外的计算(因为图像上的权限需要是引用资源的权限的结合)。
  2. 另一种方法是创建某种继承模式,其中有一个列出“资源”(实际上只包含标识符)的表,该表被引用为来自实际资源表和图像表的外键;唯一不能用普通SQL表示的约束是,不同的资源可能不能共享相同的标识符。
票数 0
EN

Stack Overflow用户

发布于 2011-02-25 15:07:48

我不得不承认,我没有完全理解你想要实现的模型,但有句有趣的话……

但是,我不知道这个图片是连接在哪个留言簿上的,(当然,我也知道)。

如果你以一种方式了解一个联想,你应该能够在两个方向上使用联想?我假设您有一个包括"post_id,image_id“之类的表?

可能表首先是索引的post_id,在这种情况下,image_id查询该表的速度可能很慢,但是您可以先用image_id包含一个新的索引吗?

如果您可以给出您目前拥有的表结构的示例,以及一个您无法完成的查询示例,我们可能会进一步帮助您。

票数 0
EN

Stack Overflow用户

发布于 2011-02-25 15:37:40

创建两个SELECT子句,每个子句具有正确的连接到正确的表,然后使用UNION语句将两个SELECT子句的输出组合在一起。

代码语言:javascript
复制
SELECT field1, field2 
FROM table1 
JOIN table2 on table1.PK = table2.FK
WHERE table1.selector = 1

UNION SELECT field1, field2 
FROM table1 
JOIN table3 on table1.PK = table3.FK
WHERE table1.selector = 2    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5118435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档