mysql引用完整性_在MySQL中,如何在保持引用完整性的同时从一个表中加载多个表?...

更新:

“将外键检查设置为1不会触发对现有表数据的扫描。因此,当foreign_key_checks=0时添加到表中的行将不会验证一致性。”来源:5.1.4。服务器系统变量--

foreign_key_checks

——

因此,关闭外置钥匙检查似乎不是一个选项…

需要将一个记录超过100000条的单个文件中的数据加载到MySQL上的多个表中,以维护文件/表中定义的关系;这意味着关系已经匹配。解决方案应该在最新版本的mysql上工作,可以使用innodb或myisam引擎。

我对所有这些都是全新的,几乎没有自动生成ID和建立外键关系的经验。任何建议都会受到赞赏。

请参阅上面的更新说明:

我可能会补充说,在实时数据库上进行更新不是一项要求,这意味着可以禁用外键约束,然后执行插入,再次启用约束。由于我的理解是,如果数据库的引用完整性有问题,那么操作将失败。

所有的方法都应该包括一些来自验证的方法,并且在插入失败或未能保持引用完整性时,回滚/清除策略。

再次重申,这是全新的,我尽我所能提供尽可能多的信息,如果你有任何问题,或要求澄清-只要让我知道。

谢谢!

样本数据:

为了更详细地说明一个示例,假设我正在尝试加载一个包含员工姓名、他们过去占用的办公室以及由选项卡分隔的职务历史的文件。

文件:

EmployeeNameOfficeHistoryJobLevelHistory

John Smith501Engineer

John Smith601Senior Engineer

John Smith701Manager

Alex Button601Senior Assistant

Alex Button454Manager

注:

单表数据库是完全规范化的(尽可能多地是一个表),例如,在“john smith”的情况下,只有一个john smith;这意味着没有会导致引用完整性冲突的重复项。

这个

MyOffice

数据库架构具有以下表:

Employee (nId, name)

Office (nId, number)

JobTitle (nId, titleName)

Employee2Office (nEmpID, nOfficeId)

Employee2JobTitle (nEmpId, nJobTitleID)

如何使用MySQL将文件加载到上面的模式中,自动生成员工、办公室和职务的ID,并维护员工和办公室、员工和职务之间的关系?

在这种情况下。表格应如下所示:

Employee

1 John Smith

2 Alex Button

Office

1 501

2 601

3 701

4 454

JobTitle

1 Engineer

2 Senior Engineer

3 Manager

4 Senior Assistant

Employee2Office

1 1

1 2

1 3

2 2

2 4

Employee2JobTitle

1 1

1 2

1 3

2 4

2 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值