我有两张桌子 - 'business'和'business_contacts'。
business_contact表与业务表具有多对一关系。此外,每个企业都有一个“主要联系人”字段 - 我假设这是与business_contacts表的一对多关系。
问题当然是,这会为数据插入创建一个catch-22。由于这两个字段都不能为空,因此在有相应的业务之前我无法插入business_contact,但在有相应的business_contact之前我无法插入业务。
如果有人能帮助我理解如何处理相互的一对多关系我会非常感激。
(项目在MySQL中完成,如果它有任何区别)
答案 0 :(得分:2)
您可以从商家信息表中删除“主要联系人”,然后将其移至business_contact表:
business
- business_id
- name
- address
- blah
business_contact
- business_contact_id
- business_id
- is_primary_contact (bit field)
确定企业的主要联系人因此变为:
SELECT * FROM business_contact
WHERE business_id = <somevalue> AND is_primary_contact = 1
答案 1 :(得分:0)
您只想创建引用business
表
一个好主意可能是将您的主要联系人直接放在您的商家信息表中,并使您的business_contacts表只保留“次要联系人”
伪代码:
table business ( id PRIMARY KEY, col1, col2, col3, zip, street, country );
table business_contacts ( contact_id PRIMARY KEY, business_id FOREIGN KEY REFERENCES business.id,
zip, street, country );
答案 2 :(得分:0)
你可以让“主要联系人”可以为空吗? 然后,您可以插入业务,然后插入business_contact,然后您可以设置“主要联系人”字段。
您也可以选择MySQL(但我不推荐它。):
/*!40014 SET FOREIGN_KEY_CHECKS=0 */;
... your statements ...
/*!40014 SET FOREIGN_KEY_CHECKS=1 */;