2013-05-14 54 views
0

假设有一个包含两个表的数据库:一个客户表和一个国家/地区表。每个客户行包含(除其他外)countryId外键。我们还假设我们正在从数据文件填充数据库(即,它不是从UI中选择国家的运营商)。使用外键添加数据库记录

这是什么最佳做法?

  1. 如果一个先查询数据库,并得到所有ID的所有国家,然后只提供(现称)国家ID在插入查询?这对我的“国家”例子来说不是问题,但是如果表格中有大量记录正在被引用呢?

  2. 还是应该插入查询使用子查询来获取基于国名国号?如果是这样,如果国家的记录还不存在并且必须添加,该怎么办?

  3. 或另一种作法?还是取决于? :)

回答

0

我会建议在插入查询中使用联接,以获取国家/地区id的国家/地区名称。但是,我不知道每个SGBD是否有可能,并且您没有对所使用的更精确。

+0

使用mysql。如果该国的记录尚不存在会发生什么?谢谢。 – Jimmy 2013-05-14 16:12:40

+0

嗯,我会试图说你只需要先填写你的国家表格......但是当谈到其他数据时,它不会是正确的。在这种情况下,需要更多的编程方法:测试是否存在值,如果不插入,则使用新ID填充主表中的字段。 – 2013-05-14 16:16:29