gpt4 book ai didi

mysql - 两个不同的主键使用相同的外键

转载 作者:行者123 更新时间:2023-11-29 17:00:14 24 4
gpt4 key购买 nike

我的问题是我不知道,也无法弄清楚是否可能有两个不同的主键引用相同的外键。更具体地说,我有三个表。第一个表称为人员,具有以下属性:id fname lname password。第二个表称为具有属性的学生:id fname lname password role,最后一个表称为message,它具有4个属性:id text date user_fk,我希望两个主键引用外部键。在phpmyadmin中非常简单,我做到了。问题是,当我想输入新行时,我想数据库无法确定主键是来自职员表还是来自学生。我收到的消息是:#1452 - Cannot add or update a child row: a foreign key constraint fails ( diss .消息, CONSTRAINT student_fk FOREIGN KEY ( user_fk ) REFERENCES student ( studentid ))。所以我的问题是:我想做什么完全错误?例如,也许最好创建另一个仅存储上述键的表?还是该错误是我找不到的其他地方?谢谢!

最佳答案

如果我理解正确,则user_fk中的外键message是指studentstaff id。

在这种情况下,如果您尝试将数据插入到message表中,它将检查表studentstaff的ID。因此,错误。

您可以做的是在每个引用的表的message中添加两个外键列。

更新资料

上述方法将导致可为空的外键的可能性。相反,我们可以有两个映射表,每个表一个。例如:student_message_mapstaff_message_map。每个表将包含2个外键student_idmessage_id / staff_idmessage_id

这将使列不可为空,但查询将需要进行两次连接。此外,由于映射表的原因,查看此关系的人可能会认为这是多对多关系。

拥有可空外键的IMO并不是一种好习惯,在查询时只需要知道有关空值的可能性。

关于mysql - 两个不同的主键使用相同的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52317549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com