首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这应该是外键吗?

这应该是外键吗?
EN

Database Administration用户
提问于 2014-04-03 10:35:03
回答 2查看 84关注 0票数 0

我在做一个学校项目,我需要一些帮助。

我想创建三个表,其中应该包含以下字段:

用户UserID (AI,PK),UserEmail,UserPassword

WorkGroupMember GroupID(PK,FK WorkGroup) UserID (PK,FK用户)

WorkGroup GroupID (AI,PK),GroupFacilitator,GroupName

问题是,GroupFacilitator in WorkGroup实际上是UserID,它可以或者应该是外键吗?

谢谢

EN

回答 2

Database Administration用户

发布于 2014-04-03 11:14:56

另一种方法可能是在WorkGroupMember中有一个名为IsGroupFacilitator的字段(或对其函数进行适当描述的其他内容),默认情况下,不管您决定的是什么,都应该是no (如果它是一个数字类型,则可能是0),但是对于那些作为促进者的用户,可以将其设置为非零值(1被认为是传统的非零值)。这对我来说更有意义,因为作为一个促进者是WorkGroupMemeber的一个属性。引用完整性是非常重要的,但它并不总是一个问题的正确答案,过多的引用会使您的DB变得过于复杂。

您发现了循环依赖的可能性,但这本身并不会造成问题:您只是简单地说,WorkGroupFacilitator字段中WorkGroup中的任何内容都必须首先存在于User中,因此您的表填充顺序将是User,然后是WorkGroup,最后是WorkGroupMember,这是合乎逻辑的。然而,即使您没有从UserWorkGroup的FK,这仍然是强制命令。

票数 1
EN

Database Administration用户

发布于 2014-04-03 10:41:20

是的,应该是外键。创建它将允许服务器优化查询的执行,加入工作组和treir促进者。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/62441

复制
相关文章

相似问题

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