当前位置: 首页 > 知识库问答 >
问题:

我应该为所有表使用user的外键吗?

酆晔
2023-03-14

到目前为止我有四张桌子。它们被命名为:

用户,帮派,gang_business,gang_members,gang_weapons

我试图弄清楚是否应该使用“user”或“gang”表的主键作为“gang_business”、“gang_members”和“gang_武器”表的外键。“gang”表将用户的主键作为外键。我想知道哪条路是最好的。请给我你最好的建议和反馈。谢谢

  • 用户表:(用户id、用户名、用户电子邮件、用户密码)
  • 帮派表:(帮派id、用户id、帮派名称、帮派颜色、帮派理念)
  • 帮派企业:(企业id、用户id和/或帮派id、酒吧、餐厅、
    赌场等)

共有2个答案

金健
2023-03-14

如果只有帮派成员可以成为帮派商业和帮派成员,那么您应该使用帮派表的PK。您不应该使用用户PK,因为这是超级组,而组表是其子组。

杭曦
2023-03-14

它取决于用户和表之间的关系。

我会用这张桌子做:

用户:(id、姓名、电子邮件、密码)

帮派:(身份证、姓名、颜色、思想)

gang_members:(user_id、gang_id)

用户\武器:(用户\ id,武器\ id)

gang_business:(gang_id、business_id)

武器:(id, name,...)

业务:(身份证、姓名等)

当列是外键时,我只会给它们加上前缀。

我想武器属于用户,生意属于帮派。

 类似资料:
  • 问题内容: 我的数据库中有以下两个表(索引 不 完整,因为它将基于我使用的引擎): 表格1: 表2: 表1将用于创建缩略图库,其中包含指向较大版本图像的链接。,,和将优化显示的缩略图。 表2包含 与 表1中的图像 相关的 图像。因此,使用关联表1中的单个图像和表2中的一个或多个图像。这就是我考虑使用InnoDB外键功能的地方,但是我我也熟悉MyISAM中索引的功能。 无需过多研究其余字段,就可以对

  • 问题内容: 有没有一种很好的简便方法可以从MySQL数据库中删除所有表,而忽略其中可能存在的任何外键约束? 问题答案: 我发现生成的drop语句集很有用,并建议进行以下调整: 像这样将生成的drop限制到数据库中: SELECT concat(‘DROP TABLE IF EXISTS ;’) FROM information_schema.tables WHERE table_schema =

  • 问题内容: 在Java中,您可以将method标记为final,以使其 无法 覆盖。 在C#中,您必须将方法标记为虚方法,以使其 能够 被覆盖。 这是否意味着在C#中您应该将所有方法标记为虚拟方法(除了一些您不想被覆盖的方法之外),因为您很可能不知道可以用什么方式继承您的类? 问题答案: 在C#中,您必须将方法标记为虚方法,以使其能够被覆盖。这是否意味着在C#中您应该将所有方法标记为虚拟方法(除了

  • 我是否需要为我的复杂Web应用程序使用单独的Docker容器,或者我可以将所有必需的服务放在一个容器中?有人能解释一下为什么我应该将我的应用程序划分为许多容器(例如容器,容器,容器)当我能够在一个容器中安装和启动所有东西时?

  • 验证:我只需要文本框中的数字空间和加号

  • 问题内容: 之间有什么区别: 和 我知道JPanel是GUI组件的容器,但我确实看不到使用它的实用程序。当然,我错了,但我是从Swing开始的,所以…为什么我应该使用JPanel?真正的目的是什么? 问题答案: 为什么我应该使用JPanel? 您可以使用JPanel获得以下一项或多项好处: 将组件分组在一起。 为了更好地组织您的组件。 为了使我们能够使用 多种布局 并组合其效果。(例如,用于数字键