一张桌子有两个外键吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一张桌子有两个外键吗?相关的知识,希望对你有一定的参考价值。

我有以下表格(主键以粗体显示。外键以斜体显示)

Customer table

  • ID ---名字---平衡--- ACCOUNT_NAME --- ACCOUNT_TYPE

Account Category table

  • ACCOUNT_TYPE ----平衡

Customer Detail table

  • ACCOUNT_NAME将First_Name --- ----姓氏---地址

我可以在Customer表中有两个外键吗?如何在mysql中实现它?


更新

我正在为最终项目开发一个基于Web的会计系统。

帐户类别

账户类型--------------余额

资产 负债 公平 花费 收入

财富

  • Asset_ID -----资产名称----余额----账户类型

应收账款

  • Receivable_ID -----应收帐款名称-------地址--------电话-----资产_ID ----帐户类型

应收账款

  • Transaction_ID ----说明----金额---余额----应收款_ID ----资产_ID ---账户类型

我使用软件绘制了ER(实体关系)图,当我指定关系时,它会自动添加多个外键,如上所示。设计不够健全吗?

答案

是的,MySQL允许这样做。您可以在同一个表上拥有多个外键。

在这里获取更多细节FOREIGN KEY Constraints

另一答案
create table Table1
(
  id varchar(2),
  name varchar(2),
  PRIMARY KEY (id)
)


Create table Table1_Addr
(
  addid varchar(2),
  Address varchar(2),
  PRIMARY KEY (addid)
)

Create table Table1_sal
(
  salid varchar(2),`enter code here`
  addid varchar(2),
  id varchar(2),
  PRIMARY KEY (salid),
  index(addid),
  index(id),
  FOREIGN KEY (addid) REFERENCES Table1_Addr(addid),
  FOREIGN KEY (id) REFERENCES Table1(id)
)
另一答案

模式中的外键(在Account_NameAccount_Type上)不需要任何特殊处理或语法。只需在Customer表上声明两个单独的外键即可。它们当然不构成任何有意义的单词的复合键。

这个模式还有许多其他问题,但我要指出,从多个唯一列或其中一个在功能上依赖于另一个列的列构建主键通常不是一个好主意。看来这些案例中至少有一个适用于Customer表中的ID和Name列。这允许您创建具有相同ID(不同名称)的两行,我猜你不想允许。

以上是关于一张桌子有两个外键吗?的主要内容,如果未能解决你的问题,请参考以下文章

当主键在不同的表中时,可以引用两个外键吗?

我应该索引一个经常更新的外键吗

数据库属性可以是主键还是外键?

Oracle一个字段的的外键可以当另一个字段的主键吗

我需要在 Oracle 的外键上创建索引吗?

Django的bulk_create()可以外键吗?