【发布时间】:2015-10-21 21:12:59
【问题描述】:
我有一个关于数据库设计的问题。
User 可能有多个Websites,用户可以为他的每个网站请求特定的资源。所有请求都保存在RequestForResource 表中。
现在,如果我想查看请求资源的用户的姓名,我必须加入表 RequestForResource Website 和表 User。
为避免这种情况,我可以在 RequestForResource 和 User 表之间创建外键,如下所示:
现在,为了获得用户名,我必须加入表 RequestForResource 和表 User,这对于 SQL 服务器来说可能更容易,但另一方面我还有一个外键。
哪种方法更好和(或)更快,为什么?
【问题讨论】:
-
我认为这个问题最好在 dba 中提出。顺便说一句,您如何链接资源和网站?没有这个链接就不可能满足查询。如果每个表中都有很多 id...它们都需要吗?
-
如果您将 UserID 放在 RequestForResource 中,您可能会考虑将其从网站中删除。
-
@TabAlleman 是的,但同样,如果我想要用户的所有网站,这种关系很方便:)
-
您可以从 RequestForResource 获取该信息。
标签: mysql sql sql-server oracle erd