首先,我们有以下情景(不完全是这样的,但由于保密原因,我不会冒险来明确描述项目)在哪里让我们说一个人可以有很多家庭住址,显然是地址最多只能属于一个人。这几乎是一对多的关系,其中有两个表格(Person和Addresses),第二个表格持有FK引用所有者。但令人遗憾的是,我被告知我的系统还应该允许用户首先输入地址,因此在Person表中还不存在FK。我得出结论,我必须放弃这个约束。你做这件事很普遍吗?此外,即使没有FK(明确声明),我认为仍然保持一致性,如果有人更新人员ID,因为我不希望用户在两个表中都这样做,是否可以创建一个触发器(我正在使用Mysql服务器)会自动更新第二张表(如果该人有地址)?如果是,提示如何写(我不熟悉触发器)一对多关系
Q
一对多关系
0
A
回答
1
您可以通过创建通常与M:N关系相关的中间表类型来维护1:N关系,但添加唯一性约束在地址引用字段上;或者,您可以将地址'提供给可空的参考,使其成为可选参考。
[编辑]
从MySQL转储脚本包的内容的东西,如:
SET @[email protected]@FOREIGN_KEY_CHECKS;
SET FOREIGN_KEY_CHECKS=0;
....
SET [email protected]_FOREIGN_KEY_CHECKS;
正如你可能已经猜到了,它暂时关闭外键检查,以便插入相互依存的数据没有秩序。但是,您应确定导入数据的可信性,因为我认为它在重新打开时不会重新检查数据(因此它可以允许违反FK约束的数据持续存在)。
如果您需要在用户输入数据之前在“人员”之前添加“地址”的能力,那么您又回到了需要可选键或其他表格的原始状态;或者只是在“人员”信息足够/完整之后才保存“地址”信息(而不是实际保存在数据录入程序中)。
相关问题
- 1. 一对多关系
- 2. 一个多对多关系
- 3. 从一对一关系转变为多对多关系
- 4. SQL一对多关系,但多对一表关系
- 5. Django多对一/一对多关系
- 6. 多对多一对一的关系SSAS
- 7. 通过一对多关系检索多对多关系
- 8. 变换多对多关系一对多关系
- 9. 多对多关系与一对多关系有什么区别?
- 10. 关系数据库一对多关系
- 11. 一对多与多对多的关系
- 12. 一对一关系还是一对多?
- 13. 一对一一对多关系
- 14. laravel一对多对多关系
- 15. 搜索多对一对多的关系
- 16. JPQL为一对多关系
- 17. Swift一对多关系
- 18. MySql - 一对多关系
- 19. Django多对一的关系
- 20. Django的一对多关系
- 21. Innerjoins的一对多关系?
- 22. AutoMapper一对多关系
- 23. Sql一对多关系
- 24. 从一对多的关系
- 25. 创建一对多关系
- 26. 一对多的关系
- 27. Sproutcore 2.0一对多关系
- 28. 映射一对多关系
- 29. EF 4.1一对多关系
- 30. 分页一对多关系
看起来很简单......你有一个约束 - 然后被给予一个要求来打破这个约束。欢迎来到一个你不久有这种限制的世界。 – Hogan